內容簡介
本書結構新穎、概念清晰、面向套用,體現了作者提出的“程式設計=計算思維+語言藝術+工程方法”的教學思想。全書共分為4篇: 第1篇為面向對象啟步,用4個例子引導讀者逐步建立面向對象的思維方式和培養基本的設計能力,將Java基本語法貫穿其中;第2篇為面向類的程式設計,在介紹了抽象類和接口這兩個基本機制後,用一個故事引入了面向對象程式設計原則,接著用設計模式舉例加深對面向對象結構最佳化必要性的認識,為進一步學習設計模式打下基礎,最後介紹了反射技術;第3篇為基於API的開發,包括網路編程、JDBC、JavaBean、程式文檔化、程式配置和打包與發布;第4篇為Java高級技術,包括泛型編程、多執行緒技術、數據結構和接口。通過這4篇可以達到夯實基礎、面向套用、領略全貌的教學效果,並適應不同層次的教學需求。
本書採用問題體系,具有零起點、快起動、立意新、重內涵的特點,可作為高等學校有關專業的程式設計課程的教材,也適合培訓和自學。
圖書目錄
第1篇面向對象程式設計啟步
第1單元職員類3
1.1從現實世界中的對象到類模型3
1.1.1程式=模型+表現3
1.1.2現實世界中的對象分析4
1.1.3職員類的UML描述5
1.1.4職員類的Java語言描述5
1.1.5職員類的Java代碼說明6
1.2類的套用與測試8
1.2.1對象引用及其創建8
1.2.2構造器與this()9
1.2.3對象成員的訪問與this11
1.2.4主方法與主類12
1.2.5類檔案與包14
1.3Java程式開發16
1.3.1Java編譯器與Java虛擬機16
1.3.2JDK16
1.3.3Eclipse開發環境18
1.4知識連結24
1.4.1Java語言及其特點24
1.4.2Java數據類型26
1.4.3字面值27
1.4.4基本類型的轉換29
1.4.5Java關鍵字與標識符32
1.4.6流與標準I/O流對象33
1.4.7Java注釋34
習題135
第2單元計算器類38
2.1計算器類的定義38
2.1.1計算器建模38
2.1.2Calculator類的Java描述39
2.2Calculator類的測試39
2.2.1測試數據設計39
2.2.2規避整除風險——Calculator類改進之一40
2.3異常處理——Calculator類改進之二42
2.3.1Java異常處理概述42
2.3.2Java異常處理的基本形式42
2.3.3用throws向上層拋出異常44
2.3.4用throw直接拋出異常45
2.3.5Java提供的主要異常類47
2.4用選擇結構確定計算類型——Calculator類改進之三47
2.4.1用if…else實現calculate()方法47
2.4.2關係操作符49
2.4.3用switch結構實現calculate()方法50
2.5用靜態成員變數存儲中間結果——Calculator類改進之四52
2.5.1靜態成員變數的性質52
2.5.2帶有靜態成員變數的Calculator類定義52
2.6知識連結54
2.6.1Java表達式54
2.6.2靜態方法——類方法55
2.6.3初始化塊與靜態初始化塊57
2.6.4String類60
2.6.5正則表達式61
2.6.6Scanner類64
習題264
第3單元素數序列產生器72
3.1問題描述與對象建模72
3.1.1素數序列產生器建模72
3.1.2getPrimeSequence()方法的基本思路72
3.2使用isPrime()判定素數的PrimeGenerator類的實現73
3.2.1採用while結構的getPrimeSequence()方法73
3.2.2採用do…while結構的getPrimeSequence()方法75
3.2.3採用for結構的getPrimeSequence()方法75
3.2.4重複結構中的continue語句76
3.2.5採用for結構的isPrime()方法76
3.2.6將isPrime()定義為靜態方法77
3.2.7不用isPrime()判定素數的PrimeGenerator類的實現78
3.3知識連結79
3.3.1變數的訪問屬性79
3.3.2變數的作用域79
3.3.3Java數據實體的生命期80
3.3.4基本類型的包裝81
習題383
第4單元撲克遊戲90
4.1數組與撲克牌的表示和存儲90
4.1.1數組的概念90
4.1.2數組的聲明與記憶體分配90
4.1.3數組的初始化92
4.1.4匿名數組93
4.2數組元素的訪問93
4.2.1用普通循環結構訪問數組元素94
4.2.2用增強for遍歷數組元素94
4.3洗牌95
4.3.1隨機數與Random類95
4.3.2洗牌方法設計96
4.3.3含有洗牌方法的撲克遊戲類設計98
4.4撲克的發牌與二維數組99
4.4.1基本的發牌算法99
4.4.2用二維數組表示玩家手中的牌100
4.4.3使用二維數組的發牌方法102
4.4.4含有洗牌、發牌方法的撲克遊戲類設計102
4.5知識連結104
4.5.1數組實用類Arrays104
4.5.2java.util.Vector類105
4.5.3命令行參數107
4.5.4Math類108
習題4109
第2篇面向類的程式設計
第5單元類的繼承115
5.1學生類研究生類層次結構115
5.1.1由Student類派生GradStudent類115
5.1.2super關鍵字 117
5.1.3final關鍵字119
5.2Java的訪問許可權控制119
5.2.1類成員的訪問許可權控制119
5.2.2類的訪問許可權控制120
5.2.3private構造器120
5.3類層次中的類型轉換121
5.3.1類層次中的賦值兼容規則121
5.3.2里氏代換原則122
5.3.3類型轉換與類型測試122
5.4方法覆蓋與隱藏123
5.4.1派生類實例方法覆蓋基類中簽名相同的實例方法123
5.4.2用@Override標註覆蓋124
5.4.3派生類靜態方法隱藏基類中簽名相同的靜態方法126
5.4.4JVM的綁定機制127
5.5知識連結128
5.5.1Object類128
5.5.2@Deprecated與@SuppressWarnings131
5.5.3Java異常類和錯誤類體系135
習題5137
第6單元抽象類與接口145
6.1圓、三角形和矩形145
6.1.13個獨立的類: Circle、Rectangle和Triangle145
6.1.2枚舉147
6.2抽象類148
6.2.1由具體類抽象出抽象類148
6.2.2由抽象類派生出實例類150
6.2.3抽象類小結153
6.3接口153
6.3.1接口及其特點153
6.3.2接口的實現類154
6.3.3關於接口的進一步討論156
6.4知識連結157
6.4.1Java構件修飾符小結157
6.4.2對象克隆158
習題6160
第7單元面向對象程式架構最佳化原則164
7.0引言164
7.1從可重用說起: 合成/聚合優先原則165
7.1.1繼承重用的特點166
7.1.2合成/聚合重用及其特點166
7.1.3合成/聚合優先原則167
7.2從可維護性說起: 開閉原則168
7.2.1軟體的可維護性和可擴展性168
7.2.2開閉原則169
7.3面向抽象的原則170
7.3.1具體與抽象170
7.3.2依賴倒轉原則170
7.3.3面向接口原則170
7.3.4面向接口編程舉例171
7.4單一職責原則175
7.4.1對象的職責175
7.4.2單一職責原則的概念176
7.4.3接口分離原則176
7.5不要和陌生人說話181
7.5.1狹義迪米特法則181
7.5.2廣義迪米特法則182
習題7183
第8單元設計模式186
8.1設計模式概述186
8.2設計模式舉例——訴訟代理問題186
8.2.1無律師的涉訟程式設計186
8.2.2請律師代理的涉訟程式設計187
8.2.3關於代理模式189
8.3設計模式舉例——商場行銷問題190
8.3.1不用策略模式的商場行銷解決方案190
8.3.2策略模式的定義192
8.3.3採用策略模式的商場行銷解決方案193
8.4設計模式舉例——圖形對象的創建問題197
8.4.1簡單工廠模式197
8.4.2工廠方法模式202
8.4.3策略模式與簡單工廠模式結合207
8.5知識連結209
8.5.1類檔案與類載入209
8.5.2Class對象209
8.5.3反射API213
8.5.4使用反射的工廠模式215
8.5.5使用反射+配置檔案的工廠模式216
習題8218
第3篇基於API的套用開發
第9單元Java 網路程式設計223
9.1IP位址與InetAddress類223
9.1.1IP協定與IP位址223
9.1.2InetAddress類223
9.2Java Socket概述225
9.2.1Socket的概念225
9.2.2客戶端/伺服器工作模式225
9.3面向TCP的Java Socket程式設計226
9.3.1Socket類和ServerSocket類226
9.3.2TCP Socket通信過程227
9.3.3TCP Socket程式設計229
9.4面向UDP的Java程式設計232
9.4.1DatagramPacket類233
9.4.2DatagramSocket類233
9.4.3UDP Socket程式設計235
9.5網路資源訪問238
9.5.1URI、URL和URN238
9.5.2URL類239
9.5.3URLConnection類240
9.6知識連結240
9.6.1位元組流與字元流240
9.6.2緩衝流與轉換流245
9.6.3PrintWriter類247
習題9248
第10單元JDBC250
10.1JDBC概述250
10.1.1JDBC的組成與工作過程250
10.1.2JDBC API及其對JDBC過程的支持250
10.2載入JDBC驅動252
10.2.1JDBC資料庫驅動程式的類型252
10.2.2JDBC驅動類名與JDBC驅動程式的下載254
10.2.3DriverManager類254
10.2.4註冊Driver256
10.3連線數據源258
10.3.1數據源描述規則——JDBC URL258
10.3.2獲取Connection對象259
10.3.3連線過程中的異常處理262
10.3.4Connection接口的常用方法262
10.4創建SQL工作空間進行資料庫操作263
10.4.1SQL263
10.4.2創建SQL工作空間265
10.4.3用Statement實例封裝SQL語句265
10.5處理結果集267
10.5.1結果集游標的管理267
10.5.2getXxx()方法267
10.5.3updateXxx()方法268
10.5.4關閉資料庫連線268
10.5.5JDBC資料庫查詢實例268
10.6PreparedStatement接口271
10.6.1用PreparedStatement實例封裝SQL語句的特點271
10.6.2PreparedStatement接口的主要方法271
10.6.3PreparedStatement對象操作SQL語句的步驟272
10.6.4Java日期數據275
10.7事務處理276
10.7.1事務的概念276
10.7.2Connection類中有關事務處理的方法276
10.7.3JDBC事務處理程式的基本結構277
10.8DAO模式279
10.8.1DAO概述279
10.8.2DAO模式的基本結構281
10.8.3DAO程式舉例284
習題10290
第11單元JavaBean292
11.1JavaBean概述292
11.1.1軟體組件與JavaBean292
11.1.2JavaBean結構293
11.1.3JavaBean規範295
11.2開發JavaBean295
11.2.1JavaBean API295
11.2.2JavaBean開發工具296
習題11298
第12單元程式文檔化、程式配置與程式發布300
12.1Javadoc300
12.1.1Javadoc及其結構300
12.1.2Javadoc標籤300
12.1.3Javadoc套用規範302
12.1.4Javadoc命令304
12.2自定義Annotation305
12.2.1Annotation的基本定義格式305
12.2.2向Annotation注入數據306
12.2.3通過反射提取Annotation中的數據307
12.2.4用Annotation+反射設計DAO基類308
12.3Java程式配置314
12.3.1程式配置與程式配置檔案314
12.3.2.properties檔案315
12.3.3XML配置檔案317
12.3.4基於InputStream輸入流的配置檔案的讀取318
12.3.5基於資源綁定的配置檔案的讀取325
12.4Java程式的打包與發布326
12.4.1Java程式的打包與JAR檔案包326
12.4.2manifest檔案326
12.4.3JAR命令329
12.4.4在Eclipse環境中創建可執行JAR包331
12.4.5在MyEclipse環境中創建可執行JAR包333
習題12333
第4篇Java高級技術
第13單元Java泛型編程337
13.1泛型基礎337
13.1.1問題的提出337
13.1.2泛型方法339
13.1.3多泛型類340
13.2泛型語法擴展341
13.2.1泛型通配符341
13.2.2泛型設限342
13.2.3泛型嵌套342
13.3實例——利用泛型和反射機制抽象DAO343
習題13345
第14單元Java多執行緒347
14.1Java多執行緒概述347
14.1.1進程與執行緒347
14.1.2Java執行緒的生命周期348
14.1.3Java多執行緒程式實例: 室友叫醒352
14.1.4執行緒調度與執行緒優先權356
14.1.5知識連結: JVM運行時數據區356
14.2 java.lang.Thread類358
14.2.1Thread類的構造器358
14.2.2Thread類中的優先權別靜態常量359
14.2.3Thread類中影響執行緒狀態的方法359
14.2.4Thread類中的一般方法360
14.2.5Thread類從Object繼承的方法360
14.3多執行緒管理360
14.3.1多執行緒同步共享資源360
14.3.2執行緒死鎖問題362
14.3.3執行緒組362
習題14363
第15單元Java數據結構和接口369
15.1數據的邏輯結構與物理結構369
15.1.1數據的邏輯結構369
15.1.2數據的物理結構370
15.1.3Java數據結構API372
15.2接口及其套用373
15.2.1Collection接口及其方法373
15.2.2List接口及其實現374
15.2.3Set接口及其實現376
15.3聚集的標準輸出378
15.3.1Iterator接口378
15.3.2foreach379
15.4Map接口類及其套用380
15.4.1Map接口的定義與方法380
15.4.2Map.Entry接口380
15.4.3HashMap類和TreeMap類381
習題15383
附錄A符號385
A.1Java主要操作符的優先權和結合性385
A.2Javadoc標籤385
附錄BJava運行時異常類和錯誤類387
B.1RuntimeException類387
B.2Error類388
附錄CJava常用的工具包390
參考文獻391