第一部分 引言 1
第1章 面向對象的含義 3
1.1 封裝 7
1.2 信息/實現隱藏 9
1.3 狀態(tài)保持 11
1.4 對象標識 11
1.5 消息 14
1.5.1 消息結構 15
1.5.2 消息參數 15
1.5.3 消息中的對象角色 17
1.5.4 消息的類型 18
1.6 類 19
1.7 繼承 23
1.8 多態(tài)性 27
1.9 一般性 30
1.10 本章小結 34
1.11 習題 35
1.12 答案 36
第2章 面向對象簡史 40
2.1 面向對象的起源 40
2.1.1 Larry Constantine 40
2.1.2 O.-J. Dahl 和K.Nygaard 40
2.1.3 Alan Kay, Adele Goldberg等人 41
2.1.4 Edsger Dijkstra 41
2.1.5 Barbara Liskov 41
2.1.6 David Parnas 41
2.1.7 Jean Ichbiah 等人 41
2.1.8 Bjarne Stroustrup 41
2.1.9 Bertrand Meyer 42
2.1.10 Grady Booch, Ivar Jacobson及Jim Rumbaugh 42
2.2 面向對象的成熟期 42
2.3 類似工程學的面向對象 43
2.4 面向對象的益處 44
2.4.1 用戶需求分析 45
2.4.2 軟件設計 45
2.4.3 軟件構造 46
2.4.4 軟件維護 47
2.4.5 軟件使用 47
2.4.6 軟件項目管理 48
2.5 本章小結 49
2.6 習題 49
2.7 答案 50
第二部分 統(tǒng)一建模語言(UML) 51
第3章 類. 屬性和操作的基本表示法 56
3.1 類 56
3.2 屬性 57
3.3 操作 58
3.4 重載操作 61
3.5 屬性和操作的可視性 62
3.6 類屬性和類操作 63
3.7 抽象操作和類 63
3.8 實用程序 65
3.9 參數化類 66
3.10 本章小結 67
3.11 習題 68
3.12 答案 68
第4章 類圖 72
4.1 一般化結構 72
4.1.1 單一繼承 72
4.1.2 多重繼承 74
4.1.3 子類的劃分 74
4.1.4 分類識別名稱 76
4.2 關聯(lián)結構 77
4.2.1 關聯(lián)的基本UML表示法 78
4.2.2 關聯(lián)類 80
4.2.3 多向關聯(lián) 81
4.2.4 關聯(lián)的導航 82
4.3 整體/部分關聯(lián) 83
4.3.1 組成 83
4.3.2 聚集 85
4.4 本章小結 88
4.5 習題 89
4.6 答案 90
第5章 對象交互圖 94
5.1 協(xié)同圖 94
5.1.1 描述一個消息 95
5.1.2 協(xié)同圖中的多態(tài)性 97
5.1.3 重復的消息 98
5.1.4 在消息中使用self 98
5.2 時序圖 100
5.3 異步消息及并發(fā)執(zhí)行 102
5.3.1 描述一個異步消息 103
5.3.2 回調機制 104
5.3.3 異步消息的優(yōu)先權 107
5.3.4 描述一個廣播(無目標)消息 108
5.4 本章小結 109
5.5 習題 110
5.6 答案 110
第6章 狀態(tài)圖 112
6.1 基本狀態(tài)圖 112
6.2 嵌套狀態(tài) 114
6.3 并發(fā)狀態(tài)和同步 117
6.4 消息結果參數的瞬時狀態(tài) 121
6.5 連續(xù)的. 可變的屬性 122
6.6 本章小結 124
6.7 習題 125
6.8 答案 126
第7章 體系結構和接口圖 130
7.1 描述系統(tǒng)體系結構 130
7.1.1 包 130
7.1.2 硬件環(huán)境的配置圖 132
7.1.3 軟件結構的配置圖 133
7.2 人機界面的描述 135
7.2.1 窗口布局圖 136
7.2.2 窗口導航圖 137
7.2.3 題外話:什么是面向對象的GUI 139
7.3 本章小結 139
7.4 習題 140
7.5 答案 140
第三部分 面向對象設計的原則 143
第8章 封裝與共生性(connascence) 144
8.1 封裝結構 144
8.1.1 封裝的級別 144
8.1.2 制定標準管理各個封裝級別之間的相互作用 146
8.2 共生性(connascence) 147
8.2.1 共生性的種類 147
8.2.2 差異共生性(contranascence) 150
8.2.3 共生性和封裝邊界 151
8.2.4 共生性和可維護性 152
8.2.5 面向對象系統(tǒng)中共生性的濫用 154
8.2.6 共生性(connascence)的術語 156
8.3 本章小結 156
8.4 習題 157
8.5 答案 158
第9章 領域. 依附集和內聚 160
9.1 對象類的領域 160
9.1.1 基礎領域 161
9.1.2 結構領域 161
9.1.3 商業(yè)領域 162
9.1.4 應用領域 163
9.1.5 每一領域類的來源 163
9.2 依附集(encum brance) 165
9.2.1 什么是依附集(encumbrance) 165
9.2.2 依附集的使用 167
9.2.3 Demeter規(guī)則 168
9.3 類的內聚(Class Cohesion):一個類和它的特性 169
9.3.1 混合事例型內聚 170
9.3.2 混合領域型內聚 171
9.3.3 混合角色型內聚 172
9.4 本章小結 173
9.5 習題 174
9.6 答案 175
第10章 狀態(tài)空間和行為 178
10.1 一個類的狀態(tài)空間和行為 178
10.2 子類的狀態(tài)空間 181
10.3 子類的行為 183
10.4 狀態(tài)空間的一個約束條件:類的不變式 184
10.5 前置條件和后置條件 186
10.6 本章小結 188
10.7 習題 189
10.8 答案 189
第11章 類型一致性與閉合行為 192
11.1 類與類型 192
11.2 類型一致性原則 194
11.2.1 抗變性與協(xié)變性原則 195
11.2.2 抗變性與協(xié)變性實例 195
11.2.3 圖解抗變性與協(xié)變性 199
11.2.4 類型一致性必要條件綜述 200
11.3 閉合行為(Closed Behavior)原則 201
11.4 本章小結 202
11.5 習題 203
11.6 答案 204
第12章 繼承與多態(tài)性的危險性 207
12.1 繼承的濫用 207
12.1.1 錯誤的聚集 207
12.1.2 倒置的層次結構 208
12.1.3 混淆類及其實例 209
12.1.4 誤用 212
12.2 多態(tài)性的危險性 215
12.2.1 操作的多態(tài)性 215
12.2.2 變量的多態(tài)性 217
12.2.3 消息中的多態(tài)性 218
12.2.4 多態(tài)性與一般性 220
12.3 本章小結 221
12.4 習題 222
12.5 答案 223
第13章 組織操作技術 227
13.1 混合類 227
13.1.1 商務舉例 227
13.1.2 圖形舉例 231
13.2 操作環(huán) 234
13.3 本章小結 238
13.4 習題 238
13.5 答案 239
第14章 類的聚合及其所支持的狀態(tài)和行為 242
14.1 類接口中支持的狀態(tài) 242
14.2 類接口中支持的行為 243
14.3 類接口中操作的聚合 248
14.4 本章小結 250
14.5 習題 251
14.6 答案 254
第15章 設計軟件構件 259
15.1 什么是構件 259
15.2 構件與對象的相似性和區(qū)別 260
15.3 構件舉例 262
15.4 構件的內部設計 267
15.5 輕量和重量構件 272
15.6 使用構件的優(yōu)點和缺點 274
15.7 本章小結 277
15.8 習題 278
15.9 答案 278
附錄A 面向對象設計檢查(Walkthrough)列表 280
附錄B 面向對象設計者手冊 284
附錄C 面向對象術語快速指南 288
詞匯表 289
參考文獻 306