內 容 簡 介
本書從初學者的角度出發,由淺入深、循序漸進地介紹統一建模語言UML的相關知識,書中提供了大量操作UML的示例。另外,還向讀者提供了很多實戰案例和上機練習,用于演練。
本書共分為16章,內容包括面向對象思想和軟件建模分類,UML發展歷史、組成元素、體系結構、建模流程和應用領域,常用的UML建模工具,用例圖、類圖、對象圖和包圖、狀態機圖、活動圖、順序圖和時間圖、通信圖和交互概覽圖、組件圖和部署圖,UML到關系型數據庫的映射,UML與統一過程,UML與Java語言的映射,以及UML與設計模式等。最后一章提供了一個綜合的案例。
本書示例新穎,內容豐富,涉及面廣泛,適合所有的UML初學者學習,也可以幫助有基礎知識的讀者提高創建UML模型圖的技能。另外,對于大中專學生和培訓班的學生來說,本書更是一本不可多得的教材和自學用書。
前 言
UML是英文Unified Modeling Language的縮寫,又稱為統一建模語言,或者標準建模語言,它是始于1997年的一個OMG標準,是一個支持模型化和軟件系統開發的圖形化語言,可為軟件開發的所有階段提供模型化和可視化支持。面向對象的分析與設計方法在20世紀80年代末至90年代中出現了一個高潮,UML正是這個高潮的產物,它不僅統一了Booch、Rumbaugh和Jacobson的表示方法,而且做了進一步的發展,并最終統一為大眾所接受的標準建模語言。
本書內容
全書共分16章,主要內容如下。
第1章:面向對象和軟件建模。從模型開始介紹,接著介紹面向對象思想的三大要素、三大模型、常用的三層開發方法、軟件建模知識,最后介紹常用的建模分類。
第2章:UML入門基礎。著重介紹UML的基礎知識,包括UML的概念、發展歷史、目標、組成元素、體系結構、建模流程以及應用領域等內容。
第3章:UML建模工具。從目前眾多的UML建模工具中挑選出應用最廣泛且在建模工具中最有影響力的3種工具(Visio、Enterprise Architect和PowerDesigner)進行介紹。
第4章:用例圖。介紹用例圖的構成、設計和使用,包括用例圖的組成部分、各個部分成員的確定和使用,以及如何繪制完整的用例圖等。
第5章:類圖。詳細介紹UML中的類圖,包括類圖中的類、抽象類、接口和各種關系的實現等內容,還介紹如何使用類圖進行建模。
第6章:對象圖和包圖。首先介紹對象圖,包括概念、組成、繪制和閱讀,以及如何建模等;然后介紹包圖,包括概念、組成、分類、設計原則以及如何建模等。
第7章:狀態機圖。詳細介紹狀態機圖的繪制,首先介紹狀態機圖的基本內容,包括概念、標記、狀態類型和狀態機圖的應用等,然后介紹狀態機圖中的轉移元素,最后介紹組合狀態。
第8章:活動圖。詳細介紹活動圖的繪制,其內容包括活動圖的定義、作用、與狀態機圖的區別、組成元素和活動轉換等。
第9章:順序圖和時間圖。介紹UML中的兩種交互圖,即順序圖和時間圖。順序圖描述系統對象之間的交互順序,但是這個順序沒有細致的時間刻度,只是一個大概的流程,而時間圖彌補了這個不足,它們共同繪制了系統對象間交互的順序和時間。
第10章:通信圖和交互概覽圖。首先對通信圖的概念進行介紹,然后介紹通信圖中的消息、對象的創建和消息迭代等內容,最后介紹交互圖和交互概覽圖的繪制。
第11章:繪制UML的實現圖。首先介紹組件圖的繪制和建模,然后介紹部署圖的繪制和建模。
第12章:UML到關系型數據庫的映射。著重介紹如何將UML類圖中的類和關系映射到關系型數據庫表。首先介紹基本結構的映射,然后介紹泛化關系和關聯關系的映射,最后介紹完整性與約束檢查以及存儲過程、觸發器和索引等內容。
第13章:UML與統一過程。首先討論軟件開發過程和成熟標準,然后詳細介紹一種使用UML的過程,即統一過程,最后簡單介紹使用UML過程的一般特征。
第14章:UML與Java語言映射。主要介紹UML類圖映射為Java語言實現的方法,包括轉換為Java類、轉換原則、轉換類之間的關聯、泛化關聯以及包和接口等。
第15章:UML與設計模式。首先介紹模式的一些基本概念,接著介紹UML對設計模式的支持,然后通過具體的示例討論如何使用設計模式進行系統設計。
第16章:即時通信系統。綜合UML建模系統的各類模型,通過對即時通信系統的分析,繪制該系統的UML模型圖,包括用例圖、靜態圖、行為圖和交互圖等多種圖形。
本書特色
本書內容詳細、示例豐富,知識面廣,全面地講解了UML的應用和開發。本書最大的特點體現在如下幾個方面。
(1)知識全面,內容豐富
本書緊密圍繞UML的相關知識展開詳細的講解,涵蓋了實際開發應用中的具體應用代碼。
(2)理論和示例結合
書中幾乎每一個知識點都有豐富而典型的示例,而且每一章最后都會通過一個或多個綜合的實戰介紹該章的知識。作為一本UML入門類型的書,將理論和實踐很好地結合起來進行講解,讓讀者最容易快速掌握。
(3)應用廣泛,提供文檔
對于大多數的精選實戰案例,都會向讀者提供詳細的實現步驟,結構清晰簡明,分析深入淺出,而且有些實戰案例貼近實際。
(4)網站技術支持
讀者在學習或者工作的過程中,如果遇到實際問題,可以直接登錄www.itzcn.com與我們取得聯系,作者會在第一時間給予幫助。
(5)貼心的提示
為了便于讀者閱讀,書中還穿插著一些技巧、提示等小貼士,體例約定如下。
?提示:通常是一些提醒,讓讀者加深印象或提供建議及解決問題的方法。
?注意:提出學習過程中需要特別注意的一些知識點和內容,或者相關信息。
?技巧:通過簡短的文字,指出知識點在應用時的一些小竅門。
讀者對象
本書適合作為軟件開發入門者的自學用書,也適合作為高等院校相關專業的教學參考書,還可供開發人員查閱、參考。本書特別適合下列人員閱讀:
UML初學者。
各大中專院校的在校學生和相關授課教師。
準備從事與UML應用相關工作的人員。
作者團隊
除了封面署名作者之外,參與本書編寫的人員還有程朝斌、王詠梅、郝軍啟、王慧、鄭小營、張浩華、王超英、張凡、趙振方、張艷梅等,在此表示感謝。在本書的編寫過程中,我們力求精益求精,但難免存在一些不足之處,懇請廣大讀者批評指正。
編 者
目 錄
第1章 面向對象和軟件建模 1
1.1 模型 2
1.2 面向對象的思想 3
1.2.1 了解面向對象 3
1.2.2 面向對象的三大要素 5
1.2.3 面向對象的三大模型 7
1.2.4 面向對象的常用三層 8
1.2.5 面向對象的開發方法 10
1.3 軟件建模 11
1.3.1 軟件建模概述 11
1.3.2 建模的三要素 11
1.3.3 面向對象建模 12
1.4 建模分類 14
1.4.1 業務建模 14
1.4.2 數據建模 16
1.4.3 應用程序建模 16
1.5 思考與練習 17
第2章 UML入門基礎 19
2.1 UML概述 20
2.1.1 UML簡介 20
2.1.2 UML發展歷史 21
2.1.3 UML的目標 22
2.2 UML的基本組成 23
2.2.1 建模元素 23
2.2.2 關系 26
2.2.3 圖 28
2.2.4 規則 30
2.2.5 通用機制 31
2.2.6 UML標準通用機制 34
2.3 UML其他內容 40
2.3.1 UML的體系結構 40
2.3.2 UML建模流程 41
2.3.3 UML的應用領域 42
2.4 UML 2.0概述 42
2.5 思考與練習 44
第3章 UML建模工具 45
3.1 使用建模工具需知 46
3.1.1 建模工具的作用 46
3.1.2 選擇建模工具的方法 47
3.1.3 常用建模工具 48
3.2 Visio 2010 49
3.2.1 Visio 2010簡介 49
3.2.2 實戰——繪制論壇系統的用例圖 51
3.3 Enterprise Architect 8 54
3.3.1 Enterprise Architect 8簡介 54
3.3.2 實戰——繪制論壇系統的類圖 57
3.4 PowerDesigner 16.5 61
3.4.1 PowerDesigner簡介 62
3.4.2 實戰——安裝
PowerDesigner 16.5 63
3.4.3 實戰——繪制活動圖 65
3.4.4 實戰——生成模型報告 68
3.4.5 實戰——對MySQL進行反向工程 70
3.5 思考與練習 73
第4章 用例圖 75
4.1 用例圖簡介 76
4.2 用例圖的構成 78
4.2.1 系統 78
4.2.2 參與者 79
4.2.3 用例 79
4.2.4 關系 80
4.3 使用參與者 81
4.3.1 參與者的確定 81
4.3.2 參與者的使用 82
4.4 用例的使用 83
4.4.1 識別用例 83
4.4.2 用例描述 87
4.5 關系 88
4.5.1 關聯關系 88
4.5.2 泛化關系 89
4.5.3 包含關系 90
4.5.4 擴展關系 91
4.6 實戰——圖書館管理系統用例圖 92
4.7 思考與練習 97
第5章 類圖 101
5.1 類圖和元素 102
5.1.1 類圖概述 102
5.1.2 類 104
5.1.3 抽象類 109
5.1.4 接口 109
5.2 依賴關系 110
5.2.1 依賴關系概述 110
5.2.2 依賴關系分類 111
5.3 關聯關系 113
5.3.1 關聯關系概述 113
5.3.2 常見的關聯 118
5.3.3 聚合關聯 121
5.3.4 組合關聯 122
5.3.5 建立關聯 123
5.4 泛化關系 123
5.4.1 泛化關系概述 124
5.4.2 常用的泛化 125
5.4.3 泛化集 126
5.4.4 泛化約束 127
5.5 實現關系 128
5.6 類圖建模步驟 130
5.7 實戰——構建病房監護系統的類型 131
5.8 思考與練習 133
第6章 對象圖和包圖 137
6.1 了解對象 138
6.1.1 對象概述 138
6.1.2 對象符號 139
6.2 對象圖 142
6.2.1 對象圖概述 142
6.2.2 繪制和閱讀對象圖 143
6.2.3 使用對象圖建模 144
6.3 對象圖和類圖 144
6.4 實戰——繪制訂單管理系統的對象圖 145
6.5 了解包 146
6.5.1 包概述 146
6.5.2 包的符號 147
6.6 包圖 149
6.6.1 包圖概述 149
6.6.2 包圖分類 150
6.6.3 包導入和包合并 152
6.6.4 使用包圖建模 154
6.6.5 包圖設計原則 154
6.7 實戰——繪制劇院系統的包圖 157
6.8 思考與練習 159
第7章 狀態機圖 161
7.1 狀態機圖簡介 162
7.1.1 狀態機概述 162
7.1.2 狀態機標記 163
7.1.3 狀態類型 165
7.1.4 狀態機圖的應用 166
7.2 轉移 167
7.2.1 轉移簡介 167
7.2.2 事件 168
7.2.3 動作 170
7.2.4 活動與延遲事件 171
7.2.5 轉移的類型 172
7.3 組合狀態 174
7.3.1 順序狀態 174
7.3.2 并發狀態 174
7.3.3 同步狀態 175
7.3.4 歷史狀態 175
7.3.5 子狀態機引用 176
7.4 實戰——自動存取款系統狀態機圖 178
7.5 思考與練習 180
第8章 活動圖 181
8.1 活動圖的基本概念 182
8.1.1 活動圖的定義 182
8.1.2 活動圖的作用 182
8.1.3 活動圖的主要元素 183
8.1.4 理解活動與動作 184
8.1.5 活動圖與狀態圖的區別 186
8.2 活動圖的元素詳解 186
8.2.1 動作狀態 186
8.2.2 活動狀態 186
8.2.3 開始和結束狀態 187
8.2.4 分支與合并 188
8.2.5 分叉與匯合 190
8.2.6 對象流 191
8.2.7 泳道 192
8.3 活動轉換 193
8.3.1 轉移 193
8.3.2 判定 194
8.3.3 發送和接收信號動作 195
8.3.4 事件和觸發器 195
8.3.5 可中斷區間 196
8.3.6 異常 197
8.4 實戰——活動圖的應用 198
8.5 思考與練習 200
第9章 順序圖和時間圖 203
9.1 順序圖簡介 204
9.2 順序圖的構成 205
9.2.1 對象 205
9.2.2 生命線和激活期 208
9.2.3 消息 209
9.2.4 序號 210
9.2.5 參數 212
9.2.6 激活期規范 213
9.3 消息類型 217
9.3.1 同步消息 217
9.3.2 異步消息 218
9.3.3 反身消息 219
9.3.4 接收發送消息 220
9.3.5 消息分支和從屬流 220
9.4 組合片段 222
9.4.1 組合片段簡介 222
9.4.2 選項組合片段 224
9.4.3 備選組合片段 225
9.4.4 循環組合片段 226
9.4.5 引用組合片段 227
9.5 時間圖 228
9.5.1 時間圖概述 228
9.5.2 時間圖的構成 229
9.5.3 時間約束 234
9.5.4 替代表示法 235
9.6 實戰——團購系統順序圖 236
9.7 思考與練習 241
第10章 通信圖和交互概覽圖 245
10.1 通信圖簡介 246
10.1.1 通信圖概述 246
10.1.2 對象與類角色 247
10.1.3 關聯角色與鏈接 248
10.1.4 消息 250
10.2 消息序號和控制點 251
10.2.1 消息序號 252
10.2.2 消息控制點 252
10.3 創建對象 253
10.4 消息迭代 253
10.4.1 對象的迭代 254
10.4.2 消息的迭代 254
10.5 交互圖 255
10.6 交互概覽圖 256
10.6.1 交互概覽圖簡介 256
10.6.2 繪制交互概覽圖 257
10.7 實戰——在線報考系統的交互圖 257
10.8 思考與練習 259
第11章 繪制UML的實現圖 261
11.1 了解組件 262
11.1.1 組件概述 262
11.1.2 組件的符號 262
11.2 組件圖 265
11.2.1 組件圖概述 265
11.2.2 組件間的關系 267
11.2.3 組件圖和類圖 268
11.2.4 實戰——繪制組件圖 268
11.3 使用組件圖建模 269
11.3.1 對源代碼建模 270
11.3.2 對可執行體的發布建模 270
11.3.3 對物理數據庫建模 271
11.3.4 對可適應的系統建模 272
11.4 了解節點 272
11.4.1 節點的符號 272
11.4.2 節點和組件的區別 273
11.5 部署圖 274
11.5.1 部署圖概述 274
11.5.2 部署圖的關系 275
11.5.3 實戰——繪制部署圖 276
11.6 使用部署圖建模 278
11.6.1 對嵌入式系統建模 278
11.6.2 對客戶/服務器建模 279
11.6.3 對全分布式系統建模 280
11.7 思考與練習 281
第12章 UML到關系型數據庫的映射 285
12.1 關系型數據庫與UML模型 286
12.1.1 關系型數據庫管理系統 286
12.1.2 UML模型 286
12.2 基本結構映射 287
12.2.1 主鍵的生成 287
12.2.2 屬性類型到域的映射 288
12.2.3 屬性到列的映射 289
12.3 泛化關系的映射 289
12.3.1 所有類的映射 289
12.3.2 除無屬性外類的映射 291
12.3.3 父類屬性下移 291
12.3.4 子類屬性上移 292
12.3.5 映射方法比較 293
12.4 關聯關系的映射 294
12.4.1 一對一關聯的映射 294
12.4.2 零或一對一關聯的映射 295
12.4.3 一對多關聯的映射 295
12.4.4 多對多關聯的映射 297
12.4.5 聚合和組合關系的映射 298
12.4.6 映射時應避免的情況 298
12.5 完整性與約束檢查 299
12.5.1 父表的約束 300
12.5.2 子表的約束 301
12.6 其他相關問題 302
12.6.1 存儲過程 302
12.6.2 觸發器 302
12.6.3 索引 303
12.7 實戰——軟件公司UML模型的映射 303
12.8 思考與練習 305
第13章 UML與統一過程 309
13.1 軟件開發過程簡介 310
13.2 定義和理解軟件工程的過程 311
13.3 軟件成熟標準:CMM 311
13.3.1 使用CMM的意義 311
13.3.2 CMM等級 312
13.3.3 CMM框架 314
13.3.4 CMM結構 315
13.4 RUP簡介 316
13.4.1 使用RUP的意義 316
13.4.2 什么是RUP 317
13.4.3 RUP的特點 318
13.4.4 RUP六大開發經驗 320
13.5 RUP二維開發模型 321
13.5.1 時間維 322
13.5.2 RUP的靜態結構 324
13.6 RUP工作流程 326
13.6.1 初始階段 326
13.6.2 細化階段 327
13.6.3 構造階段 328
13.6.4 交付階段 329
13.7 RUP的核心工作流 329
13.7.1 商業建模 329
13.7.2 需求 329
13.7.3 分析和設計 331
13.7.4 實現 332
13.7.5 測試 332
13.7.6 部署 333
13.7.7 配置和變更管理 333
13.7.8 項目管理 334
13.7.9 環境 334
13.8 如何在過程中使用UML 334
13.8.1 以架構為中心 334
13.8.2 用例驅動 335
13.8.3 UML對迭代開發的支持 335
13.8.4 UML圖與工作流程之間的關系 336
13.9 思考與練習 336
第14章 UML與Java語言映射 339
14.1 模型映射為Java的實現 340
14.1.1 轉換為Java類 340
14.1.2 轉換原則 341
14.2 實現常見關聯 342
14.2.1 基本關聯 342
14.2.2 強制對可選或者強制關聯 343
14.2.3 可選對可選關聯 344
14.2.4 可選對多關聯 345
14.2.5 強制對多關聯 346
14.2.6 多對多關聯 346
14.2.7 關聯類的實現 347
14.2.8 聚合關聯的實現 348
14.2.9 組合關聯的實現 348
14.3 實現泛化 349
14.4 特殊模型的映射 350
14.4.1 包 350
14.4.2 接口 350
14.4.3 枚舉 352
14.5 實戰——類圖與Java的工程化 352
14.5.1 正向工程 352
14.5.2 逆向工程 355
14.6 思考與練習 357
第15章 UML與設計模式 359
15.1 了解模式 360
15.2 軟件設計模式 360
15.2.1 了解設計模式 360
15.2.2 設計模式的誕生 362
15.2.3 設計模式的原則 363
15.2.4 設計模式的分類 364
15.3 設計模式的元素 366
15.3.1 關鍵元素 366
15.3.2 其他元素 367
15.4 創建型模式 367
15.4.1 了解創建型模式 368
15.4.2 簡單工廠模式 368
15.4.3 工廠方法模式 372
15.4.4 抽象工廠模式 375
15.4.5 單例模式 380
15.5 結構型模式 384
15.5.1 了解結構型模式 384
15.5.2 適配器模式 385
15.5.3 外觀模式 388
15.6 觀察者模式 390
15.6.1 了解觀察者模式 390
15.6.2 實戰——自定義觀察者模式 391
15.7 思考與練習 393
第16章 即時通信系統 395
16.1 系統建模概述 396
16.1.1 系統開發的背景 396
16.1.2 系統建模的基本步驟 396
16.2 系統分析 397
16.2.1 系統結構 397
16.2.2 需求分析 398
16.3 用例圖 398
16.3.1 確定參與者 399
16.3.2 確定用例 399
16.3.3 繪制系統用例圖 400
16.4 靜態圖 402
16.4.1 即時通信類 402
16.4.2 即時通信類圖 404
16.5 行為圖 405
16.5.1 行為分析 405
16.5.2 用戶聊天的活動圖 406
16.5.3 可疑言論處理活動圖 406
16.6 交互圖 408
16.6.1 用戶登錄順序圖 408
16.6.2 離線消息順序圖 409
16.6.3 言論處理順序圖 409
16.6.4 在線通信順序圖 410
16.6.5 交互概覽圖 411
16.7 組件圖 412
附錄 各章思考與練習答案 415