目錄
1、概念
2、組成結構
3、一般用法
4、常用建模技術
4.1、對反應型對象建模
一個狀態圖顯示了一個狀態機。在為對象的生命期建模中
活動圖展示的是跨過不同的對象從活動到活動的控制流
狀態圖展示的是單個對象內從狀態到狀態的控制流。
在UML中,用狀態圖對一個對象按事件排序的行為建模。
1、概念
狀態圖 (state diagram)顯示了一個狀態機,它強調從狀態到狀態的控制流。
狀態機 (state machine)是一個行為,它說明對象在它的生命期中響應事件所經歷的狀態序列以及它對那些事件的響應。
狀態(state)是對象的生命期中的一個條件或狀況,在此期間對象將滿足某些條件、執行某些活動或等待某些事件。
事件(event)是對一個有意義的發生的規約,這種發生在時間和空間上占有一定位置。在狀態機的語境中,事件是一次激勵的發生,激勵能夠觸發狀態轉移。
轉移(transition)是兩個狀態之間的關系,它指明當特定事件發生而且特定條件滿足時,在第一個狀態中的對象執行一定的動作并進入第二個狀態。
活動 (activity)是狀態機中正在進行的執行。
動作 (action)是一個可執行的原子計算,它引起模型狀態改變或值的返回。
在圖形上,狀態圖是頂點和弧的集合。
?
2、組成結構
狀態圖通常包括:
簡單狀態和組合狀態;
轉移、事件和動作。
與所有其他圖一樣,狀態圖也可以包括注解和約束。
狀態圖基本上是狀態機中的元素的投影。這意味著狀態圖可以包括分支、分岔、匯合、動作狀態、活動狀態、對象、初始狀態、終止狀態和歷史狀態等。
事實上,狀態圖可以包括狀態機的任何和所有特征。
3、一般用法
反應型(或事件驅動的)對象是這樣一種對象,其行為通常是由對來自其語境外部的事件所做出的反應來最佳刻畫的。反應型對象在接收到一個事件之前通常處于空閑狀態;當它接收到一個事件時,它的反應常常依賴于以前的事件;在這個對象對事件做出反應后,它就又變成空閑狀態,等待下一個事件。對于這種對象,將著眼于對象的穩定狀態,觸發從狀態到狀態轉移的事件,以及當每個狀態改變時所發生的動作。
4、常用建模技術
4.1、對反應型對象建模
交互是對共同工作的對象群體的行為建模,
狀態圖是對一個單獨的對象在它的生命期中的行為建模。
活動圖是對從活動到活動的控制流建模,狀態圖是對從事件到事件的控制流建模。
這個對象可能處于的穩定狀態、
觸發從狀態到狀態的轉移的事件
以及當每個狀態改變時發生的動作。
對反應型對象的行為建模還包括對對象的生命期建模,從對象的創建時刻開始,直到它被撤銷時結束,強調在其中可能發現的這個對象的穩定狀態。
????????穩定狀態表示一個條件,對象可以在該條件下存在一段可識別的時間。當一個事件發生時,這個對象可能從一個狀態轉移到另一個狀態。這些事件也可能觸發自身轉移和內部的轉移,其中轉移的源和目標是同一個狀態。在對事件或狀態變化的反應中,對象可能要執行一個動作來做出響應。
上圖顯示了一個狀態圖,用于分析一個簡單的與語境無關的語言,正如在向XML輸入或輸出消息的系統中可能發現的那樣。在這種情況下,該機器被設計得能分析與語法相匹配的字符流:
message: '<' string '>' string ';'
其中,第一個串表示一個標記,第二個串表示該消息體。給定一個字符流,只有遵從這個語法的形式良好的消息才能被接受。
如圖所示,這個狀態機僅有3個穩定狀態:Waiting、GettingToken和GettingBody。這個狀態機被設計成有動作附加在轉移上的米利機。
在這個狀態機中僅有一種感興趣的事件,即帶有實際參數c(一個字符)對put的調用。
在Waiting狀態下,該機器丟棄任何不是開始標記的字符(通過監護條件來說明)。當接收到一個開始標記時,該對象的狀態就改變為GettingToken。在這個狀態中,機器保存任何不是結束標記的字符(通過監護條件來說明)。當接收到一個結束標記時,該對象的狀態就改變為GettingBody。在這個狀態中,機器保存任何不是一個消息體結束標記的字符(通過監護條件來說明)。當接收到一個消息結束標記時,該對象的狀態就改變為Waiting,并返回一個值,表示該消息已被分析過(并且機器準備接收另一個消息)。
?