上篇文章,介紹了UML的基礎知識,并詳細介紹了UML中類圖的知識點與畫法。
本篇,來繼續介紹UML中的另一種圖——狀態圖。
1 UML狀態圖簡介
狀態圖,顯示一個狀態機,屬于UML活動圖。
UML具有許多不同類型的圖表,包括:
- 靜態圖:用例圖、類圖、包圖
- 動態圖:活動圖、狀態圖、時序圖、協作圖
狀態機用于對模型元素的動態行為進行建模,或是說對系統中受事件驅動的方面進行建模。
2 狀態圖基本要素
2.1 狀態
狀態是狀態機的重要組成部分,描述了狀態機所在對象動態行為的執行所產生的結果
2.1.1 初始/最終/選擇狀態
這三個都是****偽狀態 (Pseudostate):
- 初始狀態:用一個實心圓形表
- 最終狀態:用一個圓圈內嵌實心圓點表示
- 選擇狀態:用一個菱形表示,條件分支上方括號內的文字表示****監護條件 (guard conditions)
2.1.2 一般狀態
UML中使用一個圓角矩形表示一個一般狀態
狀態的組成部分:
- 名稱:由一個字符串組成,用以識別不同狀態。可匿名,一般放置在狀態圖符頂部
- 入口/出口動作:表示進入/退出這個狀態所執行的動作,動作可以是原子動作,也可是動作序列
- 內部轉換:內部轉換不會引起狀態變化的轉換,此轉換的觸發不會導致狀態的入口/出口動作被執行。語法:事件/動作表達式
2.1.3 復合狀態
復合狀態,或稱組合狀態,是指包含有子狀態的狀態。
如下圖,“復合狀態2”即為復合狀態,內部的“狀態2-1”、"狀態2-2"為子狀態。
也可用以下形式表示,將復合狀態的內容單獨畫出。
注:圖中的圓圈內一個H字母,表示****歷史狀態 ,它也是一個偽狀態,其目的是記住從組合狀態中退出時所處的子狀態,當再次進入組合狀態,可直接進入這個子狀態,而不是再次從組合狀態的初態開始
2.2 轉換
轉換(Transition)是兩個狀態之間的關聯。表示對象在第一個狀態(Source State)中執行一定的動作,并在某個特定事情發生并且某個特定的條件滿足時進入下一個狀態(Target State)。
2.2.1 一般轉換
一般情況下的狀態轉換是兩個不同狀態之間的轉換,示意圖如下:
轉換的組成部分:
- 源狀態(Source State):源狀態就是被轉換影響的狀態。某對象處于源狀態,當它接收到觸發事件或滿足監護條件,就會激活一個轉換
- 目標狀態(Target State):轉換完成后,對象狀態發生變化,這時對象所處的狀態就是轉換的目標狀態
- 觸發事件(Trigger):引起轉換的事件,這里所指的事件可以是信號、調用、時間段或狀態的一個改變
- 監護條件(Guard Condition):是一個方括號括起來的布爾表達式,它被放在觸發事件的后面。監護條件可以引用對象的屬性值和觸發事件的參數
- 結果(Effect):對象狀態轉移后的結果
2.2.2 自身轉換
自身轉換(Self-Transitions),是指狀態可以有返回自身狀態的轉換。
2.2.3 本地轉換與外部轉換
對于復合狀態之間的轉換,需要注意本地轉換(Local transition)與外部轉換(External transition)的不同。
上圖中,左邊是本地轉換,右邊是外部轉換。
- 上面兩個,源狀態包含了目標狀態,這種情況兩種轉換的區別在于:本地轉換不會從源狀態退出(不會執行退出動作),而外部轉換會退出再重新進入源狀態。
- 下面兩個,目標狀態包含了源狀態,這種情況兩種轉換的區別在于:本地轉換不會再次進入目標狀態(不會執行進入動作),而外部轉換會退出再重新進入目標狀態。
3 一個UML狀態圖實例
3.1 使用visio繪制UML狀態圖
新建一個visio文件,打開后會自動提示選擇創建某種類型的圖,這里選擇"軟件和數據庫 ->UML狀態機"
點擊確定之后,會進入UML狀態圖的編輯界面,左側可以看到用于UML狀態圖編輯的基本元素,將這些元素拖拽到右側的編解面板中,可以看到這些元素的基本結構形式:
3.2 實例講解
下面是一個UML狀態圖的實例:
這是一個全自動洗衣機的UML狀態圖,主要包括“設置”、“工作中”、“暫停”這3個狀態。
- 開機時,會先進入“設置”狀態,可以設置洗衣模式以及水量等,觸發啟動后,會進入“工作中”狀態。
- “工作中”是一個復合狀態,內部包括“加水”、“清洗”、“排水”、“甩干”這4個子狀態。進入該狀態后,從“加水”子狀態開始執行,然后會執行“清洗”、"排水"子狀態,排水完成后,根據清洗次數是否足夠,跳轉到“加水”或“甩干”子狀態。
- 在“工作中”狀態時,無論處于哪個子狀態,只有按了暫停鍵,都會進入“暫停”狀態,再按繼續,則會進入“工作中”繼續執行,注意繼續時指向的是歷史狀態(圓圈內一個H字母),表示繼續指向剛才暫停時的子狀態。
4 總結
本篇介紹了UML狀態圖的基礎知識,并通過visio繪制一個全自動洗衣機的UML狀態圖實例,來介紹UML狀態圖的畫法與所表達的含義。
審核編輯:湯梓紅
-
UML
+關注
關注
0文章
122瀏覽量
30848 -
時序圖
+關注
關注
2文章
57瀏覽量
22438 -
狀態機
+關注
關注
2文章
492瀏覽量
27477 -
狀態圖
+關注
關注
0文章
11瀏覽量
7312
發布評論請先 登錄
相關推薦
評論