0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

UML狀態(tài)圖詳解

碼農(nóng)愛(ài)學(xué)習(xí) ? 來(lái)源:碼農(nóng)愛(ài)學(xué)習(xí) ? 作者:碼農(nóng)愛(ài)學(xué)習(xí) ? 2023-05-09 09:00 ? 次閱讀

上篇文章,介紹了UML的基礎(chǔ)知識(shí),并詳細(xì)介紹了UML中類(lèi)圖的知識(shí)點(diǎn)與畫(huà)法。

本篇,來(lái)繼續(xù)介紹UML中的另一種圖——狀態(tài)圖。

1 UML狀態(tài)圖簡(jiǎn)介

狀態(tài)圖,顯示一個(gè)狀態(tài)機(jī),屬于UML活動(dòng)圖。

UML具有許多不同類(lèi)型的圖表,包括:

  • 靜態(tài)圖:用例圖、類(lèi)圖、包圖
  • 動(dòng)態(tài)圖:活動(dòng)圖、狀態(tài)圖、時(shí)序圖、協(xié)作圖

狀態(tài)機(jī)用于對(duì)模型元素的動(dòng)態(tài)行為進(jìn)行建模,或是說(shuō)對(duì)系統(tǒng)中受事件驅(qū)動(dòng)的方面進(jìn)行建模。

2 狀態(tài)圖基本要素

2.1 狀態(tài)

狀態(tài)是狀態(tài)機(jī)的重要組成部分,描述了狀態(tài)機(jī)所在對(duì)象動(dòng)態(tài)行為的執(zhí)行所產(chǎn)生的結(jié)果

2.1.1 初始/最終/選擇狀態(tài)

這三個(gè)都是****偽狀態(tài) (Pseudostate):

  • 初始狀態(tài):用一個(gè)實(shí)心圓形表
  • 最終狀態(tài):用一個(gè)圓圈內(nèi)嵌實(shí)心圓點(diǎn)表示
  • 選擇狀態(tài):用一個(gè)菱形表示,條件分支上方括號(hào)內(nèi)的文字表示****監(jiān)護(hù)條件 (guard conditions)

2.1.2 一般狀態(tài)

UML中使用一個(gè)圓角矩形表示一個(gè)一般狀態(tài)

狀態(tài)的組成部分:

  • 名稱(chēng):由一個(gè)字符串組成,用以識(shí)別不同狀態(tài)??赡涿?,一般放置在狀態(tài)圖符頂部
  • 入口/出口動(dòng)作:表示進(jìn)入/退出這個(gè)狀態(tài)所執(zhí)行的動(dòng)作,動(dòng)作可以是原子動(dòng)作,也可是動(dòng)作序列
  • 內(nèi)部轉(zhuǎn)換:內(nèi)部轉(zhuǎn)換不會(huì)引起狀態(tài)變化的轉(zhuǎn)換,此轉(zhuǎn)換的觸發(fā)不會(huì)導(dǎo)致?tīng)顟B(tài)的入口/出口動(dòng)作被執(zhí)行。語(yǔ)法:事件/動(dòng)作表達(dá)式

2.1.3 復(fù)合狀態(tài)

復(fù)合狀態(tài),或稱(chēng)組合狀態(tài),是指包含有子狀態(tài)的狀態(tài)。

如下圖,“復(fù)合狀態(tài)2”即為復(fù)合狀態(tài),內(nèi)部的“狀態(tài)2-1”、"狀態(tài)2-2"為子狀態(tài)。

也可用以下形式表示,將復(fù)合狀態(tài)的內(nèi)容單獨(dú)畫(huà)出。

注:圖中的圓圈內(nèi)一個(gè)H字母,表示****歷史狀態(tài) ,它也是一個(gè)偽狀態(tài),其目的是記住從組合狀態(tài)中退出時(shí)所處的子狀態(tài),當(dāng)再次進(jìn)入組合狀態(tài),可直接進(jìn)入這個(gè)子狀態(tài),而不是再次從組合狀態(tài)的初態(tài)開(kāi)始

2.2 轉(zhuǎn)換

轉(zhuǎn)換(Transition)是兩個(gè)狀態(tài)之間的關(guān)聯(lián)。表示對(duì)象在第一個(gè)狀態(tài)(Source State)中執(zhí)行一定的動(dòng)作,并在某個(gè)特定事情發(fā)生并且某個(gè)特定的條件滿(mǎn)足時(shí)進(jìn)入下一個(gè)狀態(tài)(Target State)。

2.2.1 一般轉(zhuǎn)換

一般情況下的狀態(tài)轉(zhuǎn)換是兩個(gè)不同狀態(tài)之間的轉(zhuǎn)換,示意圖如下:

轉(zhuǎn)換的組成部分:

  • 源狀態(tài)(Source State):源狀態(tài)就是被轉(zhuǎn)換影響的狀態(tài)。某對(duì)象處于源狀態(tài),當(dāng)它接收到觸發(fā)事件或滿(mǎn)足監(jiān)護(hù)條件,就會(huì)激活一個(gè)轉(zhuǎn)換
  • 目標(biāo)狀態(tài)(Target State):轉(zhuǎn)換完成后,對(duì)象狀態(tài)發(fā)生變化,這時(shí)對(duì)象所處的狀態(tài)就是轉(zhuǎn)換的目標(biāo)狀態(tài)
  • 觸發(fā)事件(Trigger):引起轉(zhuǎn)換的事件,這里所指的事件可以是信號(hào)、調(diào)用、時(shí)間段或狀態(tài)的一個(gè)改變
  • 監(jiān)護(hù)條件(Guard Condition):是一個(gè)方括號(hào)括起來(lái)的布爾表達(dá)式,它被放在觸發(fā)事件的后面。監(jiān)護(hù)條件可以引用對(duì)象的屬性值和觸發(fā)事件的參數(shù)
  • 結(jié)果(Effect):對(duì)象狀態(tài)轉(zhuǎn)移后的結(jié)果

2.2.2 自身轉(zhuǎn)換

自身轉(zhuǎn)換(Self-Transitions),是指狀態(tài)可以有返回自身狀態(tài)的轉(zhuǎn)換。

2.2.3 本地轉(zhuǎn)換與外部轉(zhuǎn)換

對(duì)于復(fù)合狀態(tài)之間的轉(zhuǎn)換,需要注意本地轉(zhuǎn)換(Local transition)與外部轉(zhuǎn)換(External transition)的不同。

上圖中,左邊是本地轉(zhuǎn)換,右邊是外部轉(zhuǎn)換。

  • 上面兩個(gè),源狀態(tài)包含了目標(biāo)狀態(tài),這種情況兩種轉(zhuǎn)換的區(qū)別在于:本地轉(zhuǎn)換不會(huì)從源狀態(tài)退出(不會(huì)執(zhí)行退出動(dòng)作),而外部轉(zhuǎn)換會(huì)退出再重新進(jìn)入源狀態(tài)。
  • 下面兩個(gè),目標(biāo)狀態(tài)包含了源狀態(tài),這種情況兩種轉(zhuǎn)換的區(qū)別在于:本地轉(zhuǎn)換不會(huì)再次進(jìn)入目標(biāo)狀態(tài)(不會(huì)執(zhí)行進(jìn)入動(dòng)作),而外部轉(zhuǎn)換會(huì)退出再重新進(jìn)入目標(biāo)狀態(tài)。

3 一個(gè)UML狀態(tài)圖實(shí)例

3.1 使用visio繪制UML狀態(tài)圖

新建一個(gè)visio文件,打開(kāi)后會(huì)自動(dòng)提示選擇創(chuàng)建某種類(lèi)型的圖,這里選擇"軟件和數(shù)據(jù)庫(kù) ->UML狀態(tài)機(jī)"

點(diǎn)擊確定之后,會(huì)進(jìn)入U(xiǎn)ML狀態(tài)圖的編輯界面,左側(cè)可以看到用于UML狀態(tài)圖編輯的基本元素,將這些元素拖拽到右側(cè)的編解面板中,可以看到這些元素的基本結(jié)構(gòu)形式:

3.2 實(shí)例講解

下面是一個(gè)UML狀態(tài)圖的實(shí)例:

這是一個(gè)全自動(dòng)洗衣機(jī)的UML狀態(tài)圖,主要包括“設(shè)置”、“工作中”、“暫?!边@3個(gè)狀態(tài)。

  • 開(kāi)機(jī)時(shí),會(huì)先進(jìn)入“設(shè)置”狀態(tài),可以設(shè)置洗衣模式以及水量等,觸發(fā)啟動(dòng)后,會(huì)進(jìn)入“工作中”狀態(tài)。
  • “工作中”是一個(gè)復(fù)合狀態(tài),內(nèi)部包括“加水”、“清洗”、“排水”、“甩干”這4個(gè)子狀態(tài)。進(jìn)入該狀態(tài)后,從“加水”子狀態(tài)開(kāi)始執(zhí)行,然后會(huì)執(zhí)行“清洗”、"排水"子狀態(tài),排水完成后,根據(jù)清洗次數(shù)是否足夠,跳轉(zhuǎn)到“加水”或“甩干”子狀態(tài)。
  • 在“工作中”狀態(tài)時(shí),無(wú)論處于哪個(gè)子狀態(tài),只有按了暫停鍵,都會(huì)進(jìn)入“暫?!睜顟B(tài),再按繼續(xù),則會(huì)進(jìn)入“工作中”繼續(xù)執(zhí)行,注意繼續(xù)時(shí)指向的是歷史狀態(tài)(圓圈內(nèi)一個(gè)H字母),表示繼續(xù)指向剛才暫停時(shí)的子狀態(tài)。

4 總結(jié)

本篇介紹了UML狀態(tài)圖的基礎(chǔ)知識(shí),并通過(guò)visio繪制一個(gè)全自動(dòng)洗衣機(jī)的UML狀態(tài)圖實(shí)例,來(lái)介紹UML狀態(tài)圖的畫(huà)法與所表達(dá)的含義。
審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • UML
    UML
    +關(guān)注

    關(guān)注

    0

    文章

    122

    瀏覽量

    30835
  • 時(shí)序圖
    +關(guān)注

    關(guān)注

    2

    文章

    57

    瀏覽量

    22418
  • 狀態(tài)機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    489

    瀏覽量

    27433
  • 狀態(tài)圖
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    7302
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    UML狀態(tài)圖和Petri網(wǎng)絡(luò)在類(lèi)測(cè)試用例生成的應(yīng)用

    【作者】:陳志德;曾凡平;【來(lái)源】:《小型微型計(jì)算機(jī)系統(tǒng)》2010年03期【摘要】:分析和研究UML狀態(tài)圖、擴(kuò)展狀態(tài)機(jī)和Petri網(wǎng)在類(lèi)測(cè)試用例生成的特點(diǎn),提出結(jié)合三者優(yōu)勢(shì)的類(lèi)測(cè)試用例生成方法.通過(guò)
    發(fā)表于 04-24 09:52

    狀態(tài)機(jī) 狀態(tài)圖

    狀態(tài)機(jī) 狀態(tài)圖
    發(fā)表于 08-22 19:45

    我的8.6版 沒(méi)有狀態(tài)圖功能

    我的8.6版 沒(méi)有狀態(tài)圖功能在網(wǎng)站下載 哪個(gè)是狀態(tài)圖模塊軟件 網(wǎng)站上的軟件全是英文的名字 哪位大師方便告訴一下
    發(fā)表于 09-18 03:44

    狀態(tài)圖模擬ATM機(jī)

    `今天閑來(lái)無(wú)聊,翻了翻寶典,看到了狀態(tài)圖那一章,心血來(lái)潮,就做了一個(gè)基于狀態(tài)圖的ATM機(jī),只有簡(jiǎn)單的查詢(xún),存款,取款,修改密碼功能,可能會(huì)有BUG,不過(guò)程序只是為了驗(yàn)證狀態(tài)圖的功能o(╯□╰)o
    發(fā)表于 01-21 20:20

    【資源帖】LabVIEW狀態(tài)圖模塊

    LabVIEW狀態(tài)圖模塊提供了一種編程模式,可幫助用戶(hù)在高于原先水平的基礎(chǔ)上開(kāi)發(fā)應(yīng)用程序。使用NI LabVIEW狀態(tài)圖模塊,用戶(hù)可開(kāi)發(fā)狀態(tài)圖(statechart diagram)、通過(guò)NI
    發(fā)表于 04-14 01:00

    狀態(tài)圖使用詳解-簡(jiǎn)單入門(mén)

    本帖最后由 sszx2007 于 2019-6-17 10:38 編輯 狀態(tài)圖使用詳解-簡(jiǎn)單入門(mén)安裝狀態(tài)圖工具包所有的狀態(tài)圖工具包均不支持64位LabVIEW有關(guān)
    發(fā)表于 04-07 20:12

    經(jīng)典UML狀態(tài)圖實(shí)用C++設(shè)計(jì)嵌入式系統(tǒng)事件驅(qū)動(dòng)型編程技術(shù)資料分享

    UML狀態(tài)圖的實(shí)用C/C++設(shè)計(jì)嵌入式系統(tǒng)的事件驅(qū)動(dòng)編程技術(shù)第二版內(nèi)含國(guó)外版本和國(guó)內(nèi)翻譯版本
    發(fā)表于 04-24 14:34

    狀態(tài)圖編程

    狀態(tài)圖編程指南
    發(fā)表于 01-10 16:16

    LabVIEW狀態(tài)圖編程指南

    采用 LabVIEW 狀態(tài)圖模塊開(kāi)發(fā)應(yīng)用程序 1-7LabVIEW 狀態(tài)圖模塊中 UML 專(zhuān)用術(shù)語(yǔ) 8-15如何對(duì) LabVIEW 狀態(tài)圖應(yīng)用程序進(jìn)行調(diào)試 16-25LabVIEW
    發(fā)表于 09-21 06:05

    狀態(tài)圖使用詳解-作者做了一個(gè)動(dòng)態(tài)顯示狀態(tài),怎么做的??

    論壇里的帖子,狀態(tài)圖使用詳解-簡(jiǎn)單入門(mén) 我初學(xué)者,很有幫助,甚是感謝??! 軟件界面里的圖片,狀態(tài)切換動(dòng)畫(huà)是怎么實(shí)現(xiàn)的? 沒(méi)看明白,能給說(shuō)一下嗎?感謝
    發(fā)表于 11-30 11:41

    UML狀態(tài)圖在回歸測(cè)試中的應(yīng)用

    基于UML 狀態(tài)圖的測(cè)試是一種系統(tǒng)測(cè)試技術(shù),也是基于需求的回歸測(cè)試方法的擴(kuò)展。該文通過(guò)依賴(lài)性分析,生成基于依賴(lài)性分析的UML 狀態(tài)圖和依賴(lài)
    發(fā)表于 03-23 08:46 ?14次下載

    UML順序狀態(tài)圖的一致性檢查

    用戶(hù)可使用UML從不同角度對(duì)系統(tǒng)進(jìn)行建模,但不同視圖間存在信息冗余,可能導(dǎo)致視圖不一致問(wèn)題。該文針對(duì)具有多種邏輯語(yǔ)義的順序提出分析方法,為復(fù)雜層次結(jié)構(gòu)的狀態(tài)圖
    發(fā)表于 04-16 08:43 ?27次下載

    LabVIEW狀態(tài)圖編程指南

    采用LabVIEW狀態(tài)圖模塊開(kāi)發(fā)應(yīng)用程序 1-7LabVIEW狀態(tài)圖模塊中UML專(zhuān)用術(shù)語(yǔ) 8-15如何對(duì)LabVIEW狀態(tài)圖應(yīng)用程序進(jìn)行調(diào)試 16-25LabVIEW
    發(fā)表于 07-01 10:45 ?110次下載

    什么是UML?常見(jiàn)的UML工具有哪些?

    UML是統(tǒng)一建模語(yǔ)言,又稱(chēng)標(biāo)準(zhǔn)建模語(yǔ)言。是對(duì)軟件設(shè)計(jì)開(kāi)發(fā)過(guò)程可視化建模的一種語(yǔ)言。多應(yīng)用在一些軟件系統(tǒng)工程上,有時(shí)在應(yīng)用在機(jī)械系統(tǒng)和業(yè)務(wù)流程上有所應(yīng)用。這種模型通常以圖表方式呈現(xiàn)。 UML
    的頭像 發(fā)表于 06-22 14:10 ?4526次閱讀
    什么是<b class='flag-5'>UML</b><b class='flag-5'>圖</b>?常見(jiàn)的<b class='flag-5'>UML</b><b class='flag-5'>圖</b>工具有哪些?

    UML狀態(tài)圖繪制

    狀態(tài)機(jī)是系統(tǒng)分析中常用的一種工具,它用于描述一個(gè)對(duì)象在其生命周期內(nèi)所經(jīng)歷的的各種狀態(tài),以及狀態(tài)之間的轉(zhuǎn)移、引發(fā)轉(zhuǎn)移的使間或狀態(tài)轉(zhuǎn)移的活動(dòng)。
    發(fā)表于 12-09 16:55 ?0次下載