UML狀態圖(statechart)


一、狀態圖簡介(Brief introduction)

狀態圖(Statechart Diagram)主要用於描述一個對象在其生存期間的動態行爲,表現爲一個對象所經歷的狀態序列,引起狀態轉移的事件(Event),以及因狀態轉移而伴隨的動作(Action)。一般可以用狀態機對一個對象的生命週期建模,狀態圖用於顯示狀態機(State Machine Diagram),重點在與描述狀態圖的控制流。UML裏面的狀態圖基於Prof. David Harel 1987年發表的論文:"Statecharts: A Visual Formalism for Complex Systems" 增加了一些面向對象針對面向對象的概念。


如下圖“門”的狀態變化例子,狀態機描述了門對象的生存期間的狀態序列,引起轉移的事件,以及因狀態轉移而伴隨的動作


一扇門自從建造好了,總是不停的處於打開或者鎖住狀態。這裏所描述的狀態是離散了,不連續的。

二、狀態圖元素(State Diagram Elements)


1、狀態(State)

指在對象的生命週期中的某個條件或者狀況,在此期間對象將滿足某些條件執行某些活動等待某些事件。所有對象都有狀態,狀態是對象執行了一系列活動的結果,當某個事件發生後,對象的狀態將發生變化。

狀態用圓角矩形表示(如下圖)(傳統的有限狀態機:FSM的狀態圖  狀態用圓形表示


一個狀態有如下幾個部分:(看到這裏如果不懂可以先忽略,看下面的部分。)

名稱
將一個狀態與其他狀態區分開來的文本字符串;狀態也可能是匿名的,這表示它沒有名稱。
進入/退出操作
在進入和退出狀態時所執行的操作。
內部轉移
在不使狀態發生變更的情況下進行的轉移。
子狀態
狀態的嵌套結構,包括不相連的(依次處於活動狀態的)或並行的(同時處於活動狀態的)子狀態。
延遲的事件
未在該狀態中處理但被延遲處理(即列隊等待由另一個狀態中的對象來處理)的一系列事件。
圖形表述如下



2、轉移(Transition)

轉移(Transitions)是兩個狀態之間的一種關係,表示對象將在源狀態(Source State)中執行一定的動作,並在某個特定事件發生而且某個特定的警界條件滿足時進入目標狀態(Target State

      事件(Event):是轉移的誘因,可以是一個信號,事件、條件變化(a change in some condition)和時間表達式。

      警界條件(Guard Condition):當警界條件滿足時,事件纔會引發轉移(Transition)。

      結果(Effect)/動作(Action):對象狀態轉移後的結果(轉移後做什麼動作)。

     上面三個經常被稱爲ECA規則。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章