객체지향

도서/오브젝트

3. 역할, 책임, 협력

개요 객체지향의 본질은 협력하는 객체들의 공동체를 참조하는 것이다. 객체지향의 설계의 핵심은 협력을 구성하기 위해 적절한 객체를 찾고 적절한 책임을 할당하는 과정에서 드러난다. 애플리케이션의 기능을 구현하기 위해서 어떤 협력이 필요하고 협력을 위해 어떤 역할과 책임이 필요한지를 고민하지 않은 채 너무 이른 시기에 구현체 초점을 맞추는 것은 변경하기 어렵고 유연하지 못한 코드를 낳는 원인이 된다. 객체지향 패러다임의 관점인 역할(role), 책임(responsibility), 협력(collaboration)에 대해서 알아보자. 협력 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용 협력은 객체지향 세계에서 기능을 구현할 수 있는 유일한 방법이다. 객체 자체는 자율적으로 동작하기 때문이다. 자율..

도서/오브젝트

2. 객체지향 프로그래밍

개요 온라인 영화 예매 시스템을 통해 올바르게 된 객체지향 설계가 무엇인지, 이 책을 읽으면서 이해하게 될 다양한 주제들을 먼저 간단하게 살펴보자. 요구사항 요구사항 1 사용자는 영화 예매 시스템을 이용해 보고 싶은 영화를 예매 할 수 있다. 이 예제에서는 '영화' 와 '상영'을 구분해야한다. 1. 영화 - 제목, 상영시간, 가격 정보와 같이 영화가 가지고 있는 기본 정보 2. 상영 - 실제로 관객들이 영화를 관람하는 사건, 상영 일자, 시간, 순번 등을 가지고 있다. 이렇게 나눈 이유는 클라이언트가 실제로 예매하는 건 영화 그 자체가 아닌 상영을 예매하는 것이기 때문이다. 이 부분이 이해가 안될 수 있는데 객체의 의인화를 통해 책임을 확실히 구분 한 것이다. 요구사항 2 영화 예매시 특정한 조건을 만족..

도서/오브젝트

1. 객체, 설계

해당 글은 객체지향의 사실과 오해에 이어서 코드로 살펴보는 오브젝트 책이다. 기본적인 내용에 대한 기반은 객체지향의 사실과 오해를 기반으로 설명을 하고 있기 때문에 혹시 어느 방향인지 잘 이해가 안된다면 객체지향의 사실과 오해라는 책을 먼저 읽는 것을 권장한다! 아니 본인이 객체지향언어를 사용하는 개발자라면 꼭 읽어봐야 한다고 생각한다. 개요 잘못된 방식의 애플리케이션 설계는 무엇인지, 객체지향적인 방식의 설계는 무엇인지, 객체지향적으로 설계를 하면서 사고해야하는 것은 무엇인지에 대해 알아보자. 티켓 판매 애플리케이션 구현 요구사항 관객은 티켓 판매점에서 초대장 보유 여부에 따라 구매 하거나 교환 할 수 있다. 관객은 가방을 가지고 있으며, 가방에는 현금, 초대권, 티켓이 들어있을 수 있다. 티켓 판매점..

도서/객체 지향의 사실과 오해

[객체지향의 사실과 오해] 4. 역할, 책임, 협력

우리 모두를 합친 것보다 더 현명한 사람은 없다. - 켄 블랜치드(Ken Blanchard) - 제목부터 이전부터 저자가 강조한 역할, 책임, 협력에 관해서 나온다.  사람들도 어떠한 상황에 처해있느냐에 따라 다르게 행동할 수 있다는 부분에서 객체 또한 어떤 협력에 참여하는지에 따라 필요한 행동이 결정되고, 그 행동이 객체의 상태를 결정한다고 한다. 객체들 간의 협력에 집중하라. 이번 장의 주제이다. 협력은 한 사람이 다른 사람에게 도움을 요청할 때 시작한다. 이렇듯 객체간의 협력은 한 객체가 다른 객체에게 메시지를 통해 요청을 할 때 시작되는 것이다. 협력 안에서 각 객체들은 어떤 요청에 대해 응답하거나 적절한 행동을 한다. 이를 우리는 객체의 책임이라고 부르고, 객체지향 개발에서 중요한 것은 객체 ..

도서/객체 지향의 사실과 오해

[객체지향의 사실과 오해] 3. 타입과 추상화

일단 컴퓨터를 조작하는 것이 추상화를 구축하고, 조작하고, 추론하는 것에 관한 모든 것이라는 것을 깨닫고 나면 훌륭한 컴퓨터 프로그램을 작성하기 위한 중요한 전제 조건은 추상화를 정확하게 다루는 능력이라는 것이 명확해진다. - 키스 데블린(Keith Devlin) - 이전에 현실에 존재하는 객체들의 특징을 간추리고 요약해서 소프트웨어 객체로 추상화 할 수 있는 능력이 중요하다는 생각이 잘 못 자리잡게 된 것이라는 저자의 말을 볼 수 있었다. 결국 이 인용을 통해 분명한 저자의 의도를 알 수 있다. 현실에 존재하는 객체들의 특징을 추상화 하는 것이 아닌, 컴퓨터 소프트웨어 세계에서 하나의 객체를 창조해서 그 객체를 의인화하여 추상화하는 능력 이를 강조하는 것이라고 생각한다. 예시로 지하철 노선도가 나오는데..

Bombo_
'객체지향' 태그의 글 목록