객체지향의 본질은 협력하는 객체들의 공동체를 창조하는 것이다.
자율적인 객체들을 만들기 위해서는 가장 기본적으로 캡슐화를 하면 된다. 이를 통해 변경에 대한 파급 효과를 줄일 수 있고, 변경에 용이한 구조가 만들어지게 된다.
객체의 존재 이유는 협력이다. 객체는 행동과 상태를 함께 캡슐화해놓은 실행 단위이다.
객체의 행동은 협력으로부터 결정되고, 객체의 상태는 행동으로부터 결정된다.
객체지향 설계에서 가장 중요한 것은 협력이라는 문맥하에 객체에 어떤 책임을 줄 것인가를 결정하는 것이다.
책임을 적절히 할당하는 것은 어렵다. 처음에는 시스템이 사용자에게 제공해야할 기능을 하나의 책임으로 보고 점점 해당 책임을 더 작은 책임으로 나눠가면서 그 책임을 맡을 전문가 객체를 찾아가는 과정으로 진행하자. → 책임주도설계를 하자!