Chapter 1 객체지향 개념 소개 ... 21 절차지향과 OO 프로그래밍 ... 23 절차지향에서 객체지향 개발로 이동 ... 28 절차지향 프로그래밍 ... 28 OO 프로그래밍 ... 28 객체란 정확히 무엇인가? ... 29 객체 데이터 ... 29 객체 행위 ... 30 클래스란 정확히 무엇인가? ... 34 클래스는 객체 템플릿이다 ... 36 속성 ... 38 메서드 ... 38 메시지 ... 38 UML을 사용하여 클래스 다이어그램 모델 만들기 ... 39 캡슐화와 데이터 은닉 ... 40 인터페이스 ... 40 구현 ... 42 인터페이스/구현 패러다임의 실제 예 ... 42 인터페이스/구현 패러다임의 모델 ... 43 상속 ... 44 상위 클래스와 하위 클래스 ... 46 추상화 ... 46 Is-a 관계 ... 48 다형성 ... 48 조합 ... 53 추상화 ... 53 Has-a 관계 ... 53 결론 ... 54 이 장에 사용된 예제 코드 ... 54 Chapter 2 객체 관점에서 생각하는 방법 ... 61 인터페이스와 구현 간의 차이가 있다는 점을 인식 ... 63 인터페이스 ... 65 구현 ... 56 인터페이스/구현 예 ... 66 인터페이스를 설계할 때 추상적으로 생각하기 ... 72 사용자에게 가능한 최소한의 인터페이스를 제공 ... 74 사용자 확인 ... 75 객체 행위 ... 76 환경적 제약 사항 ... 77 공개 인터페이스 확인 ... 77 구현 확인 ... 78 결론 ... 79 참고 도서 ... 80 Chapter 3 고급 객체지향 개념 ... 81 생성자 ... 82 언제 생성자를 호출하는가? ... 83 생성자 내부에는 무엇이 있는가? ... 83 기본 생성자 ... 84 다중 생성자 사용 ... 85 생성자 설계 ... 90 오류 처리 ... 91 문제를 무시한다 ... 92 문제를 점검하고 응용 프로그램을 취소한다 ... 92 문제를 점검하고 복구를 시도한다 ... 92 예외 던지기 ... 93 범위의 개념 ... 96 로컬 속성 ... 96 객체 속성 ... 98 클래스 속성 ... 101 연산자 오버로딩 ... 102 다중 상속 ... 104 객체 연산 ... 105 결론 ... 106 참고 도서 ... 107 이 장에 사용된 예제 코드 ... 107 Chapter 4 클래스 해부 ... 109 클래스의 이름 ... 110 주석 ... 112 속성 ... 113 생성자 ... 115 접근자 ... 117 공개 인터페이스 메서드 ... 120 비공개 구현 메서드 ... 120 결론 ... 121 참고 도서 ... 122 이 장에 사용된 예제 코드 ... 122 Chapter 5 클래스 설계 지침 ... 127 현실 세계 시스템 모델링 ... 128 공개 인터페이스 확인 ... 129 최소한의 공개 인터페이스 ... 129 구현 은닉 ... 131 견고한 생성자(또는 소멸자) 설계 ... 131 오류 처리를 클래스 속에 설계 ... 132 클래스 문서 작성 및 주석 사용 ... 133 협력하기 위한 객체 구성 ... 133 재사용을 고려한 설계 ... 134 확장성을 고려하여 설계 ... 134 서술형 이름 사용 ... 1350 이식 불가 코드 추상화 ... 136 객체 복사 및 비교 방법 제공 ... 136 가능한 작은 범위 유지 ... 137 클래스가 스스로 책임지도록 한다 ... 138 유지보수를 고려하여 설계 ... 140 반복 사용 ... 141 인터페이스 테스트 ... 141 객체 지속성 사용 ... 143 객체 직렬화와 마샬링 ... 144 결론 ... 145 참고 도서 ... 146 이 장에 사용된 예제 코드 ... 146 Chapter 6 객체를 사용한 설계 ... 149 설계 지침 ... 150 적합한 분석 수행 ... 154 작업 명세서(SOW) 개발 ... 155 요구 사항 수집 ... 155 사용자 인터페이스 원형 개발 ... 156 클래스 확인 ... 156 각 클래스의 책임 역할 결정 ... 157 클래스가 상호 협업하는 방법 결정 ... 157 시스템을 설명하는 클래스 모델 작성 ... 157 사례 연구: 블랙잭 예제 ... 157 CRC 카드 사용 ... 160 블랙잭 클래스 확인 ... 162 클래스의 책임 역할 확인 ... 165 UML 유스케이스: 협업 확인 ... 172 처음 통과한 CRC 카드 ... 176 UML 클래스 다이어그램: 객체 모델 ... 179 사용자 인터페이스 원형 작성 ... 180 결론 ... 180 참고 도서 ... 181 Chapter 7 상속과 조합 ... 183 객체 재사용 ... 184 상속 ... 185 일반화 및 특수화 ... 189 설계상 결정 ... 190 조합 ... 192 UML을 사용하여 조합 표시 ... 193 캡슐화가 OO의 기본이 되는 이유 ... 196 상속이 캡슐화를 약화시키는 방법 ... 196 다형성에 대한 자세한 예제 ... 199 객체 책임 역할 ... 200 결론 ... 205 참고 도서 ... 206 이 장에 사용된 예제 코드 ... 206 Chapter 8 프레임워크와 재사용: 인터페이스와 추상 클래스를 이용한 설계 ... 211 코드: 재사용할 것인가? 재사용하지 않을 것인가? ... 212 프레임워크란 무엇인가? ... 213 계약이란 무엇인가? ... 215 추상 클래스 ... 216 인터페이스 ... 219 한 곳에 묶기 ... 221 컴파일러 증명 ... 225 계약 체결 ... 226 시스템 플러그인 포인트 ... 229 E-비즈니스 예제 ... 230 E-비즈니스 문제 ... 230 재사용하지 않는 접근 방법 ... 231 E-비즈니스 솔루션 ... 234 UML 객체 모델 ... 234 결론 ... 240 참고 도서 ... 240 이 장에 사용된 예제 코드 ... 241 Chapter 9 객체 구성 ... 247 조합 관계 ... 248 단계별 구성 ... 250 조합의 유형 ... 253 집합 ... 253 연관 ... 255 연관과 집합을 함께 사용하기 ... 256 의존 관계 피하기 ... 256 카디널리티 ... 258 다중 객체 연관 ... 260 선택적 연관 ... 261 하나로 결합하기: 예제 ... 262 결론 ... 264 참고 도서 ... 264 Chapter 10 UML을 이용한 객체 모델 생성 ... 265 UML이란? ... 266 클래스 다이어그램의 구조 ... 267 속성과 메서드 ... 270 속성 ... 270 메서드 ... 270 액세스 표시 ... 271 상속 ... 272 인터페이스 ... 275 조합 ... 276 집합 ... 276 연관 ... 277 카디널리티 ... 280 결론 ... 281 참고 도서 ... 282 Chapter 11 객체와 이식 가능한 데이터: XML ... 283 이식 가능 데이터 ... 284 확장 가능 마크업 언어(XML) ... 286 XML과 HTML ... 287 XML과 객체지향 언어 ... 288 두 회사 간 데이터 공유 ... 290 DTD를 사용하여 문서 유효성 확인 ... 290 DTD를 XML 문서에 통합 ... 293 CSS의 사용 ... 299 결론 ... 302 참고 도서 ... 303 Chapter 12 지속 객체: 직렬화와 관계형 데이터베이스 ... 305 지속 객체 기초 ... 306 객체를 플랫 파일로 저장 ... 308 파일 직렬화 ... 309 다시 살펴보는 구현 및 인터페이스 ... 311 메서드는 어떤가? ... 313 직렬화 과정에서 XML 사용 ... 314 관계형 데이터베이스에 기록 ... 317 관계형 데이터베이스 액세스 ... 319 드라이버 로딩 ... 322 연결 맺기 ... 323 SQL 문 ... 324 결론 ... 328 참고 도서 ... 328 이 장에 사용된 예제 코드 ... 329 Chapter 13 객체와 인터넷 ... 335 분산 컴퓨팅의 발전 ... 336 객체 기반 스크립팅 언어 ... 337 JavaScript 유효성 확인 예제 ... 340 웹 페이지에 있는 객체 ... 344 JavaScript 객체 ... 345 웹 페이지 컨트롤 ... 347 사운드 플레이어 ... 348 동영상 플레이어 ... 349 Flash ... 349 분산 객체와 엔터프라이즈 ... 350 CORBA ... 352 웹 서비스 정의 ... 357 웹 서비스 코드 ... 362 Invoice.cs ... 362 Invoice.vb ... 364 결론 ... 365 참고 도서 ... 365 Chapter 14 객체와 클라이언트/서버 응용 프로그램 ... 367 클라이언트/서버 접근 방법 ... 368 독자 표준 접근 방법 ... 368 직렬화된 객체 코드 ... 369 클라이언트 코드 ... 370 서버 코드 ... 373 독자 표준 클라이언트/서버 예제 실행 ... 375 독자 표준이 아닌 접근 방법 ... 376 객체 정의 코드 ... 377 클라이언트 코드 ... 379 서버 코드 ... 380 독자 표준이 아닌 클라이언트/서버 예제 실행 ... 383 결론 ... 383 참고 도서 ... 384 이 장에 사용된 코드 예제 ... 384 Chapter 15 설계 패턴 ... 389 왜 설계 패턴인가? ... 391 Smalltalk 모델/뷰/컨트롤러 ... 392 설계 패턴의 유형 ... 394 생성 패턴 ... 395 구조 패턴 ... 400 행동 패턴 ... 404 안티패턴 ... 405 결론 ... 407 참고 도서 ... 407 이 장에 사용된 코드 예제 ... 408 찾아보기 ... 416