面向?qū)ο蠓治鰪?qiáng)調(diào)的是對一個(gè)系統(tǒng)中對象的特征和行為的定義则涯。
統(tǒng)一建模語言(UML
)是面向?qū)ο筌浖臉?biāo)準(zhǔn)化建模語言线定。
UML
的詞匯表包含三種構(gòu)造塊:
- 事物受楼,對模型中最具有代表性的成分的抽象酒繁。
- 關(guān)系孽惰,關(guān)系把事物結(jié)合在一起膳凝。
- 圖碑隆,圖聚集了相關(guān)的事物。
(一)事物
UML
中有四種事物:結(jié)構(gòu)事物蹬音、行為事物上煤、分組事物和注釋事物。
1. 結(jié)構(gòu)事物
通常是模型的靜態(tài)部分著淆,描述概念或物理元素劫狠。
結(jié)構(gòu)事物包括:
- 類
- 接口
- 協(xié)作
- 用例
- 主動(dòng)類
- 構(gòu)件
- 制品
- 結(jié)點(diǎn)
各種結(jié)構(gòu)事物的圖形化表示如下圖所示:
2. 行為事物
行為事物是UML
模型的動(dòng)態(tài)部分,它們是模型中的動(dòng)詞永部,描述了跨越時(shí)間和空間的行為独泞。
行為事物包括:
- 交互
- 狀態(tài)機(jī)
- 活動(dòng)
各種行為事物的圖形表示如下圖所示:
交互 由在特定語境中共同完成一定任務(wù)的一組對象之間交換的消息組成。一個(gè)對象群體的行為或單個(gè)操作的行為可以用一個(gè)交互來描述苔埋。交互涉及一些其他元素懦砂,包括消息、動(dòng)作序列和鏈。
狀態(tài)機(jī) 描述了一個(gè)對象或一個(gè)交互在生命期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列孕惜。單個(gè)類或一組類之間協(xié)作的行為可以用狀態(tài)機(jī)來描述愧薛。一個(gè)狀態(tài)機(jī)涉及到一些其他元素,包括狀態(tài)衫画、轉(zhuǎn)換毫炉、事件和活動(dòng)。
活動(dòng) 是描述計(jì)算機(jī)過程執(zhí)行的步驟序列削罩,注重步驟之間的流而不關(guān)心哪個(gè)對象執(zhí)行哪個(gè)步驟瞄勾。活動(dòng)的一個(gè)步驟稱為一個(gè)動(dòng)作弥激,在圖形上进陡,把動(dòng)作畫成一個(gè)圓角矩形,在其中含有指明其用途的名字微服。
3. 分組事物
分組事物是UML
模型的組織部分趾疚,是一些由模型分解成的“盒子”。
在所有的分組事物中以蕴,最主要的分組事物是包糙麦。包把元素組織成組的機(jī)制。結(jié)構(gòu)事物丛肮、行為事物甚至其他分組事物都可以放在包中赡磅。
包的圖形化表示如下圖所示:
4. 注釋事物
注釋事物是UML
模型的解釋部分。這些注釋事物用來描述宝与、說明和標(biāo)注模型的任何元素焚廊。
注解是一種主要的解釋事物。注解是一個(gè)依附于一個(gè)元素或一組元素之上习劫,對它進(jìn)行約束或解釋的簡單符號(hào)咆瘟。
注解的圖形化表示如下圖所示:
(二)關(guān)系
UML
中有四種關(guān)系:
-
依賴
依賴是兩個(gè)事物間的語義關(guān)系,其中一個(gè)事物發(fā)生變化會(huì)影響另一個(gè)事物的語義榜聂。
在圖形上搞疗,把一個(gè)依賴畫成一條可能有方向的虛線。如下圖所示:
依賴 -
關(guān)聯(lián)
關(guān)聯(lián)是一種結(jié)構(gòu)關(guān)系须肆,它描述了一組鏈匿乃,鏈?zhǔn)菍ο笾g的連接。
聚集是一種特殊類型的關(guān)聯(lián)豌汇,它描述了整體和部分間的結(jié)構(gòu)關(guān)系幢炸。
關(guān)聯(lián)和聚集的圖形化表示如下圖所示:
關(guān)聯(lián) -
泛化
泛化是一種特殊/一般關(guān)系,特殊元素(子元素)的對象可替代一般元素(父元素)的對象拒贱。
在圖形上宛徊,把一個(gè)泛化關(guān)系畫成一條帶有空心箭頭的實(shí)線佛嬉,它指向父元素。如下圖所示:
泛化 -
實(shí)現(xiàn)
實(shí)現(xiàn)是類元之間的語義關(guān)系闸天,其中一個(gè)類元指定了由另一個(gè)類元保證執(zhí)行的契約暖呕。
在兩種情況下會(huì)使用實(shí)現(xiàn)關(guān)系:一種是在接口和實(shí)現(xiàn)它們的類或構(gòu)件之間;另一種是在用例和實(shí)現(xiàn)它們的協(xié)作之間苞氮。
在圖形上湾揽,把一個(gè)實(shí)現(xiàn)關(guān)系畫成一條帶有空心箭頭的虛線,如下圖所示:
實(shí)現(xiàn)
(三)UML中的圖
圖是一組元素的圖形表示笼吟,大多數(shù)情況下把圖畫成頂點(diǎn)(代表事物)和豢馕铩(代表關(guān)系)的連通圖。
UML2.0
提供了13
種圖贷帮,分別是:
- 類圖
- 對象圖
- 用例圖
- 序列圖
- 通信圖
- 狀態(tài)圖
- 活動(dòng)圖
- 構(gòu)件圖
- 組合結(jié)構(gòu)圖
- 部署圖
- 包圖
- 交互概覽圖
- 計(jì)時(shí)圖
其中戚揭,序列圖、通信圖撵枢、交互概覽圖和計(jì)時(shí)圖均被稱為交互圖民晒。
1. 類圖
類圖展現(xiàn)了類、接口锄禽、協(xié)作和它們之間的關(guān)系镀虐。如下圖所示:
類圖用于對系統(tǒng)的靜態(tài)設(shè)計(jì)視圖建模。
當(dāng)對系統(tǒng)的靜態(tài)設(shè)計(jì)視圖建模時(shí)沟绪,通常以下述三種方式之一使用類圖:
-
對系統(tǒng)的詞匯建模
需要考慮:哪些抽象是考慮中的系統(tǒng)的一部分,哪些抽象處于系統(tǒng)邊界之外空猜。
用類圖詳細(xì)描述這些抽象和它們的職責(zé)绽慈。 -
對簡單的協(xié)作建模
協(xié)作是一些共同工作的類、接口和其他元素的群體辈毯,該群體提供的一些合作行為強(qiáng)于所有這些元素的行為之和坝疼。
例如,當(dāng)對分布式系統(tǒng)的事務(wù)語義建模時(shí)谆沃,不能僅僅盯著一個(gè)單獨(dú)的類來推斷要發(fā)生什么钝凶,而要有相互協(xié)作的一組類來實(shí)現(xiàn)這些語義。
用類圖對這組類以及它們之間的關(guān)系進(jìn)行可視化和詳述唁影。 -
對邏輯數(shù)據(jù)庫模式建模
將模式看作為數(shù)據(jù)庫的概念設(shè)計(jì)的藍(lán)圖耕陷,可以用類圖對這些數(shù)據(jù)庫的模式建模。
2. 對象圖
對象圖展現(xiàn)了某一時(shí)刻一組對象以及它們之間的關(guān)系据沈,描述了類圖中所建立的事物的實(shí)例的靜態(tài)快照哟沫。
對象圖一般包括對象和鏈。如下圖所示:
對象圖給出系統(tǒng)的靜態(tài)設(shè)計(jì)視圖或靜態(tài)進(jìn)程視圖锌介,這種視圖主要支持系統(tǒng)的功能需求嗜诀,即系統(tǒng)應(yīng)該提供給最終用戶的服務(wù)猾警。利用對象圖可以對靜態(tài)數(shù)據(jù)結(jié)構(gòu)建模,主要是對對象結(jié)構(gòu)進(jìn)行建模隆敢。
對象圖表示了交互圖表示的動(dòng)態(tài)場景的一個(gè)靜態(tài)畫面发皿,可以使用對象圖可視化、詳述拂蝎、構(gòu)造和文檔化系統(tǒng)中存在的實(shí)例以及它們之間的相互關(guān)系穴墅。
3. 用例圖
用例圖展現(xiàn)了一組用例、參與者及它們之間的關(guān)系匣屡。
用例圖通常包括:用例封救;參與者;用例之間的擴(kuò)展關(guān)系和包含關(guān)系捣作,參與者和用例之間的關(guān)聯(lián)關(guān)系誉结,用例與用例以及參與者與參與者之間的泛化關(guān)系。如下圖所示:
用例圖對系統(tǒng)的靜態(tài)用例視圖進(jìn)行建模券躁。這個(gè)視圖主要支持系統(tǒng)的行為惩坑,即該系統(tǒng)在它的周邊環(huán)境的語境中所提供的外部可見服務(wù)。
當(dāng)對系統(tǒng)的靜態(tài)用例視圖建模時(shí)也拜,可以用以下兩種方式來使用用例圖:
-
對系統(tǒng)的語境建模
對一個(gè)系統(tǒng)的語境進(jìn)行建模以舒,包括圍繞整個(gè)系統(tǒng)畫一條線,并聲明有哪些參與者位于系統(tǒng)之外并與系統(tǒng)進(jìn)行交互慢哈。在這里蔓钟,用例圖說明了參與者以及它們所扮演的角色的含義。 -
對系統(tǒng)的需求建模
對一個(gè)系統(tǒng)的需求進(jìn)行建模卵贱,包括說明這個(gè)系統(tǒng)應(yīng)該做什么滥沫,而不考慮系統(tǒng)應(yīng)該怎樣做。在這里键俱,用例圖說明了系統(tǒng)想要的行為兰绣。
4. 交互圖
交互圖用于對系統(tǒng)的動(dòng)態(tài)方面進(jìn)行建模。
交互圖表現(xiàn)為序列圖编振、通信圖缀辩、交互概覽圖和計(jì)時(shí)圖。
(1)序列圖
序列圖強(qiáng)調(diào)消息時(shí)間順序的交互圖踪央。描述了以時(shí)間順序組織的對象之間的交互活動(dòng)臀玄。如下圖所示:
形成序列圖時(shí),首先把參加交互的對象放在圖的上方杯瞻,沿水平方向排列镐牺。通常把發(fā)起交互的對象放在左邊,下級(jí)對象依次放在右邊魁莉。然后睬涧,把這些對象發(fā)送和接收的消息沿垂直方向按時(shí)間順序從上到下放置募胃。以此來形成控制流隨時(shí)間推移的清晰的可視化軌跡。
序列圖與通信圖不同的兩個(gè)特征:
- 序列圖有對象生命線
對象生命線是一條垂直的虛線畦浓,表示一個(gè)對象在一段時(shí)間內(nèi)存在痹束。- 大部分對象存在于整個(gè)交互過程中,所以這些對象全部排列在圖的頂部讶请,其生命線從圖的頂部畫到圖的底部祷嘶。
- 少部分對象在交互過程中創(chuàng)建,它們的生命線從接收到構(gòu)造型為
create
的消息時(shí)開始夺溢。 - 對象也可以在交互過程中撤銷论巍,它們的生命線在接收到構(gòu)造型為
destroy
的消息時(shí)結(jié)束(并且給出一個(gè)大X
的標(biāo)記表明生命的結(jié)束)。
- 序列圖有控制焦點(diǎn)
控制焦點(diǎn)是一個(gè)瘦高的矩形风响,表示一個(gè)對象執(zhí)行一個(gè)動(dòng)作所經(jīng)歷的時(shí)間段嘉汰,既可以是直接執(zhí)行,也可以是通過下級(jí)過程執(zhí)行状勤。
矩形的頂部表示動(dòng)作的開始鞋怀,底部表示動(dòng)作的結(jié)束。還可以通過將另一個(gè)控制焦點(diǎn)放在它的父控制焦點(diǎn)的右邊來顯示控制焦點(diǎn)的嵌套持搜。
(2)通信圖
通信圖強(qiáng)調(diào)接收和發(fā)送消息的對象的結(jié)構(gòu)組織密似。也被稱為協(xié)作圖。
產(chǎn)生一張通信圖葫盼,首先要將參加交互的對象作為圖的頂點(diǎn)残腌,然后把連接這些對象的鏈表示為圖的弧,最后用對象發(fā)送和接收的消息來修飾這些鏈贫导。如下圖所示:
通信圖有兩個(gè)不同于序列圖的特性:
- 通信圖有路徑
為了指出一個(gè)對象如何與另一個(gè)對象鏈接废累,可以在鏈的末端附上一個(gè)路徑構(gòu)造型。通常只需要顯式地表示以下幾種鏈的路徑:local(局部)
脱盲、parameter(參數(shù))
、global(全局)
日缨、self(自身)
钱反。 - 通信圖有順序號(hào)
為了表示一個(gè)消息的時(shí)間順序,可以給消息加一個(gè)數(shù)字前綴匣距。如果有嵌套的話面哥,可以使用帶小數(shù)點(diǎn)的號(hào)碼。
(3)交互概覽圖
交互概覽圖強(qiáng)調(diào)控制流毅待。是UML2.0
新增的交互圖之一尚卫,它是活動(dòng)圖的變體,描述業(yè)務(wù)過程中的控制流概覽尸红,軟件過程中的詳細(xì)邏輯概覽吱涉,以及將多個(gè)圖進(jìn)行連接刹泄,抽象掉了消息和生命線。使用活動(dòng)圖的表示法怎爵,如下圖所示:
(4)計(jì)時(shí)圖
計(jì)時(shí)圖是另一種新增的特石,特別適合實(shí)時(shí)和嵌入式系統(tǒng)建模的交互圖,關(guān)注沿著線性時(shí)間軸鳖链、生命線內(nèi)部和生命線之間的條件改變姆蘸。它描述對象狀態(tài)隨著時(shí)間改變的情況,項(xiàng)示波器芙委,適合分析周期和非周期性任務(wù)逞敷。如下圖所示:
5. 狀態(tài)圖
狀態(tài)圖展現(xiàn)了一個(gè)狀態(tài)機(jī),它由狀態(tài)灌侣、轉(zhuǎn)換推捐、事件和活動(dòng)組成。強(qiáng)調(diào)對象行為的事件順序顶瞳。
狀態(tài)圖通常包括簡單狀態(tài)和組合狀態(tài)玖姑、轉(zhuǎn)換(事件和動(dòng)作)。如下圖所示:
狀態(tài)是指對象的生命周期中某個(gè)條件或狀態(tài)慨菱,在此期間對象將滿足某些條件焰络、執(zhí)行某些活動(dòng)或等待某些事件,是對象執(zhí)行了一系列活動(dòng)的結(jié)果符喝,當(dāng)某個(gè)事件發(fā)生后闪彼,對象的狀態(tài)將發(fā)生變化。
6. 活動(dòng)圖
活動(dòng)圖是一種特殊的狀態(tài)圖协饲,它展現(xiàn)了在系統(tǒng)內(nèi)從一個(gè)活動(dòng)到另一個(gè)活動(dòng)的流程畏腕。如下圖所示:
活動(dòng)圖一般包括活動(dòng)狀態(tài)和動(dòng)作狀態(tài)、轉(zhuǎn)換和對象茉稠。
當(dāng)對一個(gè)系統(tǒng)的動(dòng)態(tài)方面建模時(shí)描馅,通常有兩種使用活動(dòng)圖的方式:
- 對工作流建模
關(guān)注的是與系統(tǒng)進(jìn)行協(xié)作的參與者所觀察到的活動(dòng)。 - 對操作建模
此時(shí)是把活動(dòng)圖當(dāng)作流程圖使用而线,對一個(gè)計(jì)算的細(xì)節(jié)部分建模铭污。
7. 構(gòu)件圖
構(gòu)件圖展現(xiàn)了一組構(gòu)件之間的組織和依賴。構(gòu)件圖專注于系統(tǒng)的靜態(tài)實(shí)現(xiàn)視圖膀篮,與類圖類似嘹狞,通常把構(gòu)件映射成一個(gè)或多個(gè)類、接口或協(xié)作誓竿。如下圖所示:
8. 組合結(jié)構(gòu)圖
組合結(jié)構(gòu)圖用于描述一個(gè)分類器(如類磅网、構(gòu)件或用例)的內(nèi)部結(jié)構(gòu),分類器與系統(tǒng)中其他組成部分之間的交互端口筷屡,展示一組相互協(xié)作的實(shí)例如何完成特定的任務(wù)涧偷,描述設(shè)計(jì)簸喂、架構(gòu)模式或策略。組合結(jié)構(gòu)圖的內(nèi)部結(jié)構(gòu)和協(xié)作使用圖分別如以下兩圖所示:
9. 部署圖
部署圖是用來對面向?qū)ο笙到y(tǒng)的物理方面建模的方法嫂丙,展現(xiàn)了運(yùn)行時(shí)處理結(jié)點(diǎn)以及其中構(gòu)件(制品)的配置娘赴。
在部署圖中,通常一個(gè)結(jié)點(diǎn)是一個(gè)在運(yùn)行時(shí)存在并代表一項(xiàng)計(jì)算資源的物理元素跟啤,至少擁有一些內(nèi)容诽表,常常具有處理能力,包含一個(gè)或多個(gè)構(gòu)件隅肥。如下圖所示:
10. 包圖
包圖是用于把模型本身組織成層次結(jié)構(gòu)的通用機(jī)制竿奏,不能執(zhí)行,展現(xiàn)由模型本身分解而成的組織單元以及其間的依賴關(guān)系腥放。
包可以擁有其他元素泛啸,可以是類、接口秃症、構(gòu)件候址、結(jié)點(diǎn)、協(xié)作种柑、用例和圖岗仑,甚至是嵌套的其他包。如下圖所示: