01 협력
- 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용을 협력이라 한다.
- 객체가 협력에 참여하기 위해 수행하는 로직은 책임이라고 한다.
- 협력 안에서 수행하는 책임들이 모여 객체가 수행하는 역할을 구성한다.
협력
- 두 객체 사이의 협력은 다른 객체에 도움을 요청할 때 시작된다.
- 메시지 전송이 객체 간 협력할 때 사용하는 유일한 커뮤니케이션 수단이다. 객체는 다른 객체의 내부 로직에 접근할 수 없기 때문에 오직 메세지 전송을 통해서만 자신의 요청을 전달할 수 있다.
- 객체는 자율적인 존재이기 때문에 메시지를 처리할 방법을 스스로 선택한다.
- 이때 객체는 알다시피 캡슐화를 통해 자율적인 존재가 된다.
협력이 설계를 위한 문맥을 결정한다.
- 객체가 가질 수 있는 상태와 행동을 어떤 기준으로 결정할까? 객체를 설계할 때 어떤 행동과 설계를 할당했다면 그 이유는 무엇인가?
- 결론적으로 객체의 행동을 결정하는 것은 객체가 참여하고 있는 협력이고 상태를 결정하는 것은 행동이다.
- 객체가 협력에 참여하기 위해 필요한 행동은 무엇이고 행동에 필요한 정보가 무엇인지 우리는 결정해야 한다.
- 결과적으로, 객체가 참여하는 협력이 행동과 상태를 결정한다. 따라서 협력은 **문맥(context)**을 제공한다.
02 책임
책임이란 무엇인가
- 협력에 참여하기 위해 객체가 수행하는 행동을 책임이라 한다.
- 책임이란 객체에 의해 정의되는 응집도 있는 행위의 집합으로 행동에 대해 서술한 문장이다.