오브젝트 조영호 저 역할, 책임, 협력에 기반해 객체지향 프로그램을 설계하고 구현하는 방법 응집도와 결합도를 이용해 설계를 트레이드오프하는 방법 설계를 유연하게 만드는 다양한 의존성 관리 기법 타입 계층을 위한 상속과 코드 재사용을 위한 합성의 개념 다양한 설계 원칙과 디자인 패턴