Table of Contents

CHAPTER 1 객체지향 모델링 __1.1 모델링 __1.2 UML __1.3 클래스 다이어그램 ____1.3.1 클래스 ____1.3.2 관계 __체크포인트 해설 __연습문제 CHAPTER 2 객체지향 원리 __2.1 추상화 __2.2 캡슐화 __2.3 일반화 관계 ____2.3.1 일반화는 또 다른 캡슐화 ____2.3.2 일반화 관계와 위임 ____2.3.3 집합론 관점으로 본 일반화 관계 __2.4 다형성 __2.5 피터 코드의 상속 규칙 __체크포인트 해설 __연습문제 CHAPTER 3 SOLID 원칙 __3.1 단일 책임 원칙 ____3.1.1 책임의 의미 ____3.1.2 변경 ____3.1.3 책임 분리 ____3.1.4 산탄총 수술 ____3.1.5 관심지향 프로그래밍과 횡단 관심 문제 __3.2 개방-폐쇄 원칙 __3.3 리스코프 치환 원칙 __3.4 의존 역전 원칙 __3.5 인터페이스 분리 원칙 __체크포인트 해설 __연습문제 CHAPTER 4 디자인 패턴 __4.1 디자인 패턴의 이해 __4.2 GoF 디자인 패턴 __4.3 UML과 디자인 패턴 ____4.3.1 컬레보레이션 ____4.3.2 순차 다이어그램 ____4.3.3 순차 다이어그램과 클래스 다이어그램의 관계 __체크포인트 해설 __연습문제 CHAPTER 5 스트래티지 패턴 __5.1 로봇 만들기 __5.2 문제점 ____5.2.1 기존 로봇의 공격과 이동 방법을 수정하는 경우 ____5.2.2 새로운 로봇에 공격/이동 방법을 추가/수정하는 경우 __5.3 해결책 __5.4 스트래티지 패턴 __연습문제 CHAPTER 6 싱글턴 패턴 __6.1 프린터 관리자 만들기 __6.2 문제점 __6.3 해결책 __6.4 싱글턴 패턴 __6.5 싱글턴 패턴과 정적 클래스 __연습문제 CHAPTER 7 스테이트 패턴 __7.1 상태 머신 다이어그램 __7.2 형광등 만들기 __7.3 문제점 __7.4 해결책 __7.5 스테이트 패턴 __연습문제 CHAPTER 8 커맨드 패턴 __8.1 만능 버튼 만들기 __8.2 문제점235 ____8.2.1 버튼을 눌렀을 때 다른 기능을 실행하는 경우 ____8.2.2 버튼을 누르는 동작에 따라 다른 기능을 실행하는 경우 __8.3 해결책 __8.4 커맨드 패턴 __연습문제 CHAPTER 9 옵서버 패턴 __9.1 여러 가지 방식으로 성적 출력하기 __9.2 문제점 ____9.2.1 성적을 다른 형태로 출력하는 경우 ____9.2.2 동시 혹은 순차적으로 성적을 출력하는 경우 __9.3 해결책 __9.4 옵서버 패턴 __연습문제 CHAPTER 10 데커레이터 패턴 __10.1 도로 표시 방법 조합하기 __10.2 문제점 ____10.2.1 또다른 도로 표시 기능을 추가로 구현하는 경우 ____10.2.2 여러 가지 추가 기능을 조합해야 하는 경우 __10.3 해결책 __10.4 데커레이터 패턴 __연습문제 CHAPTER 11 템플릿 메서드 패턴 __11.1 여러 회사의 모터 지원하기 __11.2 문제점 __11.3 해결책 __11.4 템플릿 메서드 패턴 __연습문제 CHAPTER 12 팩토리 메서드 패턴 __12.1 여러 가지 방식의 엘리베이터 스케줄링 방법 지원하기 __12.2 문제점 __12.3 해결책 __12.4 팩토리 메서드 패턴 __연습문제 CHAPTER 13 추상 팩토리 패턴 __13.1 엘리베이터 부품 업체 변경하기 __13.2 문제점348 ____13.2.1 다른 제조 업체의 부품을 사용해야 하는 경우 ____13.2.2 새로운 제조 업체의 부품을 지원해야 하는 경우 __13.3 해결책 __13.4 추상 팩토리 패턴 __연습문제 CHAPTER 14 컴퍼지트 패턴 __14.1 컴퓨터에 추가 장치 지원하기 __14.2 문제점 __14.3 해결책 __14.4 컴퍼지트 패턴 __연습문제 연습문제 정답 및 해설 찾아보기