一、狀態圖簡介(Brief introduction)
狀態圖(Statechart Diagram)主要用於描述一個對象在其生存期間的動態行爲,表現爲一個對象所經歷的狀態序列,引起狀態轉移的事件(Event),以及因狀態轉移而伴隨的動作(Action)。一般可以用狀態機對一個對象的生命週期建模,狀態圖用於顯示狀態機(State Machine Diagram),重點在與描述狀態圖的控制流。UML裏面的狀態圖基於Prof. David Harel 1987年發表的論文:"Statecharts: A Visual Formalism for Complex Systems" 增加了一些面向對象針對面向對象的概念。
一扇門自從建造好了,總是不停的處於打開或者鎖住狀態。這裏所描述的狀態是離散了,不連續的。
二、狀態圖元素(State Diagram Elements)
指在對象的生命週期中的某個條件或者狀況,在此期間對象將滿足某些條件、執行某些活動或等待某些事件。所有對象都有狀態,狀態是對象執行了一系列活動的結果,當某個事件發生後,對象的狀態將發生變化。
狀態用圓角矩形表示(如下圖)(傳統的有限狀態機:FSM的狀態圖 狀態用圓形表示)
一個狀態有如下幾個部分:(看到這裏如果不懂可以先忽略,看下面的部分。)
名稱
|
將一個狀態與其他狀態區分開來的文本字符串;狀態也可能是匿名的,這表示它沒有名稱。
|
進入/退出操作
|
在進入和退出狀態時所執行的操作。
|
內部轉移
|
在不使狀態發生變更的情況下進行的轉移。
|
子狀態
|
狀態的嵌套結構,包括不相連的(依次處於活動狀態的)或並行的(同時處於活動狀態的)子狀態。
|
延遲的事件
|
未在該狀態中處理但被延遲處理(即列隊等待由另一個狀態中的對象來處理)的一系列事件。
|
事件(Event):是轉移的誘因,可以是一個信號,事件、條件變化(a change in some condition)和時間表達式。
警界條件(Guard Condition):當警界條件滿足時,事件纔會引發轉移(Transition)。
結果(Effect)/動作(Action):對象狀態轉移後的結果(轉移後做什麼動作)。
上面三個經常被稱爲ECA規則。