- 객체지향 애플리케이션의 윤곽을 결정하는 것은 역할, 책임, 협력이지만 실제로 협력에 참여하는 주체는 객체다.
- 객체지향 애플리케이션의 아름다움을 결정하는 것이 협력이라면 협력이 얼마나 조화를 이루는지를 결정하는 것은 객체다. 결국 협력의 품질을 결정하는 것은 객체의 품질이다.
- 협력 공동체의 일원으로서 객체는 다음과 같은 두 가지 덕목을 갖춰야 하며, 두 덕목 사이에서 균형을 유지해야 한다.
- 객체는 충분히 ‘협력적’이어야 한다.
- 충분히 협력적이라는 말이 다른 객체의 명령에 따라 행동하는 수동적인 존재를 의미하는 것은 아니다.
- 다른 객체의 명령에 복종하는 것이 아니라 요청에 응답할 뿐이다.
- 객체가 충분히 ‘자율적’이어야 한다.
- 자율적이라는 단어의 뜻은, 자기 스스로의 원칙에 따라 어떤 일을 하거나 자기 스스로를 통제하여 절제하는 것을 의미한다.
상태와 행동을 함께 지닌 자율적인 객체
- 흔히 객체를 상태(state)와 행동(behavior)을 함께 지닌 실체라고 정의한다.
- 객체가 협력에 참여하는 과정 속에서 스스로 판단하고 스스로 결정하는 자율적인 존재로 남기 위해서는 필요한 행동과 상태를 함께 지니고 있어야 한다.
- 객체는 다른 객체가 ‘무엇(what)’을 수행하는지는 알 수 있지만 ‘어떻게(how)’수행하는지에 대해서는 알 수 없다.
협력과 메시지
- 풍부한 매커니즘을 이용해 요청하고 응답할 수 있는 인간들의 세계와 달리 객체지향의 세계에서는 오직 한 가지 의사소통 수단만이 존재한다. 이를 메시지라고 한다.
메서드와 자율성
- 객체가 수신된 메시지를 처리하는 방법을 메서드라고 부른다.
- 메시지와 메서드의 분리는 객체의 협력에 참여하는 객체들 간의 자율성으르 증진시킨다.