亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

什么是狀態(tài)機(jī)圖?UML State Diagram

chemzqm / 3881人閱讀

摘要:或有時(shí)稱為狀態(tài)圖,狀態(tài)機(jī)或狀態(tài)圖顯示實(shí)體的不同狀態(tài)。簡(jiǎn)單狀態(tài)機(jī)圖表示法進(jìn)入和退出行動(dòng)在州中指定的進(jìn)入和退出操作。以下狀態(tài)機(jī)圖表對(duì)具有兩個(gè)并發(fā)子狀態(tài)的拍賣進(jìn)行建模處理出價(jià)并授權(quán)付款限額。

實(shí)體的行為不僅是其輸入的直接結(jié)果,而且還取決于其先前的狀態(tài)。實(shí)體的過去歷史可以最好地通過有限狀態(tài)機(jī)圖或傳統(tǒng)上稱為自動(dòng)機(jī)來建模。UML State Machine Diagrams(或有時(shí)稱為狀態(tài)圖,狀態(tài)機(jī)或狀態(tài)圖)顯示實(shí)體的不同狀態(tài)。狀態(tài)機(jī)圖還可以顯示實(shí)體如何通過從一種狀態(tài)更改為另一種狀態(tài)來響應(yīng)各種事件。狀態(tài)機(jī)圖是用于模擬系統(tǒng)動(dòng)態(tài)??特性的UML圖。

學(xué)習(xí)UML更快,更好,更容易

您是否正在尋找一種免費(fèi)的UML工具來更快,更輕松,更快速地學(xué)習(xí)UML?Visual Paradigm Community Edition是一個(gè)支持所有UML圖類型的UML軟件。它是一款屢獲殊榮的國際UML建模師,但它易于使用,直觀且完全免費(fèi)。

免費(fèi)下載

為什么是狀態(tài)機(jī)圖?

狀態(tài)機(jī)圖通常用于描述對(duì)象的狀態(tài)依賴行為。對(duì)象取決于它所處的狀態(tài),對(duì)同一事件的響應(yīng)不同。狀態(tài)機(jī)圖通常應(yīng)用于對(duì)象,但可以應(yīng)用于對(duì)其他實(shí)體具有行為的任何元素,例如:參與者,用例,方法,子系統(tǒng)等等,它們通常與交互圖(通常是序列圖)一起使用)。

例如:

考慮一下銀行賬戶中有100,000美元。撤銷功能的行為是:balance:= balance - withdrawAmount; 但退出后的余額不低于0美元; 無論您從銀行取款多少次都是如此。在這種情況下,提取不會(huì)影響屬性值的抽象,因此對(duì)象的總體行為保持不變。

但是,如果提款后賬戶余額變?yōu)樨?fù)數(shù),則提款功能的行為將會(huì)大不相同。這是因?yàn)殂y行賬戶的狀態(tài)從正變?yōu)樨?fù); 在技??術(shù)術(shù)語中,從正狀態(tài)到負(fù)狀態(tài)的轉(zhuǎn)換被觸發(fā)。

屬性值的抽象是系統(tǒng)的屬性,而不是全局適用的規(guī)則。例如,如果銀行更改業(yè)務(wù)規(guī)則以允許銀行存款余額透支2000美元,則銀行賬戶的狀態(tài)將被重新定義,條件是提款后的余額不得低于2000美元的赤字。

注意:

狀態(tài)機(jī)圖描述了所有事件(以及單個(gè)對(duì)象的狀態(tài)和轉(zhuǎn)換)

序列圖描述了涉及所有對(duì)象的單個(gè)交互的事件

狀態(tài)機(jī)圖的基本概念 什么是國家?

Rumbaugh定義:

“狀態(tài)是對(duì)象的屬性值和鏈接的抽象。根據(jù)影響對(duì)象粗略行為的屬性,將值集合在一起成為狀態(tài)。”

州記譜法

狀態(tài)機(jī)符號(hào)的特征

無論類型如何,一般都有幾種狀態(tài):

一個(gè)州占用一段時(shí)間。

狀態(tài)通常與滿足某些條件的實(shí)體的屬性值的抽象相關(guān)聯(lián)。

實(shí)體改變其狀態(tài)不僅是當(dāng)前輸入的直接結(jié)果,而且還取決于其輸入的一些過去歷史。

狀態(tài)是對(duì)象生命周期中的約束或情境,其中約束成立,對(duì)象執(zhí)行活動(dòng)或等待事件。

狀態(tài)機(jī)圖是由以下內(nèi)容組成的圖:

國家(簡(jiǎn)單州或復(fù)合州)

連接狀態(tài)的狀態(tài)轉(zhuǎn)換

例:

國家特征

狀態(tài)表示某些時(shí)間點(diǎn)的物體條件。

可以將對(duì)象(或系統(tǒng))視為從一個(gè)狀態(tài)移動(dòng)到另一個(gè)狀態(tài)

滿足某些條件的模型元素生命周期中的一個(gè)點(diǎn),其中某些特定操作正在執(zhí)行或某些事件等待

初始和最終國家

狀態(tài)機(jī)圖的初始狀態(tài),稱為初始偽狀態(tài),用實(shí)心圓表示。從這種狀態(tài)的轉(zhuǎn)變將顯示第一個(gè)真實(shí)狀態(tài)

狀態(tài)機(jī)圖的最終狀態(tài)顯示為同心圓。開環(huán)狀態(tài)機(jī)表示可以在系統(tǒng)終止之前終止的對(duì)象,而閉環(huán)狀態(tài)機(jī)圖不具有最終狀態(tài); 如果是這種情況,則對(duì)象將一直存在,直到整個(gè)系統(tǒng)終止。

例:

活動(dòng)

事件簽名被描述為事件名稱(逗號(hào)分隔參數(shù)列表)。事件出現(xiàn)在狀態(tài)的內(nèi)部過渡隔室中或狀態(tài)之間的過渡上。事件可以是以下四種類型之一:

信號(hào)事件 - 對(duì)應(yīng)于異步消息或信號(hào)的到達(dá)

呼叫事件 - 對(duì)應(yīng)于程序調(diào)用到達(dá)操作

時(shí)間事件 - 在指定時(shí)間過后發(fā)生時(shí)間事件

更改事件 - 只要滿足指定條件,就會(huì)發(fā)生更改事件

事件的特征

表示導(dǎo)致對(duì)象從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài)的事件。

內(nèi)部或外部事件觸發(fā)一些活動(dòng),這些活動(dòng)會(huì)改變系統(tǒng)及其某些部分的狀態(tài)

事件傳遞信息,由對(duì)象操作詳細(xì)說明。對(duì)象實(shí)現(xiàn)事件

設(shè)計(jì)涉及檢查狀態(tài)機(jī)圖中的事件并考慮系統(tǒng)對(duì)象如何支持這些事件

過渡

過渡線描繪了從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的移動(dòng)。每個(gè)過渡行都標(biāo)有導(dǎo)致過渡的事件。

將系統(tǒng)視為一組狀態(tài)和狀態(tài)之間的轉(zhuǎn)換對(duì)于描述復(fù)雜行為非常有用

了解狀態(tài)轉(zhuǎn)換是系統(tǒng)分析和設(shè)計(jì)的一部分

過渡是從一個(gè)州到另一個(gè)州的運(yùn)動(dòng)

國家之間的過渡發(fā)生如下:

元素處于源狀態(tài)

發(fā)生事件

執(zhí)行動(dòng)作

元素進(jìn)入目標(biāo)狀態(tài)

當(dāng)不同的事件導(dǎo)致狀態(tài)終止或者在轉(zhuǎn)換上存在保護(hù)條件時(shí),發(fā)生多個(gè)轉(zhuǎn)換

沒有事件和動(dòng)作的轉(zhuǎn)換稱為自動(dòng)轉(zhuǎn)換

操作

Action是可執(zhí)行的原子計(jì)算,包括操作調(diào)用,另一個(gè)對(duì)象的創(chuàng)建或銷毀,或者向?qū)ο蟀l(fā)送信號(hào)。動(dòng)作與轉(zhuǎn)換相關(guān)聯(lián),并且在此期間動(dòng)作不可中斷 - 例如,進(jìn)入,退出

活動(dòng)

活動(dòng)與狀態(tài)相關(guān)聯(lián),這是一種非原子或正在進(jìn)行的計(jì)算?;顒?dòng)可能會(huì)完成或無限期地繼續(xù)?;顒?dòng)將由導(dǎo)致從定義活動(dòng)的狀態(tài)轉(zhuǎn)換的事件終止

行動(dòng)和活動(dòng)的特征

國家可以觸發(fā)行動(dòng)

狀態(tài)可以具有第二隔間,其包含在實(shí)體處于給定狀態(tài)時(shí)執(zhí)行的動(dòng)作或活動(dòng)

動(dòng)作是原子執(zhí)行,因此不會(huì)中斷

五個(gè)動(dòng)作觸發(fā)器:On Entry,Do,On Event,On Exit和Include

活動(dòng)捕獲可能持續(xù)很長(zhǎng)時(shí)間的復(fù)雜行為 - 活動(dòng)可能被事件中斷,在這種情況下,當(dāng)對(duì)象到達(dá)某個(gè)狀態(tài)時(shí),它不會(huì)完成。

簡(jiǎn)單狀態(tài)機(jī)圖表示法

進(jìn)入和退出行動(dòng)

在州中指定的進(jìn)入和退出操作。每次進(jìn)入/退出時(shí)都必須如此。如果不是,則必須對(duì)各個(gè)過渡弧使用操作

使用符號(hào)進(jìn)入狀態(tài)時(shí)執(zhí)行的進(jìn)入操作:進(jìn)入/操作

退出使用符號(hào)退出狀態(tài)時(shí)執(zhí)行的操作:退出/操作

示例 - 進(jìn)入/退出操作(檢查書籍狀態(tài))

此示例說明了從類派生的狀態(tài)機(jī)圖 - “BookCopy”:

注意:

此狀態(tài)機(jī)圖顯示BookCopy類中對(duì)象myBkCopy的狀態(tài)

輸入操作:只要通過轉(zhuǎn)換輸入給定狀態(tài),就會(huì)執(zhí)行任何標(biāo)記為與輸入操作相關(guān)聯(lián)的操作

退出操作:只要通過轉(zhuǎn)換離開狀態(tài),就會(huì)執(zhí)行任何標(biāo)記為鏈接到退出操作的操作

子狀態(tài)

簡(jiǎn)單狀態(tài)是沒有子結(jié)構(gòu)的狀態(tài)。具有子狀態(tài)(嵌套狀態(tài))的狀態(tài)稱為復(fù)合狀態(tài)。子狀態(tài)可以嵌套到任何級(jí)別。嵌套狀態(tài)機(jī)可以具有至多一個(gè)初始狀態(tài)和一個(gè)最終狀態(tài)。通過顯示某些狀態(tài)僅在特定上下文(封閉狀態(tài))內(nèi)可能,子狀態(tài)用于簡(jiǎn)化復(fù)雜的平面狀態(tài)機(jī)。

子狀態(tài)示例 - 加熱器

State Machine Diagrams通常用于派生測(cè)試用例,下面列出了可能的測(cè)試方法:

空閑狀態(tài)接收太熱事件

空閑狀態(tài)接收太酷事件

冷卻/啟動(dòng)狀態(tài)接收Compressor Running事件

冷卻/就緒狀態(tài)接收風(fēng)扇運(yùn)行事件

冷卻/運(yùn)行狀態(tài)接收OK事件

冷卻/運(yùn)行狀態(tài)接收故障事件

失敗狀態(tài)接收失敗清除事件

加熱狀態(tài)接收OK事件

加熱狀態(tài)接收失敗事件

歷史國家

除非另有說明,否則當(dāng)轉(zhuǎn)換進(jìn)入復(fù)合狀態(tài)時(shí),嵌套狀態(tài)機(jī)的操作將在初始狀態(tài)重新開始(除非轉(zhuǎn)換直接針對(duì)子狀態(tài))。歷史狀態(tài)允許狀態(tài)機(jī)重新進(jìn)入在離開復(fù)合狀態(tài)之前處于活動(dòng)狀態(tài)的最后一個(gè)子狀態(tài)。歷史狀態(tài)使用的示例如下圖所示。

并行國家

如上所述,狀態(tài)機(jī)圖中的狀態(tài)可以嵌套。相關(guān)狀態(tài)可以組合在一起形成單個(gè)復(fù)合狀態(tài)。當(dāng)活動(dòng)涉及并發(fā)子活動(dòng)時(shí),必須將狀態(tài)嵌套在其他狀態(tài)中。以下狀態(tài)機(jī)圖表對(duì)具有兩個(gè)并發(fā)子狀態(tài)的拍賣進(jìn)行建模:處理出價(jià)并授權(quán)付款限額。

并發(fā)狀態(tài)機(jī)圖示例 - 拍賣過程

在此示例中,首次進(jìn)入Auction的狀態(tài)機(jī)需要在開始時(shí)將fork分成兩個(gè)多帶帶的開始線程。每個(gè)子狀態(tài)都有一個(gè)退出狀態(tài)來標(biāo)記線程的結(jié)尾。除非出現(xiàn)異常退出(已取消或已拒絕),否則在兩個(gè)子狀態(tài)退出時(shí)都會(huì)退出復(fù)合狀態(tài)。

嘗試現(xiàn)在繪制UML狀態(tài)機(jī)圖

您已經(jīng)了解了狀態(tài)機(jī)圖是什么以及如何繪制狀態(tài)機(jī)圖。現(xiàn)在是時(shí)候繪制一個(gè)自己的狀態(tài)機(jī)圖。獲取免費(fèi)的UML軟件Visual Paradigm Community Edition,并使用免費(fèi)的State Machine Diagram工具創(chuàng)建自己的State Machine Diagram。它易于使用且直觀。

免費(fèi)下載

相關(guān)鏈接

什么是統(tǒng)一建模語言?

專業(yè)的UML圖工具

自由狀態(tài)機(jī)圖示例

可在在線狀態(tài)機(jī)圖軟件中編輯的自由狀態(tài)機(jī)圖示例和模板:Visual Paradigm Online。使用模板作為起點(diǎn)來創(chuàng)建自己的狀態(tài)機(jī)圖。

烤箱

數(shù)碼時(shí)鐘

正交狀態(tài)

復(fù)合國

加熱器

烤面包機(jī)

售票系統(tǒng)

電話

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/104997.html

相關(guān)文章

  • 《設(shè)計(jì)模式》1.緒論

    摘要:設(shè)計(jì)模式是一套被反復(fù)使用的多數(shù)人知曉的經(jīng)過分類編目的代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了重用代碼讓代碼更容易被他人理解保證代碼可靠性。由此可見,其實(shí)設(shè)計(jì)模式就是從大型軟件架構(gòu)出發(fā)便于升級(jí)和維護(hù)的軟件設(shè)計(jì)思想,它強(qiáng)調(diào)降低依賴,降低耦合。 點(diǎn)擊進(jìn)入我的博客 1.1 設(shè)計(jì)模式概述 什么是設(shè)計(jì)模式 設(shè)計(jì)模式是軟件開發(fā)人員在軟件開發(fā)過程中面臨的一般問題的解決方案。設(shè)計(jì)模式是一套被反復(fù)使用的、...

    bovenson 評(píng)論0 收藏0
  • 代碼失控與狀態(tài)機(jī)(上)

    摘要:代碼只是狀態(tài)機(jī)圖的相關(guān)元素的一種表現(xiàn)形式,它與節(jié)點(diǎn)式或表格式的狀態(tài)機(jī)圖并無本質(zhì)不同。如上,狀態(tài)機(jī)是防止代碼失控的一劑良藥,制備完善的狀態(tài)機(jī)圖就是防止代碼失控的一種有效手段。 前言 前幾天和某某同學(xué)吃飯席間,他聊到每當(dāng)要修改老項(xiàng)目中自己寫的代碼時(shí)就痛苦不堪,問我是不是也有同感。我覺得這應(yīng)該是不少程序猿的心聲,之所以會(huì)這樣,大致有兩個(gè)主因: 項(xiàng)目的整體設(shè)計(jì)很糟糕,只管往上堆砌各種功能、補(bǔ)...

    cucumber 評(píng)論0 收藏0
  • React組件模型啟示錄

    摘要:另一種關(guān)于組件的常見說法,是組件是為了重用。這件事情是前端特有的,受限制于的結(jié)構(gòu)。這一節(jié)的題目叫做混亂的組件通訊,我們來仔細(xì)掰扯一下細(xì)節(jié),因?yàn)榻M件模型雖然很常說但是對(duì)通訊過程沒有約定。 這個(gè)話題很難寫。 但是反過來說,愛因斯坦有句名言:如果你不能把一個(gè)問題向一個(gè)六歲孩子解釋清楚,那么你不真的明白它。 所以解釋清楚一個(gè)問題的關(guān)鍵,不是去擴(kuò)大化,而是相反,最小化。 Lets begin. ...

    eternalshallow 評(píng)論0 收藏0
  • 白潔血戰(zhàn)Node.js并發(fā)編程 01 狀態(tài)機(jī)

    摘要:狀態(tài)機(jī)狀態(tài)機(jī)是模型層面的概念,與編程語言無關(guān)。狀態(tài)機(jī)具有良好的可實(shí)現(xiàn)性和可測(cè)試性。在代碼里,這是一個(gè),但是我們?cè)跔顟B(tài)機(jī)模型中要把他理解為事件。 這一篇是這個(gè)系列的開篇,沒有任何高級(jí)內(nèi)容,就講講狀態(tài)機(jī)。 狀態(tài)機(jī) 狀態(tài)機(jī)是模型層面的概念,與編程語言無關(guān)。它的目的是為對(duì)象行為建模,屬于設(shè)計(jì)范疇。它的基礎(chǔ)概念是狀態(tài)(state)和事件(event)。 對(duì)象的內(nèi)部結(jié)構(gòu)描述為一組狀態(tài)S1, S2,...

    fjcgreat 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<