협력
- 기능 구현을 위해 수행하는 상호 작용
- 협력은 객체가 필요한 이유와 행동을 결정한다. 이 행동은 객체의 내부 상태를 결정한다.
- 캡슐화된 객체는 자신의 책임을 수행하던 중에 외부의 도움이 필요하면 메시지를 전송해 협력을 요청한다.
책임
- 협력에 참여하기 위해 객체가 수행하는 행동.
- 종류 : 아는 책임, 하는 책임
- 적절한 책임을 적절한 객체에 할당하는 것이 객체지향설계에 있어 가장 중요한 부분
- 책임주도설계와 같이 메시지가 객체를 선택하도록 하는 방식은 최소한의 인터페이스를 제공하며 무엇을 해야하는지에 집중할 수 있다. 메시지를 전송하는 것에 집중하므로 자연스럽게 캡슐화된 객체들의 협력을 얻을 수 있다.
- 협력, 책임, 역할 중 책임이 가장 중요하다. 협력은 어떤 행동이 필요한지 맥락을 제공하며, 역할은 책임을 모아 추상화한 것이기 때문이다.
역할
- 책임의 집합으로, 여러 행동을 모아 추상화한 것
- 역할을 정의하면 상위 협력 흐름에 집중할 수 있고, 유연한 설계가 가능하다.
- 책임과 역할 중 어느 것을 먼저 식별할 수 있는지는 요구사항에 따라 다른데, 타협 가능한 방식은 단순하게 객체로 시작해 책임과 협력을 정제하여 필요한 순간에 역할을 분리하는 것.
- 객체는 여러 역할을 가지는데, 특정 협력 안에서는 오직 하나의 역할이 일시적으로 보인다.
'OOP > <오브젝트>, 조영호' 카테고리의 다른 글
5장 책임 할당 GRASP 패턴 (0) | 2024.01.17 |
---|---|
4장 설계 품질과 트레이드오프 (캡슐화) (0) | 2024.01.17 |
[콘솔과 테라폼 구현] 사용자 > 100 : EC2, DB 분리 (0) | 2023.10.22 |
2장 객체지향 프로그래밍 (0) | 2023.04.29 |
1장 객체, 설계 (0) | 2023.02.20 |