狀態圖::狀態機

行為狀態機概念

以下內容摘自UML2,今天的內容是說明狀態機具有上下文類目的情況。

行為狀態機可以用於定義下面的場景(不限於)

. 主動類的類目行為

. 一個行為化類目的除了類目行為以外的擁有行為。

如果狀態機有某種行為類目上下文,那麼這個類目定義了哪些信號和調用事件可以適用於那個狀態機,也定義了哪些特徵對狀態機擁有的行為可用。狀態機的信號觸發條件和調用事件觸發條件根據這個類目的接受和操作被分別定義。這些特徵可以被用於定義狀態機的消息事件觸發條件。

--UML2.5 14.2.3.1 StateMachine(狀態機)

用一個不是很嚴密,但是簡單的說就是:狀態機可以用於定義類目的類目的行為。這時,狀態機可以調用上下文類目的行為,也可以將上下文類目中定義的事件用於定義狀態機的觸發條件。

示例

我們繼續使用按鈕式信號系統的例子。

定義上下文類目

在本例中就是一個類:TrafficLight.

TrafficLight類是一個主動類,主動類的行為就是狀態機。

TrafficLight類有兩個方法,SetCurrentLight和SetShuttingDownFlag。它們會在狀態機中調用。

為類目添加狀態機

打開【Project Browser】中TrafficLight的上下文菜單,選擇【Add】-【State Machine】菜單項。

就可以得到一個狀態機對象和一個狀態圖。

繪製狀態圖

接下來的內容就是我們前面講過的了。以下是按鈕式型號系統的狀態圖。

從圖中可以看出以下不同:

狀態圖的外面包圍著一個方框,表示這是一個狀態機。

狀態機的進入/退出行為,遷移的效應行為調用的是TrafficLight類的方法。

進入/退出行為的設定和表示方法

1.打開進入/退出行為對話框

2.選擇【Behavior】屬性頁

3.在【Behavior】文本框中輸入行為的詳細內容

4.如果需要類類圖中顯示詳細內容,則選擇藍色圓圈中的【Show Behavior in Diagram】項目。

參考資料:

14.2 Behavior StateMachines(1)--狀態機概要

14.2 Behavior StateMachines (10) --記法

打開方法如下:

1.進入【面向對象思考】 公眾號

2.打開【UML】-【UML2.5中文譯文】菜單

3.選擇【狀態圖】分類

4.選擇相關文章

以上就是今天的文章,歡迎點贊,關注並推薦給您的朋友!

閱讀更多更新文章,請關注【面向對象思考】微信公眾號!

推薦閱讀:

我對面向對象編程的一些理解
EA&UML日拱一卒--活動圖::活動
EA&UML日拱一卒--序列圖(Sequence Diagram)::消息簽名
EA&UML日拱一卒--活動圖::活動分區
類圖::添加操作和方法

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