반응과 집단의 크기 사이에 밀접한 관계가 있음을 발견 - '책임감 분산'
역할과 책임이 뚜력해야 협력이 잘 이뤄진다.
자율적인 객체 = 스스로의 의지와 판다에 따라 각자 맡은 책임을 수행하는 객체
객체가 자율적이기 위해서는 객체에게 할당되는 책임의 수준 역시 자율적이어야 한다.
훌륭한 책임 = 자율성 보장할 정도의 추상성과 협력의 의도를 뚜렷하게 볼 수 있도록 구체적
'어떻게' 가 아니라 '무엇'을에 집중한다.
행동을 어떻게 수행할지 메시지를 통해 전달한다.
메시지이름(argument) - 증언하라(어제, 왕국)
메서드 - 메시지를 처리할 방법
다형성이란 서로 다른 유형의 객체가 동일한 메시지에 대해 서로 다르게 반응하는 것을 의미한다.
'증언하라' 라는 메시지를 이해할 수 있는 모든 객체들은 '증인' 이라는 역할을 수행할 수 있다.
다형성은 송신자와 수신자 간의 객체 타입에 대한 결합도를 메시지에 대한 결합도로 낮춤으로써 달성된다.
송신자는 오직 메시지만 바라본다.
메시지를 주고받는 객체들 사이의 커뮤니케이션에 초점을 맞춰야한다.
어떤 객체가 어떤 메시지를 전송할 수 있는가와 어떤 객체가 어떤 메시지를 이해할 수 있는가를 중심으로 객체 사이의 협력관계를 구성하는 거이 훌륭한 객체지향 설계.
협력이라는 문맥 안에서 필요한 메시지를 먼저 결정한 후에 메시지를 수신하기에 적합한 객체를 선택한다.
메시지를 믿어라 그러면 자율적인 책임은 저절로 따라온다
어떤 메시지를 수신할 수 있는지가 객체를 제공하는 인터페이스의 모양을 빚는다.
좀 더 추상적인 인터페이스 : 세부사항을 제거하고 메시지의 의도를 나타냄
최소 인터페이스 : 메시지를 따라서 만든다
객체의 외부 : 인터페이스
객체의 내부: 구현(Implemetation)
인터페이스와 구현을 분리한다는 것은 변경될 만한 부분을 객체 내부에 숨긴다는 말이다.
객체의 자율성을 보존하기 위해 구현을 외부로부터 감추는 것
상태와 행위의 캡슐화 (데이터 캡슐화)
상태와 행동을 하나의 단위로 묶는 자율적인 실체
사적인 비밀의 캡슐화
자율적인 책임은 협력을 단순하게 만든다.
책임이 적절하게 추상화된다.
자율적인 책임은 외부와 내부를 명확하게 분리한다.
책임이 자율적일 경우 책임을 수행하는 내부적인 방법을 변경하더라도 외부에 영향을 미치지 않는다.
자율적인 책임은 협력의 대상을 다양하게 선택할 수 있는 유연성을 제공한다.
객체가 수행하는 책임들이 자율적일수록 객체의 역할을 이해하기 쉬워진다.