《高等學(xué)校教材·計算機科學(xué)與技術(shù):Java面向?qū)ο蟪绦蛟O(shè)計(第2版)》的內(nèi)容大體可分為三個部分。第1章~第7章為第一部分,著重介紹Java面向?qū)ο蟮幕局R點,主要有Java的基本環(huán)境、Java語言基礎(chǔ)、Java工程規(guī)范、面向?qū)ο蠡靖拍、基本特征、概念深化、異常處理等,讀者通過這部分的學(xué)習(xí)可以用Java語言建立起面向?qū)ο笏季S的能力,其中第4章~第6章是本部分的重點;第8章~第16章為第二部分,著重介紹Java語言的應(yīng)用,主要有Java常用類庫與工具、線程、集合類框架、AWT與Swing圖形用戶界面、輸入/輸出、網(wǎng)絡(luò)通信、JDBC,讀者通過這部分的學(xué)習(xí)可以了解Java工程應(yīng)用的基礎(chǔ)知識,其中第8章~第10章以及第14章、第16章是本部分的重點;第17章~第20章為第三部分,著重介紹Java軟件體系結(jié)構(gòu)設(shè)計,主要有UML、設(shè)計模式、軟件框架和分布式對象技術(shù),讀者通過這部分可以掌握和了解進行軟件結(jié)構(gòu)設(shè)計時需要用到的模型表達方式、設(shè)計思想、框架編程思維和分布式軟件設(shè)計的主要方法。
這三部分的內(nèi)容,囊括了Java語言和Java軟件結(jié)構(gòu)設(shè)計的主要知識點,豐富了Java面向?qū)ο蟪绦蛟O(shè)計的內(nèi)涵,可由淺入深、循序漸進地帶領(lǐng)讀者進入Java面向?qū)ο蟪绦蛟O(shè)計的藝術(shù)殿堂。
突出軟件設(shè)計各要點間的關(guān)聯(lián)性。以UML表達設(shè)計,以設(shè)計模式蘊含設(shè)計思想,以軟件框架表達軟件設(shè)計的基礎(chǔ),以分布式對象技術(shù)體現(xiàn)軟件系統(tǒng)的設(shè)計架構(gòu),這四個方面是進行軟件設(shè)計不可分割的有機組成要素。 軟件設(shè)計與代碼實現(xiàn)緊密結(jié)合。針對當前很多軟件教材普遍存在的軟件設(shè)計缺乏實現(xiàn)代碼支撐而編程語言缺乏設(shè)計指導(dǎo)這一問題,本書加強了它們之間的聯(lián)系并使二者相輔相成。用圖形表達抽象的概念。圖形具有信息容量大且清晰直觀的特點,用圖形表達抽象的軟件概念有助于引起讀者的興趣,提升他們理解的準確度和記憶的持久性。 對Java與C++兩種語言進行對比。雖然Java與C++都是面向?qū)ο蟮恼Z言,但許多類似的概念在語言的實現(xiàn)中卻迥然不同。對這些不同進行對比有助于讀者深化對這兩種語言的理解,避免混淆。注重細節(jié)。本書特別強調(diào)語言和設(shè)計的細節(jié),這也是由計算機軟件實踐性很強這個特點決定的。
具備什么樣的知識與技能才算是具有面向?qū)ο蟪绦蛟O(shè)計的能力呢?顯然只掌握面向?qū)ο蟮恼Z言是遠遠不夠的,至少還需要掌握UML、設(shè)計模式、軟件框架、分布式對象技術(shù)才行。如果將面向?qū)ο蟪绦蛟O(shè)計看成一個有機整體,那么語言是細胞,UML是血液,設(shè)計模式是神經(jīng),軟件框架是骨架,分布式對象技術(shù)是器官和組織。也就是說,知識的理解應(yīng)該彼此滲透。正是基于這樣的理念,本書在第1版的基礎(chǔ)上擴充出了軟件設(shè)計理論的相關(guān)內(nèi)容,同時也對Java語言學(xué)習(xí)內(nèi)容進行了一些必要的調(diào)整,從而形成了如下三個特點:
(1) 軟件設(shè)計知識的彼此貫通: Java編程語言、UML、設(shè)計模式、軟件框架、分布式對象技術(shù)5個方面通常會以5本教材的形式出現(xiàn),這樣很容易就割裂它們的內(nèi)在聯(lián)系。沒有面向?qū)ο缶幊陶Z言作為基礎(chǔ),面向?qū)ο笤O(shè)計就沒有根基; 而只有編程語言沒有設(shè)計,則程序?qū)ワL(fēng)景和藝術(shù)感染力。設(shè)計的知識基礎(chǔ)是UML,設(shè)計模式那深邃的思想再也找不到比UML更好的表達形式了,而將設(shè)計模式用得爐火純青之處正是框架和中間件,離了框架和中間件的支持,在業(yè)界應(yīng)用廣泛的分布式設(shè)計與編程則寸步難行。因此將它們集成在一本書中講述,將會給讀者關(guān)于軟件設(shè)計的一個全景認識,因而本書適合作為大專院校的Java語言、UML、軟件體系結(jié)構(gòu)設(shè)計等課程的教學(xué)用書。
。2) 軟件設(shè)計知識講解的深入淺出: 集“全景認識”于有限篇幅,對設(shè)計知識就不得不進行濃縮,因而不要把本書當成手冊來看待,如果進行深入的學(xué)習(xí)還需參考相關(guān)書籍,但這并不意味著本書在設(shè)計內(nèi)涵的完整性和深刻性方面打了折扣。秉承第1版的一貫風(fēng)格,本書第2版仍然采用圖的方式來展現(xiàn)設(shè)計的深刻內(nèi)涵。
。3) Java語言面向?qū)ο笤O(shè)計學(xué)習(xí)的深入性: 語言具有規(guī)則學(xué)習(xí)和規(guī)則運用兩個層次,規(guī)則學(xué)習(xí)主要表現(xiàn)在本書的第1章~第16章,而規(guī)則運用則表現(xiàn)在第17章~第20章,F(xiàn)在多數(shù)Java程序設(shè)計教材都停留在規(guī)則學(xué)習(xí)階段,對運用鮮有提及。因而選用本書作為有限學(xué)時的Java語言教學(xué)時,可留給教師和學(xué)生進一步的應(yīng)用發(fā)展空間,而選用本書講授軟件設(shè)計時,前16章的Java語言部分以及后4章的設(shè)計案例又可作為堅實的支撐材料——將設(shè)計與實際編程緊密結(jié)合是本書編撰始終堅持的一個重要原則。同時照顧到一些學(xué)校先學(xué)C++后學(xué)Java的教學(xué)安排,書中在許多關(guān)鍵之處將Java和C++進行了對比,以防止兩種語言差異性引起的混淆。
本書第2版得到多人的幫助才得以完成。長安大學(xué)安毅生老師負責了本書第8章~第14章的編撰工作,張少博老師指出了本書第1版中存在的一些不當和錯誤之處。另外,趙祥模老師、葛瑋老師以及清華大學(xué)出版社的編輯給予了一如既往的支持,提出了許多寶貴意見,在此一并表示感謝。
編者
2012年3月于西安
第1章 初次接觸Java
1.1 Java語言——網(wǎng)絡(luò)時代的編程語言
1.1.1 網(wǎng)絡(luò)時代編程問題
1.1.2 問題的解決方法
1.2 Java語言的特點
1.3 Java程序的編譯環(huán)境和執(zhí)行環(huán)境
1.4 第一個Java程序——Hello World
1.5 Java程序的分類
1.6 Java平臺
小結(jié)
習(xí)題
第2章 Java語言基礎(chǔ)
2.1 數(shù)據(jù)類型
2.1.1 標識符和保留字
2.1.2 數(shù)據(jù)類型概括
2.1.3 基本數(shù)據(jù)類型簡介
2.1.4 數(shù)據(jù)類型轉(zhuǎn)換
2.1.5 基本數(shù)據(jù)類型及其對應(yīng)的包裝類
2.2 表達式
2.2.1 算術(shù)表達式
2.2.2 關(guān)系表達式
2.2.3 邏輯表達式
2.2.4 賦值表達式
2.2.5 條件表達式
2.2.6 運算符優(yōu)先級
2.3 控制語句
2.3.1 分支語句
2.3.2 循環(huán)語句
2.3.3 跳轉(zhuǎn)語句
2.4 數(shù)組
2.4.1 一維數(shù)組
2.4.2 二維數(shù)組
小結(jié)
習(xí)題
第3章 Java程序工程規(guī)范
3.1 為什么要有規(guī)范
3.2 Java程序編程規(guī)范
3.3 幫助文檔的自動生成
小結(jié)
習(xí)題
第4章 面向?qū)ο螅ㄉ希?br>4.1 抽象的含義
4.2 類與對象
4.3 類的域(屬性)與方法(操作)
4.4 對象
4.4.1 對象的創(chuàng)建
4.4.2 對象作為參數(shù)的特點
4.4.3 對象數(shù)組
4.4.4 數(shù)組對象特點及常用方法
4.5 構(gòu)造方法
4.5.1 構(gòu)造方法的概念
4.5.2 構(gòu)造方法的特征
4.5.3 構(gòu)造方法賦值的注意事項
4.5.4 finalize方法與垃圾回收
4.6 類成員屬性和方法的非訪問修飾符
4.6.1 static
4.6.2 abstract
4.6.3 fina1
4.6.4 native修飾的本地方法
4.7 包
小結(jié)
習(xí)題
……
第5章 面向?qū)ο螅ㄖ校?br>第6章 面向?qū)ο螅ㄏ拢?br>第7章 異常
第8章 Java常用類庫與工具
第9章 線程
第10章 集合類
第11章 Applet程序
第12章 AWT圖形用戶界面
第13章 Swing圖形用戶界面
第14章 I/O輸入/輸出
第15章 Hava網(wǎng)絡(luò)通信
第16章 JDBC
第17章 UML簡介
第18章 設(shè)計模式
第19章 軟件框架
第20章 軟件體系結(jié)構(gòu)與分布式對象技術(shù)