狀態圖被用於在時間有限的實例來表示該系統或該系統的一部分的狀態。它是一個行爲圖,它表示使用有限狀態轉換的行爲。狀態圖也稱爲狀態機和狀態圖。這些術語通常可互換使用。簡單地說,狀態圖用於模擬類的動態行爲以響應時間和改變外部刺激。我們可以說每個類都有一個狀態,但我們不使用狀態圖對每個類建模。我們更喜歡對具有三種或更多狀態的狀態進行建模。
狀態圖的使用
- 我們用它來陳述負責狀態變化的事件(我們不會顯示導致這些事件的進程)。
- 我們用它來模擬系統的動態行爲。
- 理解對象/類對內部或外部刺激的反應。
首先讓我們瞭解什麼是行爲圖?UML中有兩種類型的圖表:
- 結構圖 (Structural Diagrams) -用於建模系統的靜態結構,例如 - 類圖,包圖,對象圖,部署圖等。
- 行爲圖 (Behaviral Diagrams) -用於模擬系統中的動態變化。它們用於建模和構建系統的功能。因此,行爲圖僅使用用例圖,交互圖,活動圖和狀態圖指導我們完成系統的功能。
狀態圖和流程圖之間的差異
一個的基本目的狀態圖是描繪在類的狀態,並引起的變化的各種變化不處理或命令。但是,另一方面,流程圖描繪了執行時更改類的狀態或類的對象的進程或命令。
圖 - 用戶驗證的狀態圖
上面的狀態圖顯示了特定系統存在驗證子系統或類的不同狀態。
狀態圖的基本組件 -
初始狀態 (Start State) -我們使用黑色實心圓表示系統或類的初始狀態。
圖 -初始狀態表示法
過渡 (Transition) - 我們使用實線箭頭來表示從一種狀態到另一種狀態的控制轉換或變化。箭頭標有導致狀態變化的事件。
圖 -過渡
狀態 (State) - 我們使用圓角矩形表示狀態。狀態表示一個類的對象在瞬間的條件或情況。
圖 - 狀態表示法
Fork - 我們使用圓角實心矩形條來表示Fork符號,其中包含來自父狀態的incomig箭頭和朝向新創建狀態的外向箭頭。我們使用fork表示法來表示分成兩個或多個併發狀態的狀態。
圖 - 使用fork表示法的圖表
加入 (Join) -我們使用圓角實心矩形條來表示加入符號,其中來自加入狀態的傳入箭頭和朝向共同目標狀態的傳出箭頭。當一個或多個事件發生時,兩個或多個狀態同時匯聚成一個時,我們使用連接表示法。
圖 -使用連接表示法的圖表
自我過渡 (Self-Transition) -我們使用一個實心箭頭指向狀態本身來表示自我過渡。可能存在這樣的情況:當事件發生時對象的狀態不會改變。我們使用自我過渡來表示這種情況。
圖 -自轉換表示法
複合狀態 (Composition State) - 我們也使用圓角矩形來表示複合狀態。我們使用複合狀態表示具有內部活動的狀態。
圖 -具有內部活動的州
最終狀態 (End State) - 我們使用圓圈表示法中的實心圓來表示狀態機圖中的最終狀態。
圖 - 最終狀態表示法
繪製狀態圖的步驟
- 確定初始狀態和最終終止狀態。
- 識別對象可能存在的可能狀態(對應於不同屬性的邊界值指導我們識別不同的狀態)。
- 標記觸發這些轉換的事件。
示例 -在線訂單的狀態圖 -
圖 - 在線訂單的狀態圖
我們繪製的UMl圖取決於我們要表示的系統。以下是在線訂購系統的外觀示例:
在收到訂單的情況下,我們從初始狀態轉換到未處理訂單狀態。
然後檢查未處理的訂單。
如果訂單被拒絕,我們將轉入拒絕訂單狀態。
如果訂單被接受並且我們有可用的物品,我們將轉入已完成的訂單狀態。
但是,如果物品不可用,我們將轉入待處理訂單狀態。
訂單完成後,我們將轉入最終狀態。在此示例中,我們將兩個狀態(即已執行訂單和已拒絕訂單)合併爲一個最終狀態。
注意 -在這裏,我們也可以將已履行的訂單和拒絕的訂單分別作爲最終狀態處理。
狀態機圖示例:烤箱
這是一個狀態機圖,顯示了烤箱的內部狀態以及狀態之間的轉換。它包括等待,全功率,半功率,設置時間,禁用,啓用和操作等狀態。請注意,do和exit可用於指定在特定狀態和結束狀態期間要執行的活動。
參考 -