內容簡介
本書綜合介紹了Java語言編程技術和面向對象程式設計兩部分內容.在講授Internet上最流行的程式語言Java的同時,還介紹了它所採用的面向對象技術的基礎理論、主要原則和思維方法。本書內容翔實全面,涵蓋了從基本概念到高級主題(聯網、多執行緒和反射等)等內容,並介紹了面向對象設計的實用知識。書中給出大量經過調試運行良好的實例,便於初學者入門,同時有助於提高讀者解決實際問題的能力。
編輯推薦
本書適合用作高等院校本科生或研究生教材·Java初學者的自學用書·C/C++程式設計師轉向Java的學習資料。
目錄
第Ⅰ部分 面向對象和Java基礎知識
第1章 面向對象的系統開發 1
1.1 OO開發 2
1.1.1 面向對象編程 2
1.1.2 面向對象的分析和設計 3
1.2 面向對象的概念 5
1.2.1 對象、屬性和方法 6
1.2.2 對象互動作用和訊息 6
1.2.3 封裝和信息隱藏 7
1.2.4 類、實例和關聯 8
1.2.5 繼承性和多態性 9
1.3 認識OO開發的好處 10
1.3.1 對象更加自然 10
1.3.2 對象的類可以重用 10
1.4 理解OO開發 11
1.4.1 介紹三層設計 11
1.4.2 第Ⅰ部分:面向對象和Java基礎知識 11
1.4.3 第Ⅱ部分:定義問題域類 12
1.4.4 第Ⅲ部分:定義GUI類 12
1.4.5 第Ⅳ部分:定義數據存取類 12
1.4.6 第Ⅴ部分:部署三層應用程式 13
1.5 本章小結 13
1.6 複習問題 13
1.7 討論問題 17
1.8 項目 17
第2章 Java編程基礎知識 18
2.1 介紹Java 18
2.2 構建Java類 20
2.3 使用Java變數和數據類型 23
2.3.1 聲明和初始化變數 23
2.3.2 更改數據類型 25
2.3.3 使用常量 26
2.3.4 使用引用型變數 26
2.3.5 創建一個Java類來演示變數 27
2.4 使用Java進行計算 29
2.5 編寫判定語句 33
2.5.1 編寫if語句 33
2.5.2 使用條件運算符 37
2.5.3 編寫switch語句 39
2.6 編寫循環語句 40
2.6.1 編寫while循環 40
2.6.2 編寫do循環 41
2.6.3 編寫for循環 43
2.6.4 編寫嵌套循環 43
2.7 聲明和訪問數組 45
2.7.1 使用一維數組 45
2.7.2 使用多維數組 49
2.8 本章小結 53
2.9 複習問題 55
2.10 討論問題 55
2.11 項目 56
第3章 使用提供的類進行Java編程 57
3.1 使用Java提供的程式包和類 57
3.2 使用String類 58
3.3 創建String數組 62
3.4 使用vector類 66
3.5 處理日期 69
3.6 使用包裝器類 73
3.6.1 原語變數和包裝器實例之間的相互轉換 73
3.6.2 字元串和原語數據之間的相互轉換 74
3.6.3 String實例和包裝器實例之間的相互轉換 74
3.7 使用Applet類 76
3.7.1 編寫簡單的applet 76
3.7.2 控制顏色和字型 78
3.8 本章小結 81
3.9 複習問題 82
3.10 討論問題 85
3.11 項目 85
第4章 Nutshell中的面向對象分析和設計 86
4.1 OOA和OOD 86
4.2 統一建模語言 88
4.2.1 創建和解釋用例圖 89
4.2.2 創建和解釋類圖 91
4.2.3 創建和解釋序列圖 92
4.3 使用OO開發中的三層設計 94
4.4 介紹Bradshaw Marina案例分析 97
4.4.1 研究Bradshaw Marina的背景 97
4.4.2 標識Bradshaw用例和場景 97
4.4.3 標識Bradshaw問題域類 99
4.4.4 創建Bradshaw序列圖 102
4.5 本章小結 103
4.6 複習問題 104
4.7 討論問題 107
4.8 項目 107
第Ⅱ部分 定義問題域類
第5章 編寫問題域類定義 108
5.1 名稱轉換 108
5.2 開發PD類定義 109
5.2.1 類定義結構 109
5.2.2 定義屬性 110
5.2.3 編寫方法 111
5.3 測試PD類 114
5.3.1 創建實例 114
5.3.2 創建多個實例 118
5.4 編寫構造函式方法 122
5.5 編寫tellAboutSelf方法 124
5.6 本章小結 126
5.7 複習問題 127
5.8 討論問題 127
5.9 項目 127
第6章 有關問題域類的更多信息 129
6.1 為Slip類編寫定義 129
6.2 編寫自定義方法 135
6.3 格式化輸出 139
6.3.1 使用NumberFormat和DecimalFormat類 139
6.3.2 使用換碼順序 140
6.4 使用靜態變數和靜態方法 142
6.5 重載方法 146
6.5.1 重載構造函式 146
6.5.2 重載自定義方法 147
6.6 處理異常 151
6.6.1 slipId的數據驗證 152
6.6.2 Width的數據驗證 153
6.6.3 捕獲異常 157
6.7 本章小結 159
6.8 複習問題 160
6.9 討論問題 162
6.10 項目 162
第7章 一般化/特殊化和繼承性 164
7.1 實現Boat一般化/特殊化層次結構 164
7.1.1 測試Boat超類 166
7.1.2 使用關鍵字extends創建Sailboat子類 168
7.1.3 測試Sailboat子類 170
7.1.4 添加第二個子類-- Powerboat 173
7.2 抽象類和最終類 177
7.2.1 使用抽象類 177
7.2.2 使用最終類 178
7.3 重寫超類方法 178
7.3.1 添加和重寫tellAboutSelf方法 179
7.3.2 重寫和調用超類方法 183
7.3.3 測試2種方法重寫方式 185
7.3.4 重寫、多態性和動態綁定 187
7.4 私有訪問與受保護訪問的相對關係 187
7.5 本章小結 189
7.6 複習問題 190
7.7 討論問題 190
7.8 項目 191
第8章 其他的繼承概念和技術 192
8.1 最初的Lease類簡介 192
8.2 向Lease添加抽象方法 196
8.3 實現AnnualLease子類 198
8.4 實現DailyLease子類 201
8.5 測試AnnualLease和DailyLease類 204
8.6 了解和使用Java接口 206
8.6.1 創建Java接口 207
8.6.2 實現多個接口 208
8.6.3 測試完整的接口示例 211
8.7 使用自定義異常 213
8.7.1 定義LeasePaymentException 213
8.7.2 拋出自定義異常 216
8.7.3 測試LeasePaymentException 219
8.7.4 處理分批付款 220
8.8 Object類和繼承 224
8.9 本章小結 225
8.10 複習問題 225
8.11 討論問題 226
8.12 項目 226
第9章 實現關聯關係 228
9.1 查看Bradshaw Marina的類圖 228
9.2 將Customer與Boat相關聯:一對一的關聯關係 230
9.2.1 修改Customer類 231
9.2.2 修改Boat類 235
9.3 向Boat類中添加功能 239
9.4 將Dock與Slip相關聯:一對多的關聯關係 242
9.4.1 介紹Dock類 242
9.4.2 將Slip類與Dock相關聯 244
9.4.3 測試“碼頭包含船台”關聯關係 246
9.4.4 向示例中添加Boat和Customer類 249
9.5 創建和使用關聯類--Lease 255
9.6 本章小結 262
9.7 複習問題 263
9.8 討論問題 264
9.9 項目 264
第Ⅲ部分 定義GUI類
第10章 編寫圖形用戶界面 266
10.1 Java的GUI類 267
10.2 使用AWT類 268
10.2.1 創建帶有按鈕的視窗 268
10.2.2 使用布局管理器 269
10.2.3 處理Java事件 271
10.2.4 實現接口 271
10.2.5 擴充適配器類 274
10.2.6 創建內部類 278
10.2.7 使用多個GUI組件 280
10.3 將應用程式轉換為applet 285
10.4 使用Swing類 287
10.4.1 將AWT GUI轉換為Swing 288
10.4.2 添加下拉選單 290
10.4.3 將Swing應用程式轉換為applet 294
10.5 本章小結 296
10.6 複習問題 297
10.7 討論問題 299
10.8 項目 300
第11章 GUI與問題域類互動作用 301
11.1 添加新客戶 301
11.1.1 創建徽標面板 303
11.1.2 創建中央面板 303
11.1.3 創建下方面板 303
11.1.4 處理事件 304
11.1.5 使用對話框 305
11.2 查找客戶 309
11.2.1 創建客戶的Vector 310
11.2.2 創建客戶姓名的Vector 311
11.2.3 使用JList類 311
11.2.4 添加文本框 312
11.2.5 處理事件 312
11.3 添加船隻 317
11.3.1 創建面板 320
11.3.2 使用CardLayout 320
11.3.3 使用單選按鈕 321
11.3.4 創建sailboatPanel 321
11.3.5 創建powerboatPanel 323
11.3.6 註冊事件 323
11.3.7 處理事件 324
11.3.8 編寫clearForm方法 326
11.3.9 編寫addBoat方法 326
11.4 本章小結 335
11.5 複習問題 335
11.6 討論問題 337
11.7 項目 338
第12章 設計多視窗應用程式 339
12.1 導航多個視窗 340
12.1.1 模仿客戶資料庫 340
12.1.2 設計主選單 341
12.2 導航PD關聯關係 347
12.2.1 模仿客戶和船隻資料庫 347
12.2.2 添加客戶和船隻 349
12.2.3 查找客戶和船隻 351
12.3 本章小結 357
12.4 複習問題 357
12.5 討論問題 359
12.6 項目 360
第13章 使用集成開發環境 361
13.1 了解快速套用開發(RAD) 361
13.2 研究IDE的作用和優點 363
13.2.1 介紹程式管理工具的優點 364
13.2.2 介紹源編輯器的好處 364
13.2.3 介紹GUI編輯器的好處 365
13.2.4 介紹編譯和執行工具的好處 365
13.2.5 介紹調試工具的好處 365
13.2.6 介紹文檔生成器的好處 366
13.3 安裝Forte IDE 366
13.4 了解Forte基礎知識-- 快速教程 366
13.4.1 主視窗 368
13.4.2 工作區 368
13.5 使用Forte創建簡單的GUI程式 372
13.5.1 為示例程式創建新檔案 372
13.5.2 為示例程式設計窗體 375
13.5.3 使示例程式中的按鈕工作 379
13.5.4 編譯和執行示例程式 380
13.5.5 檢查GUI Editor生成的代碼 381
13.6 將Forte用於Bradshaw Marina GUI 應用程式 381
13.6.1 為Bradshaw Marina GUI應用程式創建項目 382
13.6.2 為Bradshaw Marina GUI應用程式創建新檔案 382
13.6.3 為Bradshaw Marina GUI應用程式設計窗體 382
13.6.4 使Bradshaw Marina GUI應用程式中的按鈕工作 385
13.6.5 編譯和執行Bradshaw Marina GUI應用程式 387
13.7 使用調試器 388
13.7.1 調試器入門 388
13.7.2 設定斷點和構建watch變數 389
13.7.3 查找和更正程式錯誤 391
13.7.4 單步調試程式 393
13.7.5 研究其他的調試器選項 394
13.8 生成Javadoc文檔 395
13.9 本章小結 397
13.10 複習問題 398
13.11 討論問題 398
13.12 項目 399
第Ⅳ部分 定義數據存取類
第14章 設計數據存取類 400
14.1 使對象持久性 400
14.2 設計數據存取類 401
14.3 與數據存取類通信 403
14.3.1 查找客戶 403
14.3.2 添加客戶 404
14.3.3 更改客戶 404
14.3.4 刪除客戶 404
14.3.5 附加的問題域方法 404
14.4 了解Java I/O 405
14.4.1 使用順序檔案實現持久性 406
14.4.2 為實現順序檔案而測試CustomerDA 411
14.4.3 使用隨機存取檔案實現持久性 415
14.4.4 使用對象串列化實現持久性 417
14.5 設計關係資料庫 419
14.5.1 結構化查詢語言(SQL) 420
14.5.2 java.sql程式包 421
14.5.3 使用資料庫實現持久性 421
14.5.4 為資料庫實現而測試CustomerDA 427
14.6 本章小結 428
14.7 複習問題 428
14.8 討論問題 430
14.9 項目 431
第15章 創建更加複雜的資料庫應用程式 432
15.1 在資料庫應用程式中實現一對一的關係 432
15.1.1 了解CustomerAndBoatDatabase中的表 433
15.1.2 使用SQL連線資料庫中的表 436
15.1.3 建立到CustomerAndBoatDatabase的公用連線 437
15.1.4 修改客戶問題域類 438
15.1.5 介紹BoatDA類 439
15.1.6 修改Boat類以協同使用BoatDA 445
15.1.7 修改CustomerDA類 447
15.1.8 測試新的CustomerAndBoatDatabase應用程式 451
15.2 在資料庫應用程式中實現一對多的關係 458
15.2.1 了解DockAndSlipDatabase中的表 458
15.2.2 建立到DockAndSlipDatabase的通用連線 459
15.2.3 修改Dock和Slip類 459
15.2.4 介紹DockDA類 461
15.2.5 測試DockAndSlipDatabase應用程式 467
15.3 在資料庫應用程式中實現關聯類 469
15.3.1 了解CustomerLeaseSlipDatabase中的表 469
15.3.2 建立到CustomerLeaseSlipDatabase的連線 470
15.3.3 修改Customer類 471
15.3.4 修改Lease和AnnualLease類 472
15.3.5 修改Slip類 476
15.3.6 介紹SlipDA類 478
15.3.7 介紹AnnualLeaseDA類 479
15.3.8 測試CustomerLeaseSlipDatabase應用程式 484
15.4 本章小結 486
15.5 複習問題 487
15.6 討論問題 487
15.7 項目 488
第Ⅴ部分 部署三層應用程式
第16章 合併三層:GUI類、問題域類 和數據存取類 489
16.1 三層設計 489
16.2 合併一個GUI、一個PD類和一個DA類 492
16.2.1 第11章和第12章中的Customer類 493
16.2.2 第14章中的Customer類 494
16.2.3 查看CustomerDA類 496
16.2.4 更新FindCustomer GUI 502
16.3 使用多個GUI並向資料庫添加實例 507
16.3.1 查看MainMenu GUI 508
16.3.2 查看AddCustomer GUI 510
16.3.3 為Example 2更新FindCustomer GUI 515
16.4 協同使用GUI和多個問題域類 516
16.4.1 查看具有關聯關係的Boat和Customer類 517
16.4.2 修改CustomerDA類以關聯Boat 519
16.4.3 介紹FindCustomerAndBoat GUI 521
16.5 本章小結 525
16.6 複習問題 525
16.7 討論問題 526
16.8 項目 526
第17章 在Web上部署Java應用程式 528
17.1 計算的客戶-伺服器模型 528
17.1.1 介紹典型的客戶-伺服器交換機制 529
17.1.2 創建用戶接口:瘦客戶應用程式 530
17.2 研究HTML:一個簡單示例 530
17.2.1 使用HTML標記 530
17.2.2 使用HTML創建輸入窗體 532
17.3 編寫處理窗體的servlet 533
17.4 安裝JavaServer Web Development Kit(JSWDK) 537
17.4.1 為示例Web應用程式組織檔案 538
17.4.2 安裝示例程式 539
17.4.3 編譯示例程式 539
17.4.4 在Java WebServer上運行示例程式 540
17.5 使用JavaScript驗證HTML輸入窗體 540
17.6 為Bradshaw Marina開發Web應用程式 544
17.6.1 修改Bradshaw Marina PD類和DA類 547
17.6.2 使用HTML創建歡迎頁面 547
17.6.3 使用HTML創建登錄頁 549
17.6.4 編寫一個servlet完成登錄請求 550
17.6.5 介紹Java Server Page 554
17.6.6 使用Java Server Page返回動態內容 554
17.6.7 使用servlet更新Bradshaw Marina資料庫 556
17.6.8 使用Java Server Page完成應用程式 558
17.7 探究Web應用程式開發的其他技術 563
17.8 本章小結 564
17.9 複習問題 565
17.10 討論問題 565
17.11 項目 566
術語表 567