[1장] 객체지향 애플리케이션의 공동 목표는 애플리케이션 기능이며, 작은 역할을 가진 객체들이 각자의 책임을 다하여 협력해서 목표를 이룬다. 객체는 협력적이어야 하며 동시에 자율적이어야 한다. 객체는 메시지를 통해 다른 객체에게 책임을 수행할 것을 요청한다.
[2장] 자율적인 책임을 가진 객체가 협력에 참여할 수 있는 유일한 방법은 행동이다. 객체지향 설계에서는 어떤 책임과 이를 수행할 행동이 필요한지 정의한 후 상태를 결정해야 한다.
[3장] 추상화는 현실의 복잡성을 극복하기 위한 인지 수단이다. 객체를 개념에 따라 분류하여 일반화하고 단순화할 수 있다. 소프트웨어에서 개념은 타입이며, 타입을 결정하는 것은 객체의 행동이다. 행동은 다형성, 캡슐화, 상속을 설명한다.
[4장] 객체지향 설계란 애플리케이션의 기능을 구현하기 위한 협력 관계를 고안하고, 협력에 필요한 역할과 책임을 식별한 후 이를 수행할 수 있는 적절한 객체를 선택하는 과정이다. 핵심은 올바른 책임을 올바른 객체에게 할당하는 것이다.
[5장] 객체지향이 유연한 설계와 재사용성을 높일 수 있는 이유는 협력을 수행하는 방법으로 메시지를 선택하기 때문이다. 메시지는 협력의 문맥에서 객체의 내부와 외부를 구분한다. 따라서 객체는 자율적인 책임을 지니게 된다. 캡슐화, 다형성, 낮은 결합도와 높은 응집도
[6장] 설계의 목적은 변화를 수용하는 여지를 남기기 위함이다. 기능이 안정적인 구조를 따라야 변경을 수용할 수 있는 소프트웨어가 된다. 책임 주도 설계는 도메인 모델을 바탕으로 시스템의 책임을 객체에 분배하고, 기능을 바탕으로 책임을 파악한다.
[7장] 변경에 유연하게 대응할 수 있는 객체를 작성하는 가장 빠른 방법은 클래스가 개념, 명세, 구현 관점을 명확하게 드러내도록 하는 것이다. 개념은 도메인 모델로부터, 명세는 메시지(안정적인 영역)로부터, 구현은 클래스의 가변적 영역을 드러낸다.