本書系統(tǒng)講解了面向?qū)ο蠓椒ǖ幕靖拍,統(tǒng)一建模語言的概念、結(jié)構(gòu)和建模方法,對象約束語言(OCL)基礎(chǔ)知識和使用方法,還詳細介紹了業(yè)務(wù)建模方面的基礎(chǔ)知識,包括業(yè)務(wù)、業(yè)務(wù)規(guī)則、業(yè)務(wù)模型及其構(gòu)成要素的概念以及業(yè)務(wù)建模的方法。
本書詳細介紹了各種標準UML模型的概念、構(gòu)成元素、使用規(guī)則和建模方法,這些標準模型包括:用例模型、類圖模型、順序圖、通信圖、狀態(tài)圖、活動圖、構(gòu)件圖和部署圖等。同時,還概要介紹了UML 2.0中新增加的一些模型及其建模方法,如復合結(jié)構(gòu)圖、交互概覽圖和時序圖等模型。
本書還介紹了設(shè)計模式的基礎(chǔ)知識和基本理論,概要介紹了每種設(shè)計模式的定義、結(jié)構(gòu)、適用情形和主要特點。
*后,本書還提供了若干帶有全部實現(xiàn)的軟件設(shè)計案例,能夠更加直觀、有效地幫助讀者理解面向?qū)ο蠓椒ㄖ械母鞣N抽象概念、設(shè)計原則、建模方法和建模過程。
本書適合作為高等院校軟件工程及相關(guān)專業(yè)的本科生或研究生教材,也可以作為從事軟件開發(fā)工作和學習面向?qū)ο蠓椒ǖ淖x者的參考資料。
目 錄
前言
第1章 面向?qū)ο箝_發(fā)方法1
1.1 對象及對象模型1
1.1.1 對象的基本概念1
1.1.2 對象模型的構(gòu)成要素5
1.1.3 對象模型的主要優(yōu)點11
1.2 面向?qū)ο蟮能浖_發(fā)12
1.2.1 典型的結(jié)構(gòu)化開發(fā)方法12
1.2.2 面向?qū)ο蠓椒ǖ陌l(fā)展過程13
1.2.3 面向?qū)ο蠓椒ㄅc程序設(shè)計語言15
1.2.4 典型的面向?qū)ο蟮拈_發(fā)方法17
1.3 面向?qū)ο筌浖_發(fā)過程22
1.3.1 面向?qū)ο蠓治觯∣OA)22
1.3.2 面向?qū)ο笤O(shè)計(OOD)24
1.3.3 OOA與OOD之間的關(guān)系25
1.4 面向?qū)ο蠓治雠c設(shè)計的應(yīng)用舉例25
1.4.1 問題定義25
1.4.2 需求分析26
1.4.3 軟件結(jié)構(gòu)設(shè)計28
1.4.4 軟件行為建模29
1.5 小結(jié)31
習題31
第2章 統(tǒng)一建模語言(UML)概述33
2.1 UML的基本概念33
2.1.1 UML的定義33
2.1.2 UML的主要特點34
2.1.3 如何使用UML36
2.2 UML的概念模型及視圖結(jié)構(gòu)37
2.2.1 UML的概念模型37
2.2.2 UML中的視圖39
2.3 模型元素41
2.3.1 實體元素41
2.3.2 交互元素43
2.3.3 組織元素43
2.3.4 注釋元素44
2.4 關(guān)系44
2.4.1 依賴關(guān)系(Dependent)44
2.4.2 關(guān)聯(lián)關(guān)系(Association)45
2.4.3 組合與聚合(Composition and Aggregation)45
2.4.4 繼承(Inherit)45
2.5 圖46
2.5.1 用例圖(Use Case Diagram)47
2.5.2 類圖(Class Diagram)48
2.5.3 對象圖(Object Diagram)48
2.5.4 順序圖(Sequence Diagram)49
2.5.5 通信圖(Communication Diagram)50
2.5.6 狀態(tài)圖(Statechart Diagram)50
2.5.7 活動圖(Activity Diagram)51
2.5.8 構(gòu)件圖(Component Diagram)52
2.5.9 部署圖(Deployment Diagram)53
2.5.10 其他類型的圖53
2.6 通用機制53
2.6.1 規(guī)約(Specification)53
2.6.2 修飾符(Decorator)54
2.6.3 擴展機制(Extend Mechanism)54
2.6.4 約束(Constraint)54
2.7 對象約束語言簡介55
2.7.1 對象約束語言的特點55
2.7.2 OCL的主要用途55
2.7.3 OCL類型與操作56
2.7.4 OCL表達式58
2.7.5 集合操作(Collection Operation)61
2.8 小結(jié)65
習題65
第3章 業(yè)務(wù)模型的建模68
3.1 業(yè)務(wù)模型68
3.1.1 業(yè)務(wù)的概念69
3.1.2 良好的業(yè)務(wù)模型的特點69
3.1.3 業(yè)務(wù)模型的基本結(jié)構(gòu)70
3.1.4 業(yè)務(wù)建模的主要動機71
3.2 業(yè)務(wù)模型的建模方法72
3.2.1 UML與業(yè)務(wù)建模72
3.2.2 UML的業(yè)務(wù)擴展73
3.2.3 業(yè)務(wù)過程模型74
3.2.4 軟件模型與業(yè)務(wù)模型之間的關(guān)系77
3.3 業(yè)務(wù)規(guī)則78
3.3.1 派生規(guī)則(Derivation)79
3.3.2 約束規(guī)則(Constraint)80
3.3.3 存在性規(guī)則(Existence)82
3.4 業(yè)務(wù)過程的建模案例82
3.4.1 定義業(yè)務(wù)系統(tǒng)的目標83
3.4.2 業(yè)務(wù)過程模型84
3.4.3 交付業(yè)務(wù)流程圖85
3.4.4 網(wǎng)絡(luò)銷售系統(tǒng)的結(jié)構(gòu)86
3.4.5 系統(tǒng)需求87
3.5 小結(jié)89
習題89
第4章 用例建模91
4.1 用例圖的基本概念91
4.2 參與者92
4.2.1 參與者的定義92
4.2.2 識別參與者92
4.2.3 參與者之間的泛化關(guān)系94
4.3 用例95
4.3.1 用例的定義和表示95
4.3.2 參與者和用例的關(guān)聯(lián)95
4.3.3 用例之間的關(guān)系96
4.3.4 用例描述98
4.3.5 用例模板98
4.3.6 用例的識別102
4.4 用例建模應(yīng)注意的問題103
4.5 小結(jié)105
習題105
第5章 類圖建模108
5.1 類圖的構(gòu)成元素108
5.1.1 類和對象108
5.1.2 類(或?qū)ο螅┲g的關(guān)系109
5.1.3 關(guān)聯(lián)類(Association Class)113
5.1.4 關(guān)聯(lián)限定符(Qualifier)114
5.1.5 多繼承(Multi Inheritance)114
5.1.6 混入技術(shù)(Mixin Technique)115
5.1.7 模板類(Template Class)117
5.1.8 接口(Interface)118
5.2 從用例到類119
5.2.1 業(yè)務(wù)邏輯類、實體類和邊界類的基本概念119
5.2.2 用例模型到結(jié)構(gòu)模型的映射120
5.3 問題域子系統(tǒng)設(shè)計中的要點123
5.3.1 復用已存在的類123
5.3.2 為相似的類增加基類124
5.3.3 多繼承的調(diào)整125
5.3.4 關(guān)聯(lián)的轉(zhuǎn)換與實現(xiàn)126
5.3.5 調(diào)整與完善屬性129
5.3.6 提高軟件性能129
5.3.7 算法的構(gòu)造與優(yōu)化131
5.3.8 對象的可訪問性131
5.3.9 類作用域132
5.3.10 例外處理機制132
5.3.11 考慮使用設(shè)計模式133
5.4 小結(jié)133
習題134
第6章 順序圖與通信圖建模138
6.1 順序圖的構(gòu)成元素138
6.1.1 對象(Object)139
6.1.2 生命線(Lifeline)139
6.1.3 控制焦點(Focus of Control)139
6.1.4 消息(Message)140
6.1.5 撤銷(Destroy)141
6.1.6 組合片段(Combined Fragment)142
6.1.7 條件分支和從屬流143
6.2 順序圖建模方法144
6.3 通信圖的構(gòu)成元素146
6.3.1 對象(Object)146
6.3.2 鏈接(Link)147
6.3.3 消息(Message)147
6.3.4 通信圖中的主動對象(Active Object)147
6.4 通信圖建模方法149
6.5 通信圖與順序圖的比較149
6.6 小結(jié)150
習題150
第7章 狀態(tài)圖與活動圖建模153
7.1 狀態(tài)圖的構(gòu)成元素154
7.1.1 狀態(tài)154
7.1.2 轉(zhuǎn)換與事件158
7.2 狀態(tài)圖建模方法和原則159
7.2.1 狀態(tài)圖的建模方法159
7.2.2 狀態(tài)圖的建模原則161
7.3 狀態(tài)圖與人機界面162
7.3.1 人機交互界面的表示模型162
7.3.2 人機交互界面的基本結(jié)構(gòu)163
7.3.3 從用例描述到人機界面168
7.3.4 從狀態(tài)圖到人機交互界面169
7.4 活動圖及其構(gòu)成元素170
7.4.1 活動(Activity)171
7.4.2 控制流(Control Flow)171
7.4.3 決策(Decision)171
7.4.4 泳道(Swim Line)172
7.4.5 并入(Fork In)和并出(Fork Out)172
7.4.6 信號(Signal)173
7.4.7 對象(Object)和對象流(Object Flow)173
7.5 活動圖的用途及建模策略174
7.5.1 活動圖的主要用途174
7.5.2 活動圖的建模策略176
7.6 其他UML圖的建模方法177
7.6.1 復合結(jié)構(gòu)圖177
7.6.2 交互概覽圖179
7.6.3 時序圖180
7.7 小結(jié)181
習題181
第8章 包圖、組件圖和部署圖建模185
8.1 包圖185
8.1.1 包圖的構(gòu)成元素185
8.1.2 包的設(shè)計原則188
8.1.3 包圖的建模方法189
8.2 構(gòu)件圖190
8.2.1 構(gòu)件及其特點190
8.2.2 構(gòu)件圖的主要元素191
8.2.3 構(gòu)件圖的應(yīng)用舉例192
8.3 部署圖196
8.3.1 部署圖的基本元素196
8.3.2 部署圖的建模方法197
8.3.3 部署圖的應(yīng)用舉例198
8.4 小結(jié)199
習題200
第9章 UML模型與程序設(shè)計201
9.1 類的映射201
9.1.1 C++類的基本結(jié)構(gòu)201
9.1.2 UML類到C++類的映射202
9.1.3 屬性和方法的映射202
9.2 泛化關(guān)系的映射206
9.3 關(guān)聯(lián)關(guān)系的映射208
9.3.1 關(guān)聯(lián)的方向性208
9.3.2 多重性與關(guān)聯(lián)映射209
9.3.3 組合和聚合關(guān)系的映射211
9.4 依賴關(guān)系的映射212
9.5 接口和包的映射213
9.5.1 接口的映射213
9.5.2 包的映射214
9.6 UML中其他各種圖的映射215
9.6.1 順序圖的映射215
9.6.2 狀態(tài)圖的映射219
9.7 小結(jié)221
習題221
第10章 面向?qū)ο蟮能浖O(shè)計原則223
10.1 軟件質(zhì)量屬性223
10.1.1 用戶視圖下的軟件質(zhì)量屬性225
10.1.2 開發(fā)人員視圖下的軟件質(zhì)量屬性226
10.1.3 軟件質(zhì)量屬性的權(quán)衡227
10.2 七個面向?qū)ο蟮能浖O(shè)計原則228
10.2.1 開閉原則(Open-Closed Principle,OCP)229
10.2.2 里氏代換原則(Liskov Substitution Principle,LSP)230
10.2.3 依賴倒置原則(Dependence Inversion Principle,DIP)233
10.2.4 單一職責原則(Single Responsibility Principle,SRP)237
10.2.5 接口隔離原則(Interface Segregation Principle,ISP)240
10.2.6 合成復用原則(Composition/ Aggregate Reuse Principle,CRP)242
10.2.7 迪米特法則(Law of Demeter,LoD)244
10.2.8 七項設(shè)計原則的總結(jié)247
10.3 軟件設(shè)計案例—制作一個幻燈片播放軟件247
10.3.1 軟件的主要功能247
10.3.2 軟件的非功能需求250
10.3.3 軟件的結(jié)構(gòu)設(shè)計251
10.3.4 軟件的動態(tài)行為建模257
10.3.5 軟件結(jié)構(gòu)的重構(gòu)和調(diào)整258
10.3.6 案例總結(jié)268
10.4 小結(jié)268
習題269
第11章 設(shè)計模式及其應(yīng)用270
11.1 設(shè)計模式的概念270
11.1.1 設(shè)計模式的定義270
11.1.2 設(shè)計模式的分類271
11.1.3 設(shè)計模式的主要特點272
11.2 設(shè)計模式的應(yīng)用272
11.2.1 如何應(yīng)用設(shè)計模式273
11.2.2 應(yīng)用設(shè)計模式應(yīng)注意的幾個問題274
11.3 創(chuàng)建型模式及其應(yīng)用275
11.3.1 創(chuàng)建型模式簡介276
11.3.2 創(chuàng)建型模式應(yīng)用279
11.4 結(jié)構(gòu)型模式及其應(yīng)用284
11.4.1 結(jié)構(gòu)型模式簡介285
11.4.2 結(jié)構(gòu)型模式的應(yīng)用289
11.5 行為型模式及其應(yīng)用293
11.5.1 典型的行為型模式簡介293
11.5.2 職責鏈模式的應(yīng)用實例299
11.5.3 解釋器模式的應(yīng)用實例300
11.6 遺傳算法設(shè)計實例303
11.6.1 遺傳算法概述303
11.6.2 遺傳算法的基本實現(xiàn)策略304
11.6.3 遺傳算法的基本過程305
11.6.4 遺傳算法的結(jié)構(gòu)模型305
11.6.5 遺傳算法的應(yīng)用實例307
11.7 小結(jié)310
習題310
第12章 對象的持久化311
12.1 持久對象和持久化方法311
12.2 基于數(shù)據(jù)文件的持久化技術(shù)312
12.2.1 MFC框架提供的序列化技術(shù)312
12.2.2 Java語言提供的序列化技術(shù)313
12.3 基于關(guān)系數(shù)據(jù)庫的對象持久化315
12.3.1 將實體模型轉(zhuǎn)換成關(guān)系數(shù)據(jù)庫的邏輯模型315
12.3.2 數(shù)據(jù)庫對象的持久化過程322
12.4 小結(jié)325
習題325
第13章 面向?qū)ο蠓治鲈O(shè)計案例328
13.1 軟件概述328
13.2 軟件功能結(jié)構(gòu)328
13.2.1 用例建模328
13.2.2 用例描述330
13.2.3 概念模型333
13.3 軟件結(jié)構(gòu)設(shè)計333
13.3.1 MFC文檔視圖結(jié)構(gòu)簡介334
13.3.2 軟件的基本結(jié)構(gòu)334
13.3.3 圖形文檔類的設(shè)計335
13.3.4 視圖類設(shè)計342
13.3.5 交互操作的結(jié)構(gòu)343
13.4 動態(tài)建模348
13.4.1 順序圖建模348
13.4.2 通信圖建模349
13.4.3 狀態(tài)圖建模350
13.5 建模的抽象層次352
13.6 交互式編輯軟件的實現(xiàn)353
13.6.1 系統(tǒng)的主界面353
13.6.2 圖素操作353
13.7 小結(jié)355
習題355
參考文獻356