本書在軟件工程的大背景下,通過BlueJ這一創新性的開發環境,全面講述了面向對象和Java程序設計的基本知識。
第一部分 面向對象基礎
第1章 對象和類
1.1 對象和類
1.2 創建對象
1.3 調用方法
1.4 參數
1.5 數據類型
1.6 多個實例
1.7 狀態
1.8 對象中的字段和方法
1.9 對象交互
1.10 源代碼
1.11 另一個例子
1.12 返回值
1.13 對象作為參數進行傳遞
小結
關鍵術語
第2章 理解類的定義
2.1 售票機
2.2 檢查類的定義
2.3 字段、構造器和方法
2.3.1 字段
2.3.2 構造器
2.4 通過參數傳遞數據
2.5 賦值
2.6 訪問器方法
2.7 修改器方法
2.8 在方法中打印
2.9 簡易型售票機的總結
2.10 對售票機設計的探討
2.11 做選擇:條件語句
2.12 高級條件語句的例子
2.13 局部變量
2.14 字段、參數和局部變量
2.15 改進型售票機的總結
2.16 自我復習練習題
2.17 回顧一個熟悉的例子
小結
關鍵術語
第3章 對象交互
3.1 時鐘的例子
3.2 抽象與模塊化
3.3 軟件中的抽象
3.4 在時鐘例子里的模塊化
3.5 實現時鐘顯示器
3.6 類圖與對象圖
3.7 基本類型和對象類型
3.8 ClockDisplay的源代碼
3.8.1 NumberDisplay類
3.8.2 字符串拼接
3.8.3 取模運算符
3.8.4 ClockDisplay類
3.9 對象創建對象
3.10 多個構造器
3.11 方法調用
3.11.1 內部方法調用
3.11.2 外部方法調用
3.11.3 時鐘顯示器的總結
3.12 另一個對象交互的例子
3.12.1 郵件系統的例子
3.12.2 this關鍵字
3.13 使用調試器
3.13.1 設置斷點
3.13.2 單步執行
3.13.3 單步進入方法
3.14 方法調用回顧
小結
關鍵術語
第4章 對象集合
4.1 在可變容量的容器中存放對象
4.2 個人記事本
4.3 初涉類庫
4.4 容器的對象結構
4.5 泛型類
4.6 容器內的編號
4.7 從容器中刪除對象
4.8 處理整個容器
4.8.1 for-each循環
4.8.2 while循環
4.8.3 遍歷容器
4.8.4 索引存取與迭代器的比較
4.9 記事本例子的總結
4.10 另一個例子:拍賣系統
4.10.1 Lot類
4.10.2 Auction類
4.10.3 匿名對象
4.10.4 使用容器
4.11 可變容量容器的總結
4.12 固定容量的容器
4.12.1 日志文件分析器
4.12.2 聲明數組變量
4.12.3 創建數組對象
4.12.4 使用數組對象
4.12.5 分析日志文件
4.12.6 for循環
小結
關鍵術語
第5章 高級行為
5.1 類庫的文檔
5.2 TechSupport系統
5.2.1 研究TechSupport系統
5.2.2 閱讀代碼
5.3 閱讀類文檔
5.3.1 接口與實現
5.3.2 使用類庫中的類的方法
5.3.3 檢查字符串是否相等
5.4 增加隨機行為
5.4.1 Random類
5.4.2 在有限范圍內產生隨機數
5.4.3 產生隨機的回答
5.4.4 閱讀參數化的類的文檔
5.5 包和導入
5.6 使用映射表示關聯
5.6.1 映射的概念
5.6.2 使用HashMap
5.6.3 在TechSupport系統中使用映射
5.7 使用集合
5.8 分割字符串
5.9 完成TechSupport系統
5.10 編寫類文檔
5.10.1 在BlueJ中使用javadoc
5.10.2 類文檔的組成
5.11 公共與私有
5.11.1 信息隱藏
5.11.2 私有方法和公共字段
5.12 通過接口研究類
5.13 類變量和常量
5.13.1 static關鍵字
5.13.2 常量
小結
關鍵術語
第6章 使對象正常運行
6.1 引言
6.2 測試和調試
6.3 用BlueJ進行單元測試
6.3.1 使用檢查器
6.3.2 正向測試和反向測試
6.4 測試自動化
6.4.1 回歸測試
6.4.2 自動檢查測試結果
6.4.3 記錄測試
6.4.4 夾具
6.5 模塊化和接口
6.6 調試場景
6.7 注釋與風格
6.8 人工走查
6.8.1 高層次的走查
6.8.2 用走查來檢查狀態
6.8.3 口頭走查
6.9 打印語句
6.10 選擇測試策略
6.11 調試
6.12 在實戰中使用這些技術
小結
關鍵術語
第7章 類的設計
7.1 引言
7.2 world-of-zuul游戲的例子
7.3 耦合和內聚的介紹
7.4 代碼重復
7.5 擴展
7.5.1 任務
7.5.2 找到相關的源代碼
7.6 耦合
7.7 責任驅動的設計
7.8 改動局部化
7.9 隱性耦合
7.10 預見性
7.11 內聚
7.11.1 方法的內聚
7.11.2 類的內聚
7.11.3 內聚對于可讀性的好處
7.11.4 內聚對于重用的好處
7.12 重構
7.12.1 重構與測試
7.12.2 重構的例子
7.13 語言無關的重構
7.13.1 枚舉類型
7.13.2 命令界面的進一步解耦
7.14 設計原則
7.15 脫離BlueJ執行程序
7.15.1 類方法
7.15.2 main方法
7.15.3 類方法的限制
小結
關鍵術語
第二部分 應用程序結構
第8章 通過繼承改進結構
8.1 DoME例子
8.1.1 DoME的類與對象
8.1.2 DoME源代碼
8.1.3 DoME程序的討論
8.2 使用繼承
8.3 繼承層次
8.4 Java的繼承
8.4.1 繼承與訪問權限
8.4.2 繼承與初始化
8.5 DoME:增加另一種媒體類型
8.6 (迄今為止)繼承的優點
8.7 子類型
8.7.1 子類與子類型
8.7.2 子類型與賦值
8.7.3 子類型與參數傳遞
8.7.4 多態變量
8.7.5 換型
8.8 Object類
8.9 自動包裝與包裹類
8.10 容器層次
小結
關鍵術語
第9章 繼承深入
第10章 高級抽象技術
第11章 構造圖形用戶界面程序
第12章 錯誤處理
第13章 應用程序設計
第14章 案例研究
附錄A 使用BlueJ
附錄B Java數據類型
附錄C Java控制結構
附錄D 運算符
附錄E 脫離BlueJ運行Java程序
附錄F 配置BlueJ
附錄G 使用調試器
附錄H JUnit單元測試工具
附錄I javadoc
附錄J 程序風格指南
附錄K 重要的類庫類
索引