全面認識UML狀態圖
本文和大家重點討論一下UML狀態圖的概念,UML狀態圖(StatechartDiagram)主要用于描述引起狀態轉移的事件(Event),以及因狀態轉移而伴隨的動作(Action)。
詳解UML建模中的UML狀態圖
一、UML狀態圖簡介(Briefintroduction)
UML狀態圖(StatechartDiagram)主要用于描述一個對象在其生存期間的動態行為,表現為一個對象所經歷的狀態序列,引起狀態轉移的事件(Event),以及因狀態轉移而伴隨的動作(Action)。一般可以用狀態機對一個對象的生命周期建模,UML狀態圖用于顯示狀態機(StateMachineDiagram),重點在與描述UML狀態圖的控制流。如下圖例子,狀態機描述了門對象的生存期間的狀態序列,引起轉移的事件,以及因狀態轉移而伴隨的動作(Action)。
狀態有Opened、Closed、Locked。
事件有Open、Close、Lock和Unlock。
注意:
1、并不是所有的事件都會引起狀態的轉移,比如當門是處于【Opened】狀態,不能進行【Lock】事件。
2、轉移(Transition)有警備條件(guardcondition),比如只有doorWay->isEmpty條件滿足時,才會響應事件。
二、UML狀態圖元素(StateDiagramElements)
1、狀態(States)
指在對象的生命周期中的某個條件或者狀況,在此期間對象將滿足某些條件、執行某些活動活活等待某些事件。所有對象都有狀態,狀態是對象執行了一系列活動的結果,當某個事件發生后,對象的狀態將發生變化。
狀態用圓角矩形表示
初態和終態(InitialandFinalStates)初態用實心圓點表示,終態用圓形內嵌圓點表示。
2、轉移(Transitions)
轉移(Transitions)是兩個狀態之間的一種關系,表示對象將在源狀態(SourceState)中執行一定的動作,并在某個特定事件發生而且某個特定的警界條件滿足時進入目標狀態(TargetState)
事件標記(Trigger):是轉移的誘因,可以是一個信號,事件、條件變化(achangeinsomecondition)和時間表達式。
警界條件(GuardCondition):當警界條件滿足時,事件才會引發轉移(Transition)。
結果(Effect):對象狀態轉移后的結果。
3、動作(StateActions)
動作(Actions)是一個可執行的原子操作,也就是說動作是不可中斷的,其執行時間是可忽略不計的。
在上例中,對象狀態轉移后的結果顯示在轉移線上,如果目標狀態有許多轉移,而且每個轉移有相同的結果,這時把轉移后的結果(Effect)展示在目標狀態中(TargetState)更好一些,可以定義進入動作(EntryAction)和退出動作(ExitAction),如下圖
4、自身轉移(Self-Transitions)
狀態可以有返回自身狀態的轉移,稱之為自身轉移(Self-Transitions)
2S后,Pollinput事件執行,轉移到自己狀態【Waiting】
5、組合狀態(CompoundStates)
嵌套在另外一個狀態中的狀態稱之為子狀態(sub-state),一個含有子狀態的狀態被稱作組合狀態(CompoundStates).如下圖,【CheckPIN】是組合狀態,【EnterPIN】是子狀態。
6、進入節點(EntryPoint)
由于一些原因并不會執行初始化(initialization),而是直接通過一個節點進入狀態【Ready】,則此節點稱之為進入節點(EntryPoint)
7、退出節點(ExitPoint)
8、歷史狀態(HistoryStates)
歷史狀態是一個偽狀態(Pseudostate),其目的是記住從組合狀態中退出時所處的子狀態,當再次進入組合狀態,可直接進入這個子狀態,而不是再次從組合狀態的初態開始。
如果是從狀態【Rinsing】突然停電(PowerCut)退出,,洗衣機停止工作進入狀態【PowerOff】,當電力恢復時直接進入狀態【Running】。
9、并發區域(ConcurrentRegions)
UML狀態圖可以分為區域,而區域又包括退出或者當前執行的子狀態。說明組合狀態在某一時刻可以同時達到多個子狀態。如下圖剎車系統,同時進入前剎車【ApplyingFrontBrakes】狀態和后剎車【ApplyingRearBrakes】狀態。
【編輯推薦】