狀態圖::狀態
畫狀態圖,首先要識別系統有那些狀態。具體到交通信號燈這個例子中,我們選擇道路的通行狀況作為狀態,而兩個方向上信號燈的亮滅則是這些狀態的結果。
狀態
狀態對狀態機行為執行過程中的某個情況建模,在這個情況下,某些條件維持不變。在大多數情況下,這個條件不是被明確定義,而是通過與狀態關聯的名稱來隱式定義的。
UML2.5-14.2 Behavior StateMachines (2)
對於交通信號系統,狀態是對交通信號系統中的某個交通狀態建模,在該狀態中,交通狀態維持不變,每個狀態的條件是通過狀態名來隱式定義的。
說就是有以下幾個狀態:
雙方向停止狀態(idle)
兩個方向的信號都是紅燈,雙方向禁止通行
道路1通行狀態(Road1Go)
道路1綠燈,車輛通行;道路2紅燈,禁止通行
道路1安全停止狀態(Road1StopSafely)
道路1黃燈,確認安全的前提下停車;道路2紅燈,禁止通行
道路2通行狀態(Road2Go)
道路1紅燈,禁止通行;道路2綠燈,車輛同行
道路2安全停止狀態(Road2StopSafely)
道路1紅燈,禁止通行;道路2黃燈,確認安全的前提下停車
狀態圖如下,各個狀態之間按照遷移線制定的方向遷移。
進入行為/退出行為
狀態可以有一個進入行為。如果定義了這個行為,每當通過外部遷移進入狀態的時候它就會被執行。另外,狀態也可以有一個關聯的退出行為,如果被定義了這個行為,每當狀態退出的時候它就會被執行。
UML2.5 14.2 Behavior StateMachines (3)
在本例中,為每個狀態設計了如下的進入和退出行為。
雙方向停止狀態(idle)
進入行為:設定雙方向信號狀態為紅燈
退出行為:無
道路1通行狀態(Road1Go)
進入行為:設定道路1信號狀態為綠燈,道路2信號狀態維持紅燈
退出行為:無
道路1安全停止狀態(Road1StopSafely)
進入行為:設定道路1信號狀態為黃燈,道路2信號狀態維持紅燈
退出行為:設定道路1信號狀態為紅燈,道路2信號狀態維持紅燈
道路2通行狀態(Road2Go)
進入行為:道路1信號狀態維持紅燈,設定道路2信號狀態為綠燈
退出行為:無
道路2安全停止狀態(Road2StopSafely)
進入行為:道路1信號維持為紅燈,設定道路2信號狀態為黃燈
退出行為:道路1信號維持為紅燈,設定道路2信號狀態為紅燈
參考資料:
14.2 Behavior StateMachines (2)
14.2 Behavior StateMachines (3)
打開方法如下:
1.進入【面向對象思考】 公眾號
2.打開【自選功能】-【UML2.5中文譯文】菜單
3.選擇【狀態圖】分類
4.選擇相關文章
以上就是今天的文章,歡迎點贊,關注並推薦給您的朋友!
閱讀更多更新文章,請關注【面向對象思考】微信公眾號!
推薦閱讀:
※狀態圖::基本要素畫法
※狀態圖::開篇
※Python實用技巧——類,屬性與裝飾器
※EA&UML日拱一卒--活動圖::活動分區
※EA&UML日拱一卒--類圖::枚舉類型(enumeration)