本書系統(tǒng)講解了面向?qū)ο蠓椒ǖ幕靖拍,統(tǒng)一建模語言的概念、結(jié)構(gòu)和建模方法,對(duì)象約束語言(OCL)基礎(chǔ)知識(shí)和使用方法,還詳細(xì)介紹了業(yè)務(wù)建模方面的基礎(chǔ)知識(shí),包括業(yè)務(wù)、業(yè)務(wù)規(guī)則、業(yè)務(wù)模型及其構(gòu)成要素的概念以及業(yè)務(wù)建模的方法。
本書詳細(xì)介紹了各種標(biāo)準(zhǔn)UML模型的概念、構(gòu)成元素、使用規(guī)則和建模方法,這些標(biāo)準(zhǔn)模型包括:用例模型、類圖模型、順序圖、通信圖、狀態(tài)圖、活動(dòng)圖、構(gòu)件圖和部署圖等。同時(shí),還概要介紹了UML 2.0中新增加的一些模型及其建模方法,如復(fù)合結(jié)構(gòu)圖、交互概覽圖和時(shí)序圖等模型。
本書還介紹了設(shè)計(jì)模式的基礎(chǔ)知識(shí)和基本理論,概要介紹了每種設(shè)計(jì)模式的定義、結(jié)構(gòu)、適用情形和主要特點(diǎn)。
*后,本書還提供了若干帶有全部實(shí)現(xiàn)的軟件設(shè)計(jì)案例,能夠更加直觀、有效地幫助讀者理解面向?qū)ο蠓椒ㄖ械母鞣N抽象概念、設(shè)計(jì)原則、建模方法和建模過程。
本書適合作為高等院校軟件工程及相關(guān)專業(yè)的本科生或研究生教材,也可以作為從事軟件開發(fā)工作和學(xué)習(xí)面向?qū)ο蠓椒ǖ淖x者的參考資料。
目 錄
前言
第1章 面向?qū)ο箝_發(fā)方法1
1.1 對(duì)象及對(duì)象模型1
1.1.1 對(duì)象的基本概念1
1.1.2 對(duì)象模型的構(gòu)成要素5
1.1.3 對(duì)象模型的主要優(yōu)點(diǎn)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è)計(jì)語言15
1.2.4 典型的面向?qū)ο蟮拈_發(fā)方法17
1.3 面向?qū)ο筌浖_發(fā)過程22
1.3.1 面向?qū)ο蠓治觯∣OA)22
1.3.2 面向?qū)ο笤O(shè)計(jì)(OOD)24
1.3.3 OOA與OOD之間的關(guān)系25
1.4 面向?qū)ο蠓治雠c設(shè)計(jì)的應(yīng)用舉例25
1.4.1 問題定義25
1.4.2 需求分析26
1.4.3 軟件結(jié)構(gòu)設(shè)計(jì)28
1.4.4 軟件行為建模29
1.5 小結(jié)31
習(xí)題31
第2章 統(tǒng)一建模語言(UML)概述33
2.1 UML的基本概念33
2.1.1 UML的定義33
2.1.2 UML的主要特點(diǎn)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 實(shí)體元素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 對(duì)象圖(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 活動(dòng)圖(Activity Diagram)51
2.5.8 構(gòu)件圖(Component Diagram)52
2.5.9 部署圖(Deployment Diagram)53
2.5.10 其他類型的圖53
2.6 通用機(jī)制53
2.6.1 規(guī)約(Specification)53
2.6.2 修飾符(Decorator)54
2.6.3 擴(kuò)展機(jī)制(Extend Mechanism)54
2.6.4 約束(Constraint)54
2.7 對(duì)象約束語言簡介55
2.7.1 對(duì)象約束語言的特點(diǎn)55
2.7.2 OCL的主要用途55
2.7.3 OCL類型與操作56
2.7.4 OCL表達(dá)式58
2.7.5 集合操作(Collection Operation)61
2.8 小結(jié)65
習(xí)題65
第3章 業(yè)務(wù)模型的建模68
3.1 業(yè)務(wù)模型68
3.1.1 業(yè)務(wù)的概念69
3.1.2 良好的業(yè)務(wù)模型的特點(diǎn)69
3.1.3 業(yè)務(wù)模型的基本結(jié)構(gòu)70
3.1.4 業(yè)務(wù)建模的主要?jiǎng)訖C(jī)71
3.2 業(yè)務(wù)模型的建模方法72
3.2.1 UML與業(yè)務(wù)建模72
3.2.2 UML的業(yè)務(wù)擴(kuò)展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)的目標(biāo)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
習(xí)題89
第4章 用例建模91
4.1 用例圖的基本概念91
4.2 參與者92
4.2.1 參與者的定義92
4.2.2 識(shí)別參與者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 用例的識(shí)別102
4.4 用例建模應(yīng)注意的問題103
4.5 小結(jié)105
習(xí)題105
第5章 類圖建模108
5.1 類圖的構(gòu)成元素108
5.1.1 類和對(duì)象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ù)邏輯類、實(shí)體類和邊界類的基本概念119
5.2.2 用例模型到結(jié)構(gòu)模型的映射120
5.3 問題域子系統(tǒng)設(shè)計(jì)中的要點(diǎn)123
5.3.1 復(fù)用已存在的類123
5.3.2 為相似的類增加基類124
5.3.3 多繼承的調(diào)整125
5.3.4 關(guān)聯(lián)的轉(zhuǎn)換與實(shí)現(xiàn)126
5.3.5 調(diào)整與完善屬性129
5.3.6 提高軟件性能129
5.3.7 算法的構(gòu)造與優(yōu)化131
5.3.8 對(duì)象的可訪問性131
5.3.9 類作用域132
5.3.10 例外處理機(jī)制132
5.3.11 考慮使用設(shè)計(jì)模式133
5.4 小結(jié)133
習(xí)題134
第6章 順序圖與通信圖建模138
6.1 順序圖的構(gòu)成元素138
6.1.1 對(duì)象(Object)139
6.1.2 生命線(Lifeline)139
6.1.3 控制焦點(diǎn)(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 對(duì)象(Object)146
6.3.2 鏈接(Link)147
6.3.3 消息(Message)147
6.3.4 通信圖中的主動(dòng)對(duì)象(Active Object)147
6.4 通信圖建模方法149
6.5 通信圖與順序圖的比較149
6.6 小結(jié)150
習(xí)題150
第7章 狀態(tài)圖與活動(dòng)圖建模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)圖與人機(jī)界面162
7.3.1 人機(jī)交互界面的表示模型162
7.3.2 人機(jī)交互界面的基本結(jié)構(gòu)163
7.3.3 從用例描述到人機(jī)界面168
7.3.4 從狀態(tài)圖到人機(jī)交互界面169
7.4 活動(dòng)圖及其構(gòu)成元素170
7.4.1 活動(dòng)(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 信號(hào)(Signal)173
7.4.7 對(duì)象(Object)和對(duì)象流(Object Flow)173
7.5 活動(dòng)圖的用途及建模策略174
7.5.1 活動(dòng)圖的主要用途174
7.5.2 活動(dòng)圖的建模策略176
7.6 其他UML圖的建模方法177
7.6.1 復(fù)合結(jié)構(gòu)圖177
7.6.2 交互概覽圖179
7.6.3 時(shí)序圖180
7.7 小結(jié)181
習(xí)題181
第8章 包圖、組件圖和部署圖建模185
8.1 包圖185
8.1.1 包圖的構(gòu)成元素185
8.1.2 包的設(shè)計(jì)原則188
8.1.3 包圖的建模方法189
8.2 構(gòu)件圖190
8.2.1 構(gòu)件及其特點(diǎn)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
習(xí)題200
第9章 UML模型與程序設(shè)計(jì)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
習(xí)題221
第10章 面向?qū)ο蟮能浖O(shè)計(jì)原則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 七個(gè)面向?qū)ο蟮能浖O(shè)計(jì)原則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 單一職責(zé)原則(Single Responsibility Principle,SRP)237
10.2.5 接口隔離原則(Interface Segregation Principle,ISP)240
10.2.6 合成復(fù)用原則(Composition/ Aggregate Reuse Principle,CRP)242
10.2.7 迪米特法則(Law of Demeter,LoD)244
10.2.8 七項(xiàng)設(shè)計(jì)原則的總結(jié)247
10.3 軟件設(shè)計(jì)案例—制作一個(gè)幻燈片播放軟件247
10.3.1 軟件的主要功能247
10.3.2 軟件的非功能需求250
10.3.3 軟件的結(jié)構(gòu)設(shè)計(jì)251
10.3.4 軟件的動(dòng)態(tài)行為建模257
10.3.5 軟件結(jié)構(gòu)的重構(gòu)和調(diào)整258
10.3.6 案例總結(jié)268
10.4 小結(jié)268
習(xí)題269
第11章 設(shè)計(jì)模式及其應(yīng)用270
11.1 設(shè)計(jì)模式的概念270
11.1.1 設(shè)計(jì)模式的定義270
11.1.2 設(shè)計(jì)模式的分類271
11.1.3 設(shè)計(jì)模式的主要特點(diǎn)272
11.2 設(shè)計(jì)模式的應(yīng)用272
11.2.1 如何應(yīng)用設(shè)計(jì)模式273
11.2.2 應(yīng)用設(shè)計(jì)模式應(yīng)注意的幾個(gè)問題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 職責(zé)鏈模式的應(yīng)用實(shí)例299
11.5.3 解釋器模式的應(yīng)用實(shí)例300
11.6 遺傳算法設(shè)計(jì)實(shí)例303
11.6.1 遺傳算法概述303
11.6.2 遺傳算法的基本實(shí)現(xiàn)策略304
11.6.3 遺傳算法的基本過程305
11.6.4 遺傳算法的結(jié)構(gòu)模型305
11.6.5 遺傳算法的應(yīng)用實(shí)例307
11.7 小結(jié)310
習(xí)題310
第12章 對(duì)象的持久化311
12.1 持久對(duì)象和持久化方法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ù)庫的對(duì)象持久化315
12.3.1 將實(shí)體模型轉(zhuǎn)換成關(guān)系數(shù)據(jù)庫的邏輯模型315
12.3.2 數(shù)據(jù)庫對(duì)象的持久化過程322
12.4 小結(jié)325
習(xí)題325
第13章 面向?qū)ο蠓治鲈O(shè)計(jì)案例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è)計(jì)333
13.3.1 MFC文檔視圖結(jié)構(gòu)簡介334
13.3.2 軟件的基本結(jié)構(gòu)334
13.3.3 圖形文檔類的設(shè)計(jì)335
13.3.4 視圖類設(shè)計(jì)342
13.3.5 交互操作的結(jié)構(gòu)343
13.4 動(dòng)態(tài)建模348
13.4.1 順序圖建模348
13.4.2 通信圖建模349
13.4.3 狀態(tài)圖建模350
13.5 建模的抽象層次352
13.6 交互式編輯軟件的實(shí)現(xiàn)353
13.6.1 系統(tǒng)的主界面353
13.6.2 圖素操作353
13.7 小結(jié)355
習(xí)題355
參考文獻(xiàn)356