圖書簡介
本書以Java為教學語言,介紹面向對象編程和算法的基本原理。本書採用對象優先的教學策略,將Plato法則、Liskov原則和Parnas原則作為面向對象編程範式的基石,關注軟體開發的兩大核心議題: 程式的組織(面向對象技術)和問題求解(算法)。
對於將Java作為大學本科入門語言的高等院校,尤其是銳意課程體系和教學模式改革的重點院校,本書是計算學科相關專業的本科生學習程式設計基礎、Java程式設計、面向對象程式設計與CS101的理想教材和參考書; 對於軟體開發人員,本書也是很好的參考資料。
圖書目錄
第0章引言
0.1編程與計算機科學
0.1.1計算簡史*
0.1.2二進制補碼
0.1.3計算機硬體
0.1.4計算機科學
0.1.5問題求解
0.2程式語言
0.2.1指令和彙編語言
0.2.2操作符和運算元
0.2.3高級語言的編譯與解釋
0.3Java程式語言
0.3.1Java簡介
0.3.2JDK
0.3.3BlueJ與Java開發環境
第1章面向對象編程範式
1.1計算就是模擬
1.1.1問題域和解域
1.1.2顛倒的世界(柏拉圖法則)
1.1.3面向對象
1.2類
1.2.1類體結構
1.2.2空白與注釋
1.2.35種Java元素
1.2.4語法、語意和約定
1.2.5案例: 分數
1.3靜態成員
1.3.1靜態變數和命名常量
1.3.2靜態變數的初始化
1.3.3靜態方法
1.3.4Math和tips. Print
1.4編程範式
1.4.1範式
1.4.2命令式編程範式
1.4.3函式式編程範式*
第2章類層次
2.1子類型
2.1.1里氏替換原則
2.1.2啊,我看到了多態
2.1.3改寫
2.1.4訪問修飾符與繼承
2.1.5final方法和final類
2.2數據類型
2.2.1類型系統*
2.2.2Java數據類型
2.2.3變數的聲明模型
2.2.4類型轉換
2.3構造器
2.3.1重載
2.3.2方法同名問題
2.3.3無參數構造器和初始化塊
2.3.4創建對象
2.3.5super與this
2.3.6構造器不是方法
2.4引用
2.4.1引用的含義
2.4.2引用變數、引用和對象
2.4.3final變數和不變類
第3章功能抽象
3.1功能抽象的演化
3.1.1三種結構、Java語句
3.1.2方法
3.1.3接口與實現分離
3.1.4抽象方法
3.2實現
3.2.1表達式語句
3.2.2操作符
3.2.3if語句
3.2.4循環語句
3.2.5break,continue與標號
3.2.6switch語句與enum*
3.3訊息傳遞機制
3.3.1訊息接收者
3.3.2按值傳遞語義
第4章數據抽象
4.1數據抽象的含義
4.1.1基本類型的實現
4.1.2類的接口
4.1.3String
4.2抽象類
4.2.1不能夠實例化的類
4.2.2子類的占位符
4.2.3接口繼承 Vs. 實現繼承
4.3Java接口
4.3.1接口與實現類
4.3.2多重繼承問題
4.4依賴於抽象類型
4.4.1開放封閉原則
4.4.2創建對象的技術
4.4.3啟發式條例
第5章鍊表、數組和棧
5.1線性表
5.1.1ADT線性表
5.1.2針對LinearList編程
5.1.3算法和編碼
5.2案例: 單向鍊表
5.2.1結點
5.2.2SinglyLinkedList類
5.2.3疊代器
5.2.4for...each語句
5.3數組
5.3.1數組基礎
5.3.2MyArrayList類
5.3.3對象數組
5.3.4數組的數組
5.3.5案例: 生命遊戲
5.4Java泛型
5.4.1Java泛型基礎
5.4.2協變性
5.4.3泛型方法
5.4.4正確使用Java泛型
5.5棧
5.5.1MyStack與實現
5.5.2棧的套用
第6章封裝
6.1封裝性
6.1.1信息隱藏
6.1.2封裝與數據抽象
6.2包
6.2.1命名空間
6.2.2類路徑和第三方包
6.2.3包級私有
6.3private修飾符
6.3.1private
6.3.2域的繼承和隱藏
6.4protected修飾符
6.4.1正確訪問protected成員
6.4.2protected的語意
6.5public修飾符
6.6依賴
6.6.1繼承是白箱復用
6.6.2聚合與組合
6.6.3使用關係
第7章Java虛擬機相關
7.1類載入
7.1.1裝載
7.1.2連線和初始化
7.1.3自定義類裝載器*
7.2位元組碼檔案*
7.2.1class檔案的結構
7.2.2常量池表
7.3反射機制*
7.3.1Class <T>類
7.3.2域和方法的反射
7.3.3Constructor類和創建對象
7.4運行時存儲管理
7.4.1存儲管理策略
7.4.2方法區
7.4.3堆上的對象
7.4.4String對象問題
7.4.5Java棧
7.5垃圾回收*
7.5.1GC是軟體工程工具
7.5.2finalize()
7.5.3與GC互動
第8章異常與斷言
8.1Throwable家族
8.1.1異常的概念
8.1.2Error和Exception
8.1.3拋出異常
8.1.4自定義異常類
8.2捕獲和處理
8.2.1try和catch子句
8.2.2finally子句
8.3斷言
8.3.1斷言的語義和語法
8.3.2斷言的使用指南
第9章圖形與事件驅動編程
9.1applet
9.1.1applet的生命周期
9.1.2Applet類的繪製方法
9.1.3執行緒的生命周期
9.2Java 2D
9.2.1圖形的建模
9.2.2渲染引擎Graphics2D
9.2.3案例: M集
9.3事件驅動編程
9.3.1回調
9.3.2基於委託的模型
9.3.3滑鼠事件的處理
9.3.4鍵盤事件的處理
9.4嵌套類型
9.4.1總覽嵌套類型
9.4.2靜態成員類
9.4.3內部類
9.4.4局部類
9.4.5匿名類
9.5案例: GoL
第10章算法基礎
10.1算法與問題求解
10.1.1算法
10.1.2算法的分類
10.2時間複雜度
10.2.1簡化
10.2.2常見時間複雜度
10.3遞歸思維
10.3.1遞歸的概念
10.3.2案例: 漢諾塔問題
10.4分而治之
10.4.1案例: 合併排序
10.4.2簡單的查找算法
10.5回溯算法*
10.5.1案例: 走迷宮
10.5.2案例: N皇后問題
第11章排序
11.1說明
11.2選擇式排序
11.2.1選擇排序
11.2.2堆排序*
11.3插入式排序
11.3.1插入排序
11.3.2折半插入排序
11.3.3兩路插入排序*
11.3.4Shell排序
11.4交換式排序
11.4.1冒泡排序
11.4.2快速排序
11.4.3JDK中的快速排序*
11.5案例: 插入排序動畫演示
11.5.1Group
11.5.2InsSortDemo
第12章位運算
12.1基本位運算
12.1.1位邏輯運算符
12.1.2移位運算符
12.2位標記操作*
12.2.1位域處理
12.2.2BitSet
附錄
附錄A使用BlueJ
A.0BlueJ與JDK
A.1基本操作
A.2與類、對象互動
A.3斷點與調試器
附錄B知識單元與章節映射表
附錄C推薦閱讀