一文搞懂時(shí)序圖、活動(dòng)圖、狀態(tài)圖、協(xié)作圖的區(qū)別
時(shí)序圖用于描述對(duì)象之間的傳遞消息的時(shí)間順序, 即用例中的行為順序。
當(dāng)執(zhí)行一個(gè)用例時(shí), 時(shí)序圖中的每條消息對(duì)應(yīng)了一個(gè)類操作或者引起轉(zhuǎn)換的觸發(fā)事件.
在 UML 中, 時(shí)序圖表示為一個(gè)二維的關(guān)系圖。其中, 縱軸是時(shí)間軸, 時(shí)間延豎線向下延伸,橫軸代表在協(xié)作中各個(gè)獨(dú)立的對(duì)象,當(dāng)對(duì)象存在時(shí), 生命線用一條虛線表示, 消息用從一個(gè)對(duì)象的生命線到另一個(gè)對(duì)象的生命線的箭頭表示。箭頭以時(shí)間的順序在圖中上下排列。
ATM 用戶成功登陸的時(shí)序圖
時(shí)序圖中的基本概念
對(duì)象:
時(shí)序圖中對(duì)象使用矩形表示, 并且對(duì)象名稱下有下劃線. 將對(duì)象置于時(shí)序圖的頂部說(shuō)明在交互開(kāi)始時(shí)對(duì)象就已經(jīng)存在了. 如果對(duì)象的位置不在頂部, 表示對(duì)象是在交互的過(guò)程中被創(chuàng)建的.
生命線:
生命線是一條垂直的虛線. 表示時(shí)序圖中的對(duì)象在一段生命周期內(nèi)存在. 每個(gè)對(duì)象底部中心的位置都帶有生命線.
消息:
兩個(gè)對(duì)象之間的單路通信. 從發(fā)送方指向接收方. 在時(shí)序圖中很少使用返回消息.
激活:
時(shí)序圖可以描述對(duì)象的激活和鈍化. 激活表示該對(duì)象被占用以完成某個(gè)任務(wù). 鈍化指對(duì)象處于空閑狀態(tài), 等待消息. 在 UML 中, 對(duì)象激活時(shí)將對(duì)象的生命線拓寬為矩形來(lái)表示的. 矩形稱為計(jì)劃條或控制期. 對(duì)象就是在激活條的頂部被激活的. 對(duì)象在完成自己的工作后被鈍化.
對(duì)象的創(chuàng)建和銷(xiāo)毀:
在時(shí)序圖中, 對(duì)象的默認(rèn)位置是在圖的頂部. 這說(shuō)明對(duì)象在交互開(kāi)始之前就已經(jīng)存在了. 如果對(duì)象是在交互過(guò)程中創(chuàng)建的, 那么就應(yīng)該將對(duì)象放到中間部分. 如果要撤銷(xiāo)一個(gè)對(duì)象, 在其生命線終止點(diǎn)處放置 “ X” 符號(hào).
練習(xí):
孫中山的……
活動(dòng)圖
在 UML 中, 活動(dòng)圖本質(zhì)上就是流程圖. 它用于描述系統(tǒng)的活動(dòng), 判定點(diǎn)和分支等.
活動(dòng)圖中的基本概念
動(dòng)作狀態(tài):
原子的, 不可中斷的動(dòng)作, 并在此動(dòng)作完成之后向另一個(gè)動(dòng)作轉(zhuǎn)變. 在 UML 中動(dòng)作狀態(tài)用圓角矩形 表示, 動(dòng)作狀態(tài)所表示的動(dòng)作寫(xiě)在圓角矩形內(nèi)部.
分支與合并:
分支在軟件系統(tǒng)中很常見(jiàn). 一般用于表示對(duì)象類所具有的條件行為. 用一個(gè)布爾型表達(dá)式的真假來(lái)判定動(dòng)作的流向. 條件行為用分支和合并表達(dá).在活動(dòng)圖中, 分支用空心小菱形 表示. 分支包括一個(gè)入轉(zhuǎn)換和兩個(gè)帶條件的出轉(zhuǎn)換, 出轉(zhuǎn)換的條件應(yīng)該是互斥的, 須保證只有一條出轉(zhuǎn)換能夠被觸發(fā). 合并包含兩個(gè)帶條件的入轉(zhuǎn)換和一個(gè)出轉(zhuǎn)換。
狀態(tài)圖
通過(guò)建立對(duì)象的生存周期模型來(lái)描述對(duì)象隨時(shí)間變化的動(dòng)態(tài)行為。
狀態(tài)圖中的基本概念
狀態(tài):
用圓角矩形表示. 狀態(tài)名稱表示狀態(tài)的名字, 通常用字符串表示. 一個(gè)狀態(tài)的名稱在狀態(tài)圖所在的上下文中應(yīng)該是唯一的.
轉(zhuǎn)換: 用帶箭頭的直線表示. 一端連著源狀態(tài), 一端連著目標(biāo)狀態(tài)。
狀態(tài)圖
狀態(tài)圖可以展現(xiàn)一個(gè)對(duì)象擁有的狀態(tài),還可以說(shuō)明事件如何隨著時(shí)間的推移來(lái)影響這些狀態(tài)。例如:圖書(shū)有借閱,在館,報(bào)廢等狀態(tài)。
概念
下面幾個(gè)概念需要掌握:
狀態(tài):狀態(tài)是給定類的對(duì)象的一組屬性值,這組屬性值對(duì)所發(fā)生的事件具有相同性質(zhì)的反應(yīng)。
轉(zhuǎn)換:轉(zhuǎn)換是狀態(tài)間的關(guān)聯(lián)。當(dāng)一個(gè)特定事件發(fā)生或者某些條件得到滿足時(shí),一個(gè)源狀態(tài)下的對(duì)象在完成一定的動(dòng)作后將發(fā)生狀態(tài)轉(zhuǎn)變,轉(zhuǎn)向另一個(gè)稱為目標(biāo)狀態(tài)的狀態(tài)。一般狀態(tài)之間的轉(zhuǎn)移是由事件觸發(fā)的。例如:再館的圖書(shū)由于讀者借書(shū)事件觸發(fā)轉(zhuǎn)換為借閱狀態(tài)。
轉(zhuǎn)換不但能在兩個(gè)狀態(tài)之間發(fā)生,還可能在單個(gè)狀態(tài)中發(fā)生。
事件:事件表示在某一特定的時(shí)間或空間出現(xiàn)的能夠引發(fā)狀態(tài)改變的運(yùn)動(dòng)變化。例如上面的借書(shū)就是一個(gè)事件。
初始狀態(tài):
每個(gè)狀態(tài)圖都有一個(gè)初始狀態(tài). 此狀態(tài)代表狀態(tài)圖的起始位置. 初始狀態(tài)只能作為轉(zhuǎn)換的源, 不能作為轉(zhuǎn)換的目標(biāo), 并且在狀態(tài)圖中只能有一個(gè). 初始狀態(tài)用一個(gè)實(shí)心圓表示。
終止?fàn)顟B(tài): 模型元素的最后狀態(tài), 是一個(gè)狀態(tài)圖的終止點(diǎn). 終止?fàn)顟B(tài)在一個(gè)狀態(tài)圖中可以有多個(gè)。
協(xié)作圖
也叫合作圖,是一種交互圖。
時(shí)序圖主要側(cè)重于對(duì)象間消息傳遞在時(shí)間上的先后關(guān)系, 而協(xié)作圖表達(dá)對(duì)象間的交互過(guò)程及對(duì)象間的關(guān)聯(lián)關(guān)系。