第一部分 面向對象系統(tǒng)設計
第1章 簡介 1
1.1 主題與變化 1
1.1.1 對象術語 3
1.1.2 面向對象的計算 4
1.1.3 按契約設計 7
1.2 編程范例 10
1.2.1 過程化程序設計 11
1.2.2 數(shù)據(jù)抽象 12
1.2.3 面向對象編程 12
1.3 面向對象的軟件生命周期 13
1.3.1 需求分析 15
1.3.2 設計 17
1.3.3 實現(xiàn) 18
1.4 超越面向對象嗎 20
1.5 小結 22
習題 23
進一步讀物 23
第2章 習慣用法和模式 24
2.1 多態(tài)性 24
2.1.1 Java中的繼承和委托 25
2.1.2 C++中的多態(tài)性 27
2.1.3 C++中的斷言 28
2.1.4 規(guī)范類的用法 30
2.2 hush的用法 31
2.2.1 句柄/主體用法 34
2.2.2 虛擬自引用 36
2.2.3 動態(tài)角色轉換 37
2.2.4 hush編程的技巧 39
2.3 設計模式的分類 41
2.3.1 創(chuàng)建性模式 42
2.3.2 結構模式 43
2.3.3 行為模式 44
2.4 事件驅動的計算 46
2.4.1 reactor模式 46
2.4.2 抽象事件系統(tǒng) 48
2.5 小結 51
習題 52
進一步讀物 53
第3章 軟件工程的觀點 54
3.1 軟件開發(fā)方法 54
3.1.1 建模 56
3.1.2 需求工程—綜合法 57
3.1.3 分析和設計方法—比較研究 58
3.2 標識對象 60
3.2.1 啟發(fā)式建模 61
3.2.2 分派責任 63
3.2.3 對象角色和交互 65
3.3 契約 66
3.3.1 說明契約化責任 66
3.3.2 契約的求精 69
3.3.3 運行時一致性檢查 71
3.4 形式化方法 71
3.5 小結 72
習題 74
進一步讀物 74
第4章 應用開發(fā) 75
4.1 drawtool應用 75
4.2 設計準則 86
4.2.1 單個類的設計 87
4.2.2 繼承和不變性 87
4.2.3 風格的客觀意義 88
4.3 從規(guī)格說明到現(xiàn)實 90
4.3.1 結構封裝與行為封裝 90
4.3.2 基于模型的規(guī)格說明 91
4.3.3 抽象系統(tǒng)和事件 95
4.4 小結 98
習題 99
進一步讀物 99
第二部分 面向對象的語言和系統(tǒng)
第5章 面向對象程序設計語言 101
5.1 對象范例 101
5.1.1 面向對象語言的分類 103
5.1.2 替代對象模型 105
5.1.3 Lisp, C和Prolog的對象擴展 105
5.1.4 腳本語言—與Java的集成 107
5.2 Smalltalk, Eiffel, C++和Java的比較 108
5.2.1 比較的標準 109
5.2.2 語言特征 110
5.3 面向對象語言的設計維度 113
5.3.1 基于對象與面向對象 113
5.3.2 關于正交化方法—類型擴展 114
5.3.3 多范例語言—邏輯程序設計 116
5.3.4 主動對象—同步Java / C++ 118
5.4 原型-委托與繼承的比較 120
5.4.1 共享的替代形式 120
5.4.2 實現(xiàn)技巧—Self 122
5.5 元級體系結構 123
5.6 小結 125
習題 127
進一步讀物 127
第6章 組件技術 128
6.1 對象與組件 128
6.1.1 定義 128
6.1.2 技術矩陣 129
6.1.3 組件神話 130
6.2 互操作性的標準 131
6.2.1 對象鏈接與嵌入—COM 132
6.2.2 對象請求代理—CORBA 132
6.2.3 持久對象—ODMG 134
6.3 Java平臺—技術革新 136
6.4 一個基于Internet的工作組應用程序 138
6.5 crush—用CORBA擴展hush 139
6.6 小結 148
習題 149
進一步讀物 149
第7章 軟件體系結構 150
7.1 體系結構的元素 150
7.2 實例研究—多媒體特征檢測 152
7.3 交叉邊界 158
7.3.1 嵌入式邏輯—跨范例邊界 159
7.3.2 本機對象—跨語言邊界 160
7.3.3 Java和C++的結合 164
7.4 體系結構的模式與風格 168
7.4.1 從技術到風格 168
7.4.2 實例研究—可視化的角度 169
7.5 交叉平臺開發(fā) 171
7.6 小結 172
習題 173
進一步讀物 174
第三部分 面向對象建模的基礎
第8章 抽象數(shù)據(jù)類型 175
8.1 抽象和類型 175
8.1.1 編程語言中的抽象 175
8.1.2 基本觀點—類型作為約束條件 176
8.1.3 OOP類型的目標 178
8.2 代數(shù)規(guī)范說明 179
8.2.1 特征—生成器和觀察器 180
8.2.2 等式—規(guī)定約束條件 182
8.2.3 初始代數(shù)語義 184
8.2.4 作為代數(shù)的對象 187
8.3 分解—模塊與對象 190
8.3.1 抽象接口 191
8.3.2 表示和實現(xiàn) 192
8.3.3 添加新生成器 194
8.3.4 添加新觀察器 196
8.4 類型與類 198
8.5 小結 201
習題 202
進一步讀物 202
第9章 多態(tài)性 203
9.1 抽象繼承 203
9.2 子類型關系 205
9.2.1 作為集合的類型 205
9.2.2 子類型細化關系 206
9.2.3 作為記錄的對象 208
9.3 多態(tài)性的風格 210
9.4 類型抽象 212
9.4.1 簡單類型演算 214
9.4.2 交叉類型 217
9.4.3 受限多態(tài)性 220
9.5 存在類型—隱藏 223
9.6 自引用 225
9.7 小結 230
習題 232
進一步讀物 232
第10章 行為求精 233
10.1 作為行為的類型 233
10.2 檢驗行為屬性 235
10.2.1 狀態(tài)轉換 235
10.2.2 斷言邏輯 236
10.3 行為概念 238
10.4 作為行為類型的對象 241
10.4.1 抽象和表示 241
10.4.2 對應關系 244
10.5 說明行為組成 246
10.6 小結 250
習題 251
進一步讀物 252
第四部分 面向對象應用框架
第11章 商務處理再設計 253
11.1 商務對象—San Francisco框架 253
11.2 商務處理模型 256
11.2.1 基于邏輯的模型 256
11.2.2 商務處理模擬 257
11.2.3 實例—貸款需求 259
11.3 面向對象模擬 260
11.4 可視化支持 267
11.4.1 有多少用戶, 就有多少視角 268
11.4.2 DIVA—分布式可視化體系結構 269
11.5 從遺留應用中遷移 271
11.6 小結 272
習題 273
進一步讀物 274
第12章 Web應用 275
12.1 對象和Web 275
12.1.1 趨勢和技術 276
12.1.2 Object Web—CORBA/Java與微軟
對抗 278
12.2 Web程序設計— API的探索 280
12.2.1 計算模型 280
12.2.2 智能代理 282
12.3 DejaVU 的經驗—Web上的音樂演奏 284
12.4 軟件體系結構回顧 289
12.5 小結 291
習題 292
進一步讀物 292
附 錄
附錄A Smalltalk語言 293
附錄B Eiffel語言 298
附錄C C++語言 302
附錄D Java語言 309
附錄E DLP語言 315
附錄F 統(tǒng)一建模語言 320
附錄G 接口定義語言—IDL 324
附錄H Hello(CORBA)Universe 327
附錄I 軟件開發(fā)項目 336
附錄J 習題答案 338
參考文獻 345