解析Java程序設計
解析Java程序設計
《解析Java程序設計》旨在通過實例解析的方式全面而深入地介紹Java語言的特點及其面向對象的特性,不但詳細介紹了Java語言本身,而且討論了面向對象的設計思想和編程方法、UML、圖形用戶界面的編程方法、網路和資料庫程序的編程方法、線程的使用等實用開發技術。
全書共分10章,第1、2章是基礎部分,介紹了面向對象的基本概念和相關技術,並對Java語言進行了概述。第3~5章是核心部分,主要介紹Java面向對象技術,圍繞抽象性、封裝性、繼承性、多態性以及I/O、異常等內容由淺入深地展開討論。第6~10章是應用部分,主要介紹運用Java語言及其類庫在J2SE平台下進行圖形用戶界面編程、網路編程、資料庫編程、編寫常用數據結構等內容。
《解析Java程序設計》層次清晰、內容全面、例題豐富、實用性強,全書基礎性和實用性並重。《解析Java程序設計》不僅能使讀者掌握Java語言,而且能夠讓讀者對現實世界中較簡單的問題及其解決方法用計算機語言進行描述。《解析Java程序設計》適合作為大專院校計算機相關專業的教材及自學Java語言的參考書,也可供計算機技術人員參閱。
第Ⅰ部分 Java EE設計模式介紹
第1章 設計模式概覽 3
1.1 何為設計模式 4
1.1.1 如何檢測模式,為何需要模式 6
1.1.2 現實世界中的模式 6
1.2 設計模式基礎 8
1.3 企業模式 8
1.3.1 從Java到企業級Java 9
1.3.2 企業Java模式的出現 10
1.3.3 設計模式與企業模式 11
1.3.4 當傳統設計模式遇到Java EE 12
1.3.5 當模式變成反模式 13
1.4 小結 14
1.5 相關資料 14
第2章 Java EE基礎 17
2.1 多層架構 19
2.2 客戶端層 20
2.3 中間層 21
2.3.1 Web層 21
2.3.2 業務層 22
2.4 EIS層 23
2.5 Java EE伺服器 24
2.6 Java EE Web Profile 25
2.7 Java EE核心原則 25
2.8 約定優於配置 26
2.9 上下文與依賴注入 26
2.10 攔截器 28
2.11 小結 30
2.12 本章練習 30
第Ⅱ部分 實現Java EE設計模式
第3章 門面模式 33
3.1 何為門面 34
3.2 使用普通代碼實現門面模式 36
3.3 使用Java EE實現門面模式 38
3.3.1 使用無狀態Bean實現門面 38
3.3.2 使用有狀態Bean實現門面 41
3.4 何時以及何處該使用門面模式 42
3.5 小結 43
3.6 本章練習 43
3.7 相關資料 43
第4章 單例模式 45
4.1 何為單例? 46
4.1.1 單例模式類圖 47
4.1.2 使用普通代碼實現單例模式 48
4.2 使用Java EE實現單例模式 53
4.2.1 單例Bean 53
4.2.2 在啟動時使用單例 54
4.2.3 確定啟動順序 56
4.2.4 管理併發 59
4.3 何處以及何時該使用單例模式 63
4.4 小結 63
4.5 本章練習 64
4.6 相關資料 65
第5章 依賴注入與CDI 67
5.1 何為依賴注入? 68
5.2 使用普通代碼實現DI 69
5.3 使用Java EE實現DI 73
5.3.1 @Named註解 75
5.3.2 上下文與依賴注入(CDI) 76
5.3.3 CDI與EJB 77
5.3.4 CDI Bean 77
5.3.5 @Inject註解 79
5.3.6 上下文與作用域 79
5.3.7 命名與EL 80
5.3.8 用於Backing JSF的CDI Bean 81
5.3.9 限定符 81
5.3.10 Alternatives 82
5.3.11 Stereotypes 83
5.3.12 通過CDI實現的其他模式 84
5.4 小結 84
5.5 本章練習 85
5.6 相關資料 85
第6章 工廠模式 87
6.1 何為工廠? 88
6.2 工廠方法 89
6.3 抽象工廠 94
6.4 使用Java EE實現工廠模式 96
6.5 何處以及何時該使用工廠模式 110
6.6 小結 111
6.7 本章練習 111
6.8 相關資料 111
第7章 裝飾模式 113
7.1 何為裝飾器? 114
7.2 使用普通代碼實現裝飾模式 116
7.3 使用Java EE實現裝飾模式 121
7.4 何處以及何時該使用裝飾模式 129
7.5 小結 130
7.6 本章練習 130
7.7 相關資料 131
第8章 面向方面編程(攔截器) 133
8.1 何為面向方面編程? 134
8.2 使用普通代碼實現AOP 137
8.3 Java EE中的方面—— 攔截器 140
8.3.1 攔截器生命周期 145
8.3.2 默認級別的攔截器 146
8.3.3 攔截器順序 147
8.3.4 CDI攔截器 150
8.4 何處以及何時該使用攔截器 153
8.5 小結 154
8.6 相關資料 155
第9章 非同步 157
9.1 何為非同步編程 158
9.2 使用普通代碼實現非同步模式 161
9.3 Java EE中的非同步編程 164
9.3.1 非同步Bean 164
9.3.2 非同步Servlet 167
9.4 何處以及何時該使用非同步編程 172
9.5 小結 174
9.6 本章練習 174
9.7 相關資料 175
……
第10章 定時器服務 177
第11章 觀察者模式 193
第12章 數據訪問模式 213
第13章 REST風格的Web Service 229
第14章 模型、視圖與控制器模式 255
第15章 Java EE中的其他模式 271
第Ⅲ部分 總 結
第16章 設計模式:好處、壞處與醜陋之處 291
第1章面向對象技術概述 1
1.1面向對象技術的發展 1
1.2面向對象方法與結構化方法的比較 2
1.2.1現實問題分析 2
1.2.2面向對象方法的優越性 3
1.2.3面向對象與面向過程的不同 4
1.2.4面向對象技術的基本觀點 4
1.3面向對象技術的基本概念 5
1.3.1對象和類 5
1.3.2事件和消息 7
1.4面向對象技術的基本特徵 8
1.4.1抽象性 8
1.4.2封裝性 9
1.4.3繼承性 10
1.4.4多態性 11
1.5面向對象分析與設計簡介 11
1.6面向對象程序設計語言簡介 12
1.7面向對象的UML描述 15
本章小結 17
習題 17
第2章Java語言基礎 18
2.1一個最簡單的Java應用程序 18
2.1.1問題的提出與分析 18
2.1.2main方法的說明 19
2.1.3程序的編譯與運行 20
2.2Java語言編程基礎 20
2.2.1問題的提出與分析 21
2.2.2常量和變數 21
2.2.3基本數據類型 23
2.2.4運算符和表達式 24
2.2.5類型轉換 26
2.2.6問題的解決 28
2.3控制語句 29
2.3.1問題的提出與分析 29
2.3.2選擇語句 29
2.3.3循環語句 35
2.3.4特殊的循環流程式控制制 38
2.4類和對象的創建和使用 42
2.4.1問題的提出與分析 42
2.4.2類的定義 42
2.4.3對象的生成 44
2.4.4對象的使用 45
2.5數組的使用 46
2.5.1問題的提出與分析 47
2.5.2一維數組的創建 47
2.5.3一維數組的使用 48
2.5.4二維數組的創建 49
2.5.5二維數組的使用 50
2.6字元串的使用 51
2.6.1問題的提出與分析 51
2.6.2String類的介紹 52
2.6.3問題的解決 54
2.6.4對象轉化為字元串 56
2.7包 57
2.7.1什麼是包 57
2.7.2包的定義 58
2.7.3包的引用 59
2.7.4常用的Java標準包 59
2.7.5程序結構 60
2.8應用舉例 60
本章小結 63
習題 63
第3章對象與類 66
3.1問題的提出與分析 66
3.2發現對象和類 67
3.3類的設計 68
3.3.1成員變數和方法 68
3.3.2方法的重載 74
3.3.3類的訪問控制 75
3.3.4成員的訪問控制 77
3.4類的構造方法 80
3.4.1成員初始化 80
3.4.2構造方法的重載 81
3.4.3默認構造方法 82
3.4.4this關鍵字 83
3.4.5對象的賦值和比較 84
3.5靜態成員 86
3.5.1靜態成員變數 87
3.5.2靜態成員方法 89
3.6基本的輸入輸出 90
3.7問題的解決 92
本章小結 99
習題 99
第4章繼承和多態 103
4.1問題的提出與分析 103
4.2類的繼承 104
4.2.1子類的定義 104
4.2.2子類的構造方法 106
4.2.3方法的覆蓋和成員變數的隱藏 109
4.2.4子類對象和父類對象間的轉換 112
4.3抽象類和介面 115
4.3.1抽象類的定義 115
4.3.2什麼是介面 117
4.3.3介面的定義 118
4.3.4介面的實現 119
4.4final類和final方法 122
4.5多態 122
4.6問題的實現 127
4.6.1定義商品類層次 127
4.6.2定義職工類層次 129
4.6.3商品列表類的實現 131
4.6.4顧客類層次的實現 133
4.6.5銷售事件類和銷售事件列表類的實現 134
4.6.6類層次功能的測試 136
4.6.7功能的進一步擴充 137
本章小結 137
習題 138
第5章輸入輸出流和異常 141
5.1問題的提出與分析 141
5.2輸入輸出流 143
5.2.1流的概念 143
5.2.2輸入輸出流類層次 144
5.2.3位元組流 151
5.2.4字元流 157
5.3異常 160
5.3.1異常的概念 161
5.3.2異常的類層次 162
5.3.3捕獲及處理異常 164
5.3.4自定義異常 168
5.3.5聲明異常和拋出異常 169
5.4問題的實現 170
本章小結 175
習題 175
第6章圖形用戶界面設計 178
6.1問題的提出與分析 178
6.2創建圖形用戶界面 180
6.2.1AWT與Swing概述 180
6.2.2容器與組件 180
6.2.3布局管理器 188
6.3事件處理 190
6.3.1JDK的事件處理模型 190
6.3.2事件監聽器 191
6.3.3事件適配器 194
6.3.4內部類 194
6.4繪製圖形 195
6.5問題的實現 196
6.5.1界面框架的實現 197
6.5.2滑鼠事件的響應及圖形畫筆粗細設置 202
6.5.3圖形的保存 205
本章小結 207
習題 208
第7章網路編程 211
7.1問題的提出與分析 211
7.2網路的基本概念 212
7.2.1TCP/IP簡介 212
7.2.2Socket介面 214
7.2.3客戶端/伺服器模式 215
7.3流套接字編程 215
7.3.1伺服器端程序的實現 216
7.3.2客戶端程序的實現 219
7.3.3編程模型的總結 221
7.4數據報套接字技術 222
7.4.1伺服器端程序的實現 223
7.4.2客戶端程序的實現 225
7.4.3編程模型的總結 226
7.5線程 227
7.5.1線程的概念 227
7.5.2線程的創建 228
7.5.3線程的控制 230
7.5.4流套接字多線程伺服器的實現 231
7.5.5數據報套接字多線程伺服器的實現 233
7.5.6線程的同步 235
本章小結 238
習題 238
第8章Applet 240
8.1問題的提出與分析 240
8.2Applet簡介 241
8.2.1什麼是Applet 241
8.2.2一個簡單的Applet程序 242
8.3Applet的生命周期 244
8.4其他常用的方法 247
8.5Applet的運行 251
8.5.1HTML與Applet 251
8.5.2在瀏覽器中運行Applet程序 252
8.5.3在appletviewer中運行Applet程序 253
8.5.4運行Applet的安全性 254
8.6問題的實現 254
8.6.1定義Applet的派生類 254
8.6.2實現Applet周期中的方法 255
8.6.3線程的實現 257
8.6.4paint方法的實現 258
8.6.5滑鼠事件處理 259
本章小結 262
習題 262
第9章JDBC與資料庫 265
9.1問題的提出與分析 265
9.2資料庫基礎 266
9.2.1資料庫簡介 267
9.2.2關係資料庫 267
9.2.3SQL簡介 268
9.3JDBC簡介 270
9.3.1引入JDBC的背景及其驅動模型 271
9.3.2通過JDBC連接資料庫 272
9.4問題的實現 275
9.4.1建立資料庫 275
9.4.2連接資料庫 275
9.4.3資料庫操作 277
本章小結 285
習題 285
第10章常用數據結構的實現 287
10.1數據結構簡介 287
10.2單鏈表 287
10.2.1單鏈表的實現 288
10.2.2單鏈表的應用(約瑟夫問題的求解) 294
10.3棧 295
10.3.1棧的實現 296
10.3.2棧的應用(數的進位的轉換) 297
10.4隊列 298
10.4.1隊列的實現 298
10.4.2隊列的應用(列印楊輝三角形) 299
本章小結 301
習題 301
附錄AJava語法摘要 302
A.1詞法規則 302
A.2數據類型 304
A.3運算符 305
A.4表達式 306
A.5語句 307
A.6與OOP有關的關鍵字 309
A.7與OOP有關的語法 310
A.8JDK1.5增強語法 314
A.9異常 318
附錄BJava標準包介紹 320
B.1包的定義 320
B.2包的引用 320
B.3標準包列表 321
B.4常用包的介紹 322
附錄CJDK使用介紹 332
C.1安裝與設置 332
C.2JDK實用程序工具庫簡介 333
C.3編譯 333
C.4運行Application 335
C.5運行Applet 336
附錄D常用開發工具介紹 338
D.1Eclipse簡介 338
D.2JBuilder簡介 343
附錄EUML簡介 351
E.1UML概述 351
E.2模型元素的圖形表示及其解釋 352
E.3常用的UML圖 358
E.4UML中的四種關係 360
參考文獻 362