출처 : 객체지향의 사실과 오해 조영호 저 | 위키북스
객체지향에서 가장 중요한 개념 3가지
- 역할
- 책임
- 협력
요청과 응답으로 구성된 협력
다형성의 실세계 비유
사실 실세계와 객체 지향 사이는 먼 거리가 있다. 그래도 실세계의 비유로 객체지향을 이해하기에는 좋다.
다음의 커피 주문을 비유로 객체지향을 이해해보자
- 커피 주문이라는 협력은 손님이 커피를 주문하면서 시작된다 -> 커피 주문 요청
- 주문을 받은 캐시어는 주문 내역이 기록된 컵을 전달 -> 커피 제조 요청
- 바리스타는 커피를 제조한 후 완료됐음을 캐시어에게 알린다 -> 커피 완성 응답
- 캐시어는 손님에게 커피가 준비됐음을 알린다. -> 커피 완성 응답
역할과 책임 : 협력이 원활하게 진행되는 데 필요한 핵심적인 구성 요소
- 협력하는 과정 속에서 특정한 역할을 부여받는다.
- 손님
- 캐시어
- 바리스타
- 역할이라는 단어는 의미적으로 책임이라는 개념을 내포하며 각 역할은 어떤 협력 안에서 차지하는 책임이나 임무를 가진다.
- 손님 : 커피를 주문할 책임
- 캐시어 : 주문 내용을 바리스타에게 전달할 책임과 커피가 준비됐다는 사실을 손님에게 알릴 책임
- 바리스타 : 커피를 제조할 책임
- 여러 사람이 동일한 역할 수행 가능(역할의 대체 가능성) : 손님 입장에서 커피가 나오기만 하면 누가 주문을 받던 누가 커피를 만들던 상관이 없다.
- 책임을 수행하는 방법은 자율적 : 커피 제조를 요청 받은 바리스타는 어떤 방식으로 만들던 커피를 만들어야하는 책임을 자율적으로 수행하면 된다.
- 다형성 : 동일한 요청에 대해 서로 다른 방식으로 응답할 수 있는 능력
- 한 사람이 동시에 여러 역할 수행 가능 : 캐시어와 바리스타 역할 동시 수행 가능
역할, 책임, 협력
협력의 핵심은 특정한 책임을 수행하는 역할들 간의 연쇄적인 요청과 응답을 통해 목표를 달성한다는 것이다. 시스템의 기능은 더 작은 책임으로 분할되고 책임은 적절한 역할을 수행할 수 있는 객체에 의해 수행된다. 객체는 자신의 책임을 수행하는 도중에 다른 객체에게 도움을 요청하기도 한다.
따라서 적절한 객체에게 적절한 책임을 할당하는 것이 객체지향 설계의 품질을 결정하는 가장 중요한 요소이다.
협력 속에 사는 객체
객체지향의 윤곽을 결정하는 것은 역할, 책임, 협력이지만 실제로 협력에 참여하는 주체는 객체이다. 객체는 애플리케이션의 기능을 구현하기 위해 존재하고 다른 객체와의 협력을 통해 기능을 구현한다.
- 객체는 협력적으로 요청에 응답해야 한다.
- 객체는 요청에 응답하기 위해 협력에 참여하지만 협력에 참여하는 방법은 스스로 결정할 수 있을 만큼 자율적이어야 한다.
메시지와 메서드
- 객체는 협력을 위해 다른 다른 객체에게 유일한 의사소통 수단인 메시지를 전송, 수신한다.
- 메시지를 받은 객체는 자율적으로 메서드를 선택해 수신된 메시지를 처리한다.
'JAVA > 객체지향의 사실과 오해' 카테고리의 다른 글
객체 지향의 사실과 오해 - 책임과 메시지 (0) | 2022.02.24 |
---|---|
객체 지향의 사실과 오해 - 역할, 책임, 협력 (0) | 2022.02.13 |
객체 지향의 사실과 오해 - 타입과 추상화 (0) | 2022.02.11 |
객체 지향의 사실과 오해 - 이상한 나라의 객체 (0) | 2022.02.11 |