上篇文章,介紹了UML狀態(tài)圖,并通過visio繪制一個(gè)全自動(dòng)洗衣機(jī)的UML狀態(tài)圖實(shí)例進(jìn)行講解。
本篇,來繼續(xù)介紹UML中的另一種圖——時(shí)序圖。
1 時(shí)序圖簡介
時(shí)序圖(Sequence Diagram),也叫****順序圖 ,或 序列圖 ,是一種UML動(dòng)態(tài)圖。
UML具有許多不同類型的圖表,包括:
- 靜態(tài)圖:用例圖、類圖、包圖
- 動(dòng)態(tài)圖:活動(dòng)圖、狀態(tài)圖、時(shí)序圖、協(xié)作圖
時(shí)序圖通過描述對象之間發(fā)送消息的****時(shí)間順序顯示多個(gè)對象之間的 交互模式 。**
**
時(shí)序圖將交互關(guān)系表示為一個(gè)二維圖
- 縱向是時(shí)間軸,時(shí)間沿豎線向下延伸;橫向軸代表了在協(xié)作中各獨(dú)立對象的類元角色。
- 類元角色用****生命線表示。當(dāng)對象存在時(shí),角色用一條虛線表示;當(dāng)對象的過程處于激活狀態(tài)時(shí),生命線是一個(gè) 垂直矩形 。
- 消息用從一個(gè)對象的生命線到另一個(gè)對象生命線的箭頭表示。
- 箭頭以時(shí)間順序在圖中從上到下排列。
2 時(shí)序圖元素介紹
2.1 參與者
參與者,或稱為系統(tǒng)角色,以一個(gè)小人圖標(biāo)表示。
2.2 對象
對象,以一個(gè)矩形表示,在一個(gè)系統(tǒng)中可以有多個(gè)對象。
2.3 生命線
生命線就是一條垂直的虛線。
2.4 激活
激活,也叫****會(huì)話 ,或 控制焦點(diǎn) ,代表時(shí)序圖中對象執(zhí)行一項(xiàng)操作的時(shí)期, 表示該對象被占用以完成某個(gè)任務(wù),以一個(gè)垂直的窄的矩形表示。
2.5 消息
2.5.1 (同步)消息
以一條實(shí)線和實(shí)心箭頭表示。
消息的發(fā)送者把控制傳遞給消息的接收者,然后停止活動(dòng),等待消息的接收者放棄或者返回控制。用來表示同步的意義。
2.5.2 返回消息
以小于號(hào)和虛線表示。
返回消息表示從過程調(diào)用返回。
2.5.3 異步消息
以一條實(shí)線和大于號(hào)表示。
消息發(fā)送者通過消息把信號(hào)傳遞給消息的接收者,然后繼續(xù)自己的活動(dòng),不等待接受者返回消息或者控制。異步消息的接收者和發(fā)送者是并發(fā)工作的。
2.5.4 自關(guān)聯(lián)消息
以一個(gè)半閉合的長方形+下方實(shí)心剪頭表示。
表示方法的自身調(diào)用或者一個(gè)對象內(nèi)的一個(gè)方法調(diào)用另外一個(gè)方法。
2.6 片段
2.6.1 選擇片段
選擇片段,或稱****條件分支 ,可根據(jù)不同的條件,執(zhí)行不同的交互,類似于if-else語句
2.6.2 循環(huán)片段
表明該片段會(huì)被重復(fù)執(zhí)行,類似于while或for語句
2.6.3 并向片段
2.6.4 片段總結(jié)
片段的功能,除了上面介紹的選擇、循環(huán)和并向、還有許多其它類型,這里詳細(xì)列舉一下,作為參考:
片段類型 | 名稱 | 說明 |
---|---|---|
Alt | 選擇 | 在一組行為中根據(jù)特定的條件選擇某個(gè)交互 |
Loop | 循環(huán) | 交互片段會(huì)被重復(fù)執(zhí)行 |
Par | 并行 | 支持交互片段的并發(fā)執(zhí)行 |
Opt | 選項(xiàng) | 表示一個(gè)可選的行為 |
Break | 中斷 | 提供了和編程語言中的break類擬的機(jī)制 |
Seq | 弱順序 | 有兩個(gè)或更多操作數(shù)片段,如果消息涉及的生命線不同,會(huì)并行交錯(cuò) |
Strict | 強(qiáng)順序 | 有兩個(gè)或更多操作數(shù)片段,這些片段必須按給定順序發(fā)生 |
默認(rèn)情況下,序列圖表明可能發(fā)生的一系列消息。在運(yùn)行的系統(tǒng)中,可能會(huì)出現(xiàn)您未選擇顯示在關(guān)系圖上的其他消息。
以下片段類型可用于更改此釋義:
片段類型 | 名稱 | 說明 |
---|---|---|
Consider | 考慮 | 明確標(biāo)志了應(yīng)該被處理的消息 |
Assert | 斷言 | 標(biāo)志了在交互片段中作為事件唯一的合法繼續(xù)者的操作數(shù) |
Neg | 否定 | 用來標(biāo)志不應(yīng)該發(fā)生的交互 |
Ignore | 忽略 | 明確定義了交互片段不應(yīng)該響應(yīng)的消息 |
3 visio繪制UML時(shí)序圖
3.1 visio創(chuàng)建時(shí)序圖
新建一個(gè)visio文件,打開后會(huì)自動(dòng)提示選擇創(chuàng)建某種類型的圖,這里選擇"軟件和數(shù)據(jù)庫 ->UML序列"
點(diǎn)擊確定之后,會(huì)進(jìn)入U(xiǎn)ML時(shí)序圖的編輯界面,左側(cè)可以看到用于UML時(shí)序圖編輯的基本元素,將這些元素拖拽到右側(cè)的編解面板中,可以看到這些元素的基本結(jié)構(gòu)形式:
注意visio中的生命線繪圖元素,實(shí)際上包含了參加者元素或?qū)ο笤?,所以命名為了參與者生命線和對象生命線
3.2 時(shí)序圖實(shí)例
下面通過一個(gè)實(shí)例來介紹一下UML時(shí)序圖的畫法。
這是一個(gè)嵌入式開發(fā)中,常見的對物聯(lián)網(wǎng)設(shè)備進(jìn)行配網(wǎng)的操作流程,配網(wǎng)的方式有很多,這個(gè)是時(shí)序圖是其中的一種配網(wǎng)方式——設(shè)備熱點(diǎn)配網(wǎng)。
解讀一下此時(shí)序圖:
- 參與者(主角)是用戶,因?yàn)槭怯脩粲|發(fā)了整個(gè)流程的執(zhí)行
- 對象有3個(gè):手機(jī)上的APP程序、待連網(wǎng)的物聯(lián)網(wǎng)設(shè)備、WiFi路由器
- 配網(wǎng)的時(shí)序邏輯為:
- 用戶按下設(shè)備的配網(wǎng)按鈕,設(shè)備開啟一個(gè)熱點(diǎn),并廣播自己的熱點(diǎn)信息(熱點(diǎn)名稱和密碼)
- 用戶在APP上輸入WiFi路由器的名稱和密碼(用于后續(xù)發(fā)給設(shè)備)
- 用戶操作APP,連接上設(shè)備的熱點(diǎn),然后把WiFi路由器的名稱和密碼發(fā)給設(shè)備
- 設(shè)備收到WiFi路由器的名稱和密碼后,嘗試連接路由器,配網(wǎng)成功
本時(shí)序圖中,暫未體現(xiàn)出片段的用法,以后有能用到片段用法的例子再舉例分析。
3.4 visio中框圖不能調(diào)節(jié)寬度解決
在用Visio繪制UML時(shí)序圖,使用“交互操作數(shù)”時(shí),可能遇到寬度被鎖定不能調(diào)節(jié)的問題,解決方法如下:
步驟一:文件----選項(xiàng)----高級----常規(guī)-----勾選“以開發(fā)人員模式運(yùn)行”
步驟二:菜單欄出現(xiàn)“開發(fā)工具”選項(xiàng),點(diǎn)擊受保護(hù)框圖,取消寬度的保護(hù)
4 總結(jié)
本篇介紹了UML時(shí)序圖的基礎(chǔ)知識(shí),并通過visio繪制一個(gè)物聯(lián)網(wǎng)設(shè)備WIFI配網(wǎng)的UML時(shí)序圖實(shí)例,來介紹UML時(shí)序圖的畫法與所表達(dá)的含義。
審核編輯:湯梓紅
-
嵌入式
+關(guān)注
關(guān)注
5087文章
19150瀏覽量
306356 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2911文章
44802瀏覽量
375010 -
UML
+關(guān)注
關(guān)注
0文章
122瀏覽量
30876 -
時(shí)序圖
+關(guān)注
關(guān)注
2文章
58瀏覽量
22469
發(fā)布評論請先 登錄
相關(guān)推薦
評論