狀態圖::狀態

畫狀態圖,首先要識別系統有那些狀態。具體到交通信號燈這個例子中,我們選擇道路的通行狀況作為狀態,而兩個方向上信號燈的亮滅則是這些狀態的結果。

狀態

狀態對狀態機行為執行過程中的某個情況建模,在這個情況下,某些條件維持不變。在大多數情況下,這個條件不是被明確定義,而是通過與狀態關聯的名稱來隱式定義的。

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)

TAG:面向對象編程 | 面向對象分析與設計 | UML建模 |