摘要:或有時稱為狀態圖,狀態機或狀態圖顯示實體的不同狀態。簡單狀態機圖表示法進入和退出行動在州中指定的進入和退出操作。以下狀態機圖表對具有兩個并發子狀態的拍賣進行建模處理出價并授權付款限額。
實體的行為不僅是其輸入的直接結果,而且還取決于其先前的狀態。實體的過去歷史可以最好地通過有限狀態機圖或傳統上稱為自動機來建模。UML State Machine Diagrams(或有時稱為狀態圖,狀態機或狀態圖)顯示實體的不同狀態。狀態機圖還可以顯示實體如何通過從一種狀態更改為另一種狀態來響應各種事件。狀態機圖是用于模擬系統動態??特性的UML圖。
學習UML更快,更好,更容易您是否正在尋找一種免費的UML工具來更快,更輕松,更快速地學習UML?Visual Paradigm Community Edition是一個支持所有UML圖類型的UML軟件。它是一款屢獲殊榮的國際UML建模師,但它易于使用,直觀且完全免費。
免費下載
為什么是狀態機圖?狀態機圖通常用于描述對象的狀態依賴行為。對象取決于它所處的狀態,對同一事件的響應不同。狀態機圖通常應用于對象,但可以應用于對其他實體具有行為的任何元素,例如:參與者,用例,方法,子系統等等,它們通常與交互圖(通常是序列圖)一起使用)。
例如:
考慮一下銀行賬戶中有100,000美元。撤銷功能的行為是:balance:= balance - withdrawAmount; 但退出后的余額不低于0美元; 無論您從銀行取款多少次都是如此。在這種情況下,提取不會影響屬性值的抽象,因此對象的總體行為保持不變。
但是,如果提款后賬戶余額變為負數,則提款功能的行為將會大不相同。這是因為銀行賬戶的狀態從正變為負; 在技??術術語中,從正狀態到負狀態的轉換被觸發。
屬性值的抽象是系統的屬性,而不是全局適用的規則。例如,如果銀行更改業務規則以允許銀行存款余額透支2000美元,則銀行賬戶的狀態將被重新定義,條件是提款后的余額不得低于2000美元的赤字。
注意:
狀態機圖描述了所有事件(以及單個對象的狀態和轉換)
序列圖描述了涉及所有對象的單個交互的事件
狀態機圖的基本概念 什么是國家?Rumbaugh定義:
“狀態是對象的屬性值和鏈接的抽象。根據影響對象粗略行為的屬性,將值集合在一起成為狀態。”
州記譜法 狀態機符號的特征無論類型如何,一般都有幾種狀態:
一個州占用一段時間。
狀態通常與滿足某些條件的實體的屬性值的抽象相關聯。
實體改變其狀態不僅是當前輸入的直接結果,而且還取決于其輸入的一些過去歷史。
州狀態是對象生命周期中的約束或情境,其中約束成立,對象執行活動或等待事件。
狀態機圖是由以下內容組成的圖:
國家(簡單州或復合州)
連接狀態的狀態轉換
例:
國家特征狀態表示某些時間點的物體條件。
可以將對象(或系統)視為從一個狀態移動到另一個狀態
滿足某些條件的模型元素生命周期中的一個點,其中某些特定操作正在執行或某些事件等待
初始和最終國家狀態機圖的初始狀態,稱為初始偽狀態,用實心圓表示。從這種狀態的轉變將顯示第一個真實狀態
狀態機圖的最終狀態顯示為同心圓。開環狀態機表示可以在系統終止之前終止的對象,而閉環狀態機圖不具有最終狀態; 如果是這種情況,則對象將一直存在,直到整個系統終止。
例:
活動事件簽名被描述為事件名稱(逗號分隔參數列表)。事件出現在狀態的內部過渡隔室中或狀態之間的過渡上。事件可以是以下四種類型之一:
信號事件 - 對應于異步消息或信號的到達
呼叫事件 - 對應于程序調用到達操作
時間事件 - 在指定時間過后發生時間事件
更改事件 - 只要滿足指定條件,就會發生更改事件
事件的特征表示導致對象從一種狀態轉換到另一種狀態的事件。
內部或外部事件觸發一些活動,這些活動會改變系統及其某些部分的狀態
事件傳遞信息,由對象操作詳細說明。對象實現事件
設計涉及檢查狀態機圖中的事件并考慮系統對象如何支持這些事件
過渡過渡線描繪了從一個狀態到另一個狀態的移動。每個過渡行都標有導致過渡的事件。
將系統視為一組狀態和狀態之間的轉換對于描述復雜行為非常有用
了解狀態轉換是系統分析和設計的一部分
過渡是從一個州到另一個州的運動
國家之間的過渡發生如下:
元素處于源狀態
發生事件
執行動作
元素進入目標狀態
當不同的事件導致狀態終止或者在轉換上存在保護條件時,發生多個轉換
沒有事件和動作的轉換稱為自動轉換
操作Action是可執行的原子計算,包括操作調用,另一個對象的創建或銷毀,或者向對象發送信號。動作與轉換相關聯,并且在此期間動作不可中斷 - 例如,進入,退出
活動活動與狀態相關聯,這是一種非原子或正在進行的計算。活動可能會完成或無限期地繼續。活動將由導致從定義活動的狀態轉換的事件終止
行動和活動的特征國家可以觸發行動
狀態可以具有第二隔間,其包含在實體處于給定狀態時執行的動作或活動
動作是原子執行,因此不會中斷
五個動作觸發器:On Entry,Do,On Event,On Exit和Include
活動捕獲可能持續很長時間的復雜行為 - 活動可能被事件中斷,在這種情況下,當對象到達某個狀態時,它不會完成。
簡單狀態機圖表示法 進入和退出行動在州中指定的進入和退出操作。每次進入/退出時都必須如此。如果不是,則必須對各個過渡弧使用操作
使用符號進入狀態時執行的進入操作:進入/操作
退出使用符號退出狀態時執行的操作:退出/操作
示例 - 進入/退出操作(檢查書籍狀態)此示例說明了從類派生的狀態機圖 - “BookCopy”:
注意:
此狀態機圖顯示BookCopy類中對象myBkCopy的狀態
輸入操作:只要通過轉換輸入給定狀態,就會執行任何標記為與輸入操作相關聯的操作
退出操作:只要通過轉換離開狀態,就會執行任何標記為鏈接到退出操作的操作
子狀態簡單狀態是沒有子結構的狀態。具有子狀態(嵌套狀態)的狀態稱為復合狀態。子狀態可以嵌套到任何級別。嵌套狀態機可以具有至多一個初始狀態和一個最終狀態。通過顯示某些狀態僅在特定上下文(封閉狀態)內可能,子狀態用于簡化復雜的平面狀態機。
子狀態示例 - 加熱器
State Machine Diagrams通常用于派生測試用例,下面列出了可能的測試方法:
空閑狀態接收太熱事件
空閑狀態接收太酷事件
冷卻/啟動狀態接收Compressor Running事件
冷卻/就緒狀態接收風扇運行事件
冷卻/運行狀態接收OK事件
冷卻/運行狀態接收故障事件
失敗狀態接收失敗清除事件
加熱狀態接收OK事件
加熱狀態接收失敗事件
歷史國家除非另有說明,否則當轉換進入復合狀態時,嵌套狀態機的操作將在初始狀態重新開始(除非轉換直接針對子狀態)。歷史狀態允許狀態機重新進入在離開復合狀態之前處于活動狀態的最后一個子狀態。歷史狀態使用的示例如下圖所示。
并行國家如上所述,狀態機圖中的狀態可以嵌套。相關狀態可以組合在一起形成單個復合狀態。當活動涉及并發子活動時,必須將狀態嵌套在其他狀態中。以下狀態機圖表對具有兩個并發子狀態的拍賣進行建模:處理出價并授權付款限額。
并發狀態機圖示例 - 拍賣過程
在此示例中,首次進入Auction的狀態機需要在開始時將fork分成兩個多帶帶的開始線程。每個子狀態都有一個退出狀態來標記線程的結尾。除非出現異常退出(已取消或已拒絕),否則在兩個子狀態退出時都會退出復合狀態。
嘗試現在繪制UML狀態機圖您已經了解了狀態機圖是什么以及如何繪制狀態機圖。現在是時候繪制一個自己的狀態機圖。獲取免費的UML軟件Visual Paradigm Community Edition,并使用免費的State Machine Diagram工具創建自己的State Machine Diagram。它易于使用且直觀。
免費下載
相關鏈接什么是統一建模語言?
專業的UML圖工具
自由狀態機圖示例可在在線狀態機圖軟件中編輯的自由狀態機圖示例和模板:Visual Paradigm Online。使用模板作為起點來創建自己的狀態機圖。
烤箱
數碼時鐘
正交狀態
復合國
加熱器
烤面包機
售票系統
電話
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/104997.html
摘要:設計模式是一套被反復使用的多數人知曉的經過分類編目的代碼設計經驗的總結。使用設計模式是為了重用代碼讓代碼更容易被他人理解保證代碼可靠性。由此可見,其實設計模式就是從大型軟件架構出發便于升級和維護的軟件設計思想,它強調降低依賴,降低耦合。 點擊進入我的博客 1.1 設計模式概述 什么是設計模式 設計模式是軟件開發人員在軟件開發過程中面臨的一般問題的解決方案。設計模式是一套被反復使用的、...
摘要:代碼只是狀態機圖的相關元素的一種表現形式,它與節點式或表格式的狀態機圖并無本質不同。如上,狀態機是防止代碼失控的一劑良藥,制備完善的狀態機圖就是防止代碼失控的一種有效手段。 前言 前幾天和某某同學吃飯席間,他聊到每當要修改老項目中自己寫的代碼時就痛苦不堪,問我是不是也有同感。我覺得這應該是不少程序猿的心聲,之所以會這樣,大致有兩個主因: 項目的整體設計很糟糕,只管往上堆砌各種功能、補...
摘要:另一種關于組件的常見說法,是組件是為了重用。這件事情是前端特有的,受限制于的結構。這一節的題目叫做混亂的組件通訊,我們來仔細掰扯一下細節,因為組件模型雖然很常說但是對通訊過程沒有約定。 這個話題很難寫。 但是反過來說,愛因斯坦有句名言:如果你不能把一個問題向一個六歲孩子解釋清楚,那么你不真的明白它。 所以解釋清楚一個問題的關鍵,不是去擴大化,而是相反,最小化。 Lets begin. ...
摘要:狀態機狀態機是模型層面的概念,與編程語言無關。狀態機具有良好的可實現性和可測試性。在代碼里,這是一個,但是我們在狀態機模型中要把他理解為事件。 這一篇是這個系列的開篇,沒有任何高級內容,就講講狀態機。 狀態機 狀態機是模型層面的概念,與編程語言無關。它的目的是為對象行為建模,屬于設計范疇。它的基礎概念是狀態(state)和事件(event)。 對象的內部結構描述為一組狀態S1, S2,...
閱讀 3154·2023-04-26 02:33
閱讀 3109·2023-04-25 21:33
閱讀 914·2021-09-02 09:56
閱讀 2935·2019-08-30 15:44
閱讀 2465·2019-08-30 13:15
閱讀 1040·2019-08-30 13:04
閱讀 1640·2019-08-29 15:09
閱讀 3971·2019-08-26 18:26