概述
狀態圖(Statechart Diagram)主要用於描述一個對象在其生存期間的動態行為,表現為一個對象所經歷的狀態序列,引起狀態轉移的事件(Event),以及因狀態轉移而伴隨的動作(Action)。一般可以用狀態機對一個對象的生命周期建模,狀態圖用於顯示狀態機(State Machine Diagram),重點在與描述狀態圖的控制流。
狀態圖元素(State Diagram Elements)
1、狀態(States)
指在對象的生命周期中的某個條件或者狀況,在此期間對象將滿足某些條件、執行某些活動活活等待某些事件。所有對象都有狀態,狀態是對象執行了一系列活動的結果,當某個事件發生后,對象的狀態將發生變化。
狀態用圓角矩形表示.
初態和終態(Initial and Final States)
初態用實心圓點表示,終態用圓形內嵌圓點表示。
2、轉移(Transitions)
轉移(Transitions)是兩個狀態之間的一種關系,表示對象將在源狀態(Source State)中執行一定的動作,並在某個特定事件發生而且某個特定的警界條件滿足時進入目標狀態(Target State)
事件標記(Trigger):是轉移的誘因,可以是一個信號,事件、條件變化(a change in some condition)和時間表達式。如上圖Approve
結果(Effect):對象狀態轉移后的結果。
3、動作(State Actions)
動作(Actions)是一個可執行的原子操作,也就是說動作是不可中斷的,其執行時間是可忽略不計的。
在上例中,對象狀態轉移后的結果顯示在轉移線上,如果目標狀態有許多轉移,而且每個轉移有相同的結果,如下圖Center hospital doctor 有Forward Diagnosis 操作:
4、自身轉移(Self-Transitions)
狀態可以有返回自身狀態的轉移,稱之為自身轉移(Self-Transitions),如上圖,Forward就是自循環.
5、判定(Decision)
判定用空心小菱形表示。工作流在此處按監護條件的取值而發生分支。
6、並發區域(Concurrent Regions)
狀態圖可以分為區域,而區域又包括退出或者當前執行的子狀態。說明組合狀態在某一時刻可以同時達到多個子狀態。如下圖剎車系統,同時進入前剎車【Applying Front Brakes】狀態和后剎車【Applying Rear Brakes】狀態。
7、歷史狀態:
狀態機描述對象的動態方面,該對象的當前行為依賴於過去。
除非特別說明,當一個轉換進入一個組合狀態時,嵌套的狀態機的動作就又處於它的初始狀態(當然,除非這個轉換的目標直接指向一個子狀態)。然而在很多情況下,對一個對象的狀態建模,需要記住在離開組合狀態之前最后活動着的子狀態。例如,在對一個通過網絡進行計算機備份的代理的行為進行建模時,如果它曾被中斷(例如,被操作員的查詢中斷),那么自然需要記住是在該過程中的什么地方被中斷的。
淺歷史偽狀態和深歷史偽狀態:
下面再來看一個完成的狀態圖
再來看看用Visio畫出來的效果:
更直觀一些,更容易理解.
總結(Summary)
狀態圖重點在於描述對象的狀態及其狀態之間的轉移,狀態圖的基本元素主要有:狀態、轉移、動作、自身轉移、組合狀態、進入節點、退出節點、歷史狀態、並發區域等,狀態中的事件分為調用事件(Call)、變化事件(Change)、時間事件(Time)和信號事件(Singal)。最后以實例對狀態對進行了分析。
參考文獻:
http://www.cnblogs.com/ywqu/archive/2009/12/17/1626043.html UML建模之狀態圖(Statechart Diagram)
歡迎各位參與討論,如果覺得對你有幫助,請點擊 推薦下,萬分謝謝.
作者:spring yang
出處:http://www.cnblogs.com/springyangwc/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。