목차 일부
제1부 객체의 기초 개념
제1장 자바 맛보기 ... 27
왜 자바인가? ... 28
자바는 아키텍처에 중립적이다 ... 29
자바와 월드와이드웹 ... 32
자바는 '한번에 모든 것'을 제공한다 ... 34
연습함이 완벽함을 만든다 ... 37
자바는 매우 객체 지향적이...
더보기
목차 전체
제1부 객체의 기초 개념
제1장 자바 맛보기 ... 27
왜 자바인가? ... 28
자바는 아키텍처에 중립적이다 ... 29
자바와 월드와이드웹 ... 32
자바는 '한번에 모든 것'을 제공한다 ... 34
연습함이 완벽함을 만든다 ... 37
자바는 매우 객체 지향적이다 ... 37
자바는 개방형 표준(open standard)이다 ... 38
자바는 무료이다 ... 38
자바 언어의 기초 ... 38
실제 자바 코드와 의사코드 ... 39
간단한 자바 프로그램의 구조 ... 39
자바의 내장 데이터형 ... 41
자동증가/자동감소 연산자 ... 43
자바 표현식 ... 44
자동 형변환과 명시적 형변환 ... 45
블록 구조를 갖는 언어와 변수의 범위 ... 46
화면에 출력하기 ... 47
프로그램의 실행 흐름 제어 ... 51
들여쓰기 스타일 ... 57
자바와 관련해서 전해줄 사항 ... 59
요약 ... 59
연습문제 ... 60
제2장 추상화와 모델링 ... 61
추상화를 통한 간략화 ... 62
추상화를 통한 일반화 ... 63
추상화를 조직하여 분류 계층도 만들기 ... 64
소프트웨어 개발의 기초로서의 추상화 ... 67
추상화의 재사용 ... 68
본질적인 문제들 ... 68
어떻게 하면 성공적인 객체 모델러가 될 수 있을까? ... 69
요약 ... 71
연습문제 ... 71
제3장 객체와 클래스 ... 73
객체란 무엇인가? ... 74
데이터/상태/속성 ... 75
행동/연산/메소드 ... 76
클래스 ... 78
인스턴스화 ... 79
캡슐화 ... 81
객체 vs. 데이터베이스 레코드 ... 82
추상 데이터형으로서의 클래스 ... 83
객체의 인스턴스화 자세히 보기 ... 84
속성으로 사용되는 객체 ... 88
합성 클래스 ... 90
객체 지향 프로그래밍 언어의 세 가지 구별되는 특징 ... 92
요약 ... 93
연습문제 ... 93
제4장 객체들의 상호작용 ... 95
이벤트는 객체의 협동을 이끌어 낸다 ... 96
메소드 시그너처 ... 98
인자 전달하기 ... 99
반환형 ... 100
메소드의 몸체 ... 101
명명법에 대한 제안 ... 102
메시지 전달 및 점(dot) 표기법 ... 102
점 표기법을 통해 속성에 접근하기 ... 104
위임 ... 105
객체에 접근하기 ... 105
클라이언트 및 서버/에이전트로서의 객체 ... 108
정보 은닉/가시성 ... 109
접근자 및 수정자 메소드 ... 113
public/private 규칙의 예외 ... 116
캡슐화 다시 살펴보기 ... 120
클래스 자신의 메소드 내부에서 속성에 접근하기 ... 123
생성자 ... 126
요약 ... 127
연습문제 ... 128
제5장 객체간의 관계 ... 129
연관과 링크 ... 130
다중성(Multiplicity) ... 133
집합(Aggregation) ... 137
상속(Inheritance) ... 138
상속의 이점 ... 145
클래스 계층도 ... 145
실제로 상속은 하나의 관계인가? ... 147
'파급 효과' ... 148
클래스를 파생시키는 원칙 : '해야 할 일들' ... 148
오버라이딩(Overriding) ... 149
클래스를 파생시키는 원칙 : '하지 말아야 할 일들' ... 152
오버로딩(Overloading) ... 153
다중 상속에 관한 몇 가지 언급 ... 155
객체 지향 프로그래밍 언어의 3가지 특성 중 2가지를 배웠다 ... 159
요약 ... 159
연습문제 ... 160
제6장 객체의 컬렉션 ... 163
컬렉션이란 무엇인가? ... 164
배열으로서의 단순 컬렉션 ... 167
보다 정교한 컬렉션 타입들 ... 170
'핸들'의 컬렉션 ... 174
사용자 정의 컬렉션 타입 만들기 ... 175
메소드 리턴 타입으로서의 컬렉션 ... 178
서브타입의 컬렉션 ... 179
합성 클래스 다시 보기 ... 180
요약 ... 183
연습문제 ... 184
제7장 마지막 남은 개념들 ... 185
다형성이란 무엇인가? ... 187
다형성은 코드의 유지보수를 단순화해 준다 ... 191
객체 지향 프로그래밍 언어의 3가지 주요 특징 ... 193
추상 클래스 ... 193
추상 클래스와 인스턴스 생성 ... 198
상속과 추상 클래시 ... 199
인터페이스 ... 200
정적 속성 ... 204
정적 속성에 접근하기 ... 207
정적 메소드 ... 208
정적 메소드와 정적 속성 ... 209
요약 ... 211
연습문제 ... 212
제2부 객체 모델링
제8장 객체 모델링 프로세스 요약 ... 217
객체 모델링의 '큰 그림'이 되는 목표 ... 218
모델링 방법론 = 프로세스 + 표기법 + 툴 ... 219
객체 지향 프로젝트 간단히 살펴보기 ... 221
객체 모델링 소프트웨어 툴에 관한 생각 ... 222
메모 ... 224
요약 ... 225
연습문제 ... 225
제9장 쓰임새를 통해 요구사항 정형화하기 ... 227
쓰임새란 무엇인가? ... 228
기능적 vs. 기술적 요구사항 ... 229
사용자를 포함시키기 ... 230
행위자 ... 230
쓰임새 정의하기 ... 235
쓰임새와 행위자를 매치시키기 ... 236
다이어그램, 그릴 것인가 말 것인가? ... 237
요약 ... 238
연습문제 ... 238
제10장 시스템의 정적/데이터 양상 모델링 ... 241
적절한 클래스 찾기 ... 242
명사절 분석 ... 243
쓰임새 다시 살펴보기 ... 253
데이터 딕셔너리 만들기 ... 256
클래스들 사이의 연관 결정하기 ... 257
속성 찾아내기 ... 261
UML 표기법 : 추상의 정적 양상 모델링 ... 262
클래스, 속성, 메소드 ... 262
클래스들 사이의 관계 ... 265
다중성 반영하기 ... 270
객체 다이어그램 ... 273
속성으로 사용되는 연관 ... 275
정보는 연관 '파이프라인'을 따라 '흐른다' ... 277
관계 표기법들을 '섞어서 조화시키기' ... 281
연관 클래스 ... 283
학생 등록 시스템의 '완전한' 클래스 다이어그램 ... 285
메타데이터 ... 291
UML과 OMT 표기법 비교 ... 293
요약 ... 293
연습문제 ... 294
제11장 시스템의 동적/행동 양상 모델링 ... 297
행동이 상태에 어떻게 영향을 미치는가 ... 299
이벤트 ... 301
시나리오 ... 304
시나리오 1 - '강좌에 등록한다' 쓰임새를 위한 : ... 305
시나리오 2 - '강좌에 등록한다' 쓰임새를 위한 : ... 307
시퀀스 다이어그램 ... 308
메소드를 결정하는데 시퀀스 다이어그램을 사용하기 ... 313
협력 다이어그램 ... 316
개정된 SRS 클래스 다이어그램 ... 317
요약 ... 318
연습문제 ... 319
제12장 모델링 결과의 마무리 ... 321
모델 테스트하기 ... 322
모델의 결점 ... 323
모델 재사용하기 : 설계 패턴에 관한 이야기 ... 325
요약 ... 328
연습문제 ... 328
제3부 객체의 '청사진'을 자바 코드로 옮기기
제13장 자바 자세히 보기 ... 331
자바 프로그래밍 환경 설정하기 ... 333
자바 프로그램 분석 다시 보기 ... 333
패키지 가져오기 ... 338
자바 클래스 분석 ... 342
객체로서의 String ... 349
자바 표현식 다시 보기 ... 352
화면 출력 다시 보기 ... 354
배열 다시 보기 ... 355
변수의 초기화 다시 보기 ... 357
자바의 예외 처리 ... 360
커맨드 라인에서 데이터 읽기 ... 362
키보드 입력받기 ... 364
생성자 사용하기 ... 367
객체 자신을 참조하는 'this' 키워드 사용하기 ... 371
객체의 삭제와 가비지 컬렉션 ... 374
상속과 자바 ... 376
상속된 컴포넌트의 가시성/접근성 ... 376
베이스 클래스의 행위들을 재사용하기 : 'super' 키워드 ... 379
상속과 생성자 ... 380
자바의 컬렉션 클래스 ... 385
Vector 클래스 ... 385
Hashtable ... 388
Enumeration 객체를 통해 컬렉션 훑어보기 ... 390
구원을 주는 '랩퍼' 클래스 ... 394
'final' 키워드 ... 396
정적 속성과 메소드 다시 보기 ... 398
추상 클래스와 인터페이스 다시 보기 ... 399
객체 구분자 ... 402
객체가 속해 있는 클래스 결정하기 ... 405
Object의 등가 테스트 ... 407
toString() 메소드 ... 409
내부 클래스 ... 411
요약 ... 413
연습문제 ... 415
제14장 모델을 자바 코드로 바꾸기 ... 417
이후의 장들에서 최대값을 산출하기 위한 제안 ... 418
SRS 클래스 다이어그램 다시 보기 ... 419
Person 클래스(추상 클래스 열거하기) ... 421
Student 클래스(상속을 통한 재사용 ; 추상 클래스의 확장; 위임) ... 424
Professor 클래스(관계의 양방향성) ... 433
Course 클래스(재귀적인 관계 ; 방향성이 없는 관계) ... 434
Section 클래스(연관 클래스들 나타내기 ; Public Static Final 속성) ... 438
위임 다시 보기 ... 445
ScheduleOfClasses 클래스 ... 451
TranscriptEntry 연관 클래스(Static 메소드) ... 452
Transcript 클래스 ... 455
SRS '구동' 프로그램 ... 457
디버깅 팁 ... 467
요약 ... 469
연습문제 ... 470
제15장 애플리케이션 다듬기
1부 : 파일 영속성 추가하기 ... 471
파일 영속성이란 무엇인가? ... 473
파일로부터 읽기 ... 474
파일에 쓰기 ... 476
주요 SRS 컬렉션 생성하기 ... 477
Student 데이터 보존하기 ... 480
다른 타입의 객체들은 보존하지 않는 이유 ... 481
CollectionWrapper(컬렉션 캡슐화하기 ; ASCII 파일로부터 읽기) ... 481
CourseCatalog ... 486
Faculty ... 494
ScheduleOfClasses 수정하기 ... 496
Course 수정 ... 499
Student 클래스(동적인 데이터 검색; 객체의 상태 보존) ... 500
SRS 클래스 다시 보기 ... 508
요약 ... 517
연습문제 ... 517
제16장 애플리케이션 다듬기
2부 : 그래픽 사용자 인터페이스 추가 ... 519
자바GUI : 기초 ... 521
컴포넌트 ... 521
컨테이너 ... 522
모델과 뷰의 분리 ... 523
AWT vs. Swing 컴포넌트 ... 526
JFrame 클래스 ... 530
화면 상에 프레임을 위치시키기 ... 533
화면 중앙에 프레임을 위치시키기 ... 535
JFrame에 컴포넌트 추가하기 ... 538
JPanel클래스 ... 540
공통 컴포넌트 속성과 행동들 ... 540
레이아웃의 기초 ... 545
BorderLayout ... 545
GridLayout ... 551
FlowLayout ... 558
JLabel 클래스 ... 560
JTextField와 JPasswordField 클래스 ... 561
JButton 클래스 ... 564
JList ... 565
계산기 예제 ... 568
GUI를 가지는 애플리케이션 구조 ... 572
'GUI의 외양', 검토 ... 576
자바 이벤트 핸들링 ... 576
이벤트 - 기본 개념들 ... 576
기본 이벤트 타입 ... 579
리스너의 생성과 등록 ... 579
계산기에 행동 추가하기 ... 582
윈도우를 닫기 ... 589
JList에서 아이템을 선택하기 ... 593
다른 컨테이너 타입 : JDialog와 JOptionPane ... 601
JOptionPane으로 한번에 대화상자 표시하기 ... 607
SRS : GUI를 추가하기 ... 610
운영의 개념 ... 610
GUI의 '겉보기' 기획 : GridLayout을 이용한 창조 ... 618
성공적인 모델-뷰 분리 ... 626
요약 ... 659
연습문제 ... 660
제17장 다음 단계로 나아가기 ... 661
Jacquie의 자바를 제대로 배우는 '확실한' 방법 ... 662
참고 도서 ... 664
Wrox의 학습 '로드 맵' ... 664
그 밖의 참고 도서 ... 664
독자의 의견 ... 666
제4부 부록
부록 A. 이 책을 교재로 사용하려는 분들을 위한 충고 ... 669
부록 B. 기타 사례 연구들 ... 673
사례연구 1 : 회의실 예약 시스템 ... 674
배경 ... 674
시스템의 목표 ... 675
사례연구 2 : Blue Skies 항공 노선 예약 시스템 ... 676
배경 ... 676
그 밖의 가정 단순화 ... 677
부록 C. 기본적인 객체 모델링/Java 환경 설정하기 ... 679
객체 모델링 도구들 ... 680
Java Software Developer's Kit ... 680
Java 작업을 위한 '잡동사니' 팁들 ... 681
Windows 95나 98 환경에서 작업하는 경우 ... 681
그 밖의 Windows 버전(예를 들면 NT, 2000, ME)에서 작업하는 경우 ... 683
Unix(Solaris, Linux)에서 작업하는 경우 ... 683
모든 플랫폼에 해당하는 것들 ... 683
설치시 에러의 해결 ... 685
Windows에서 온라인 Java 참고 문서 사용하기 ... 686
마이크로소프트 Windows 하에서 DOS를 사용하는 경우를 위한 특별한 팁 ... 687
규칙No. 1 : 모든 DOS 환경이 동일하게 만들어지지 않는다! ... 687
부록 D. SRS 소스 코드 ... 691
예제 코드 다운로드하기 ... 692
부록 E.숙련된 C++ 프로그래머를 위한 참고사항 ... 695
포인터가 없어졌다! ... 696
부록 F. '무대 뒤에서 벌어지는' 다형성의 작동 원리(동적 vs. 정적 바인딩) ... 701
정적 바인딩 ... 702
동적 바인딩 ... 704
찾아보기 ... 706
더보기 닫기