목차
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
닫기