<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

UML狀態圖詳解

碼農愛學習 ? 來源:碼農愛學習 ? 作者:碼農愛學習 ? 2023-05-09 09:00 ? 次閱讀

上篇文章,介紹了UML的基礎知識,并詳細介紹了UML中類圖的知識點與畫法。

本篇,來繼續介紹UML中的另一種圖——狀態圖。

1 UML狀態圖簡介

狀態圖,顯示一個狀態機,屬于UML活動圖。

UML具有許多不同類型的圖表,包括:

  • 靜態圖:用例圖、類圖、包圖
  • 動態圖:活動圖、狀態圖、時序圖、協作圖

狀態機用于對模型元素的動態行為進行建模,或是說對系統中受事件驅動的方面進行建模。

2 狀態圖基本要素

2.1 狀態

狀態是狀態機的重要組成部分,描述了狀態機所在對象動態行為的執行所產生的結果

2.1.1 初始/最終/選擇狀態

這三個都是****偽狀態 (Pseudostate):

  • 初始狀態:用一個實心圓形表
  • 最終狀態:用一個圓圈內嵌實心圓點表示
  • 選擇狀態:用一個菱形表示,條件分支上方括號內的文字表示****監護條件 (guard conditions)

2.1.2 一般狀態

UML中使用一個圓角矩形表示一個一般狀態

狀態的組成部分:

  • 名稱:由一個字符串組成,用以識別不同狀態??赡涿?,一般放置在狀態圖符頂部
  • 入口/出口動作:表示進入/退出這個狀態所執行的動作,動作可以是原子動作,也可是動作序列
  • 內部轉換:內部轉換不會引起狀態變化的轉換,此轉換的觸發不會導致狀態的入口/出口動作被執行。語法:事件/動作表達式

2.1.3 復合狀態

復合狀態,或稱組合狀態,是指包含有子狀態的狀態。

如下圖,“復合狀態2”即為復合狀態,內部的“狀態2-1”、"狀態2-2"為子狀態。

也可用以下形式表示,將復合狀態的內容單獨畫出。

注:圖中的圓圈內一個H字母,表示****歷史狀態 ,它也是一個偽狀態,其目的是記住從組合狀態中退出時所處的子狀態,當再次進入組合狀態,可直接進入這個子狀態,而不是再次從組合狀態的初態開始

2.2 轉換

轉換(Transition)是兩個狀態之間的關聯。表示對象在第一個狀態(Source State)中執行一定的動作,并在某個特定事情發生并且某個特定的條件滿足時進入下一個狀態(Target State)。

2.2.1 一般轉換

一般情況下的狀態轉換是兩個不同狀態之間的轉換,示意圖如下:

轉換的組成部分:

  • 源狀態(Source State):源狀態就是被轉換影響的狀態。某對象處于源狀態,當它接收到觸發事件或滿足監護條件,就會激活一個轉換
  • 目標狀態(Target State):轉換完成后,對象狀態發生變化,這時對象所處的狀態就是轉換的目標狀態
  • 觸發事件(Trigger):引起轉換的事件,這里所指的事件可以是信號、調用、時間段或狀態的一個改變
  • 監護條件(Guard Condition):是一個方括號括起來的布爾表達式,它被放在觸發事件的后面。監護條件可以引用對象的屬性值和觸發事件的參數
  • 結果(Effect):對象狀態轉移后的結果

2.2.2 自身轉換

自身轉換(Self-Transitions),是指狀態可以有返回自身狀態的轉換。

2.2.3 本地轉換與外部轉換

對于復合狀態之間的轉換,需要注意本地轉換(Local transition)與外部轉換(External transition)的不同。

上圖中,左邊是本地轉換,右邊是外部轉換。

  • 上面兩個,源狀態包含了目標狀態,這種情況兩種轉換的區別在于:本地轉換不會從源狀態退出(不會執行退出動作),而外部轉換會退出再重新進入源狀態。
  • 下面兩個,目標狀態包含了源狀態,這種情況兩種轉換的區別在于:本地轉換不會再次進入目標狀態(不會執行進入動作),而外部轉換會退出再重新進入目標狀態。

3 一個UML狀態圖實例

3.1 使用visio繪制UML狀態圖

新建一個visio文件,打開后會自動提示選擇創建某種類型的圖,這里選擇"軟件和數據庫 ->UML狀態機"

點擊確定之后,會進入UML狀態圖的編輯界面,左側可以看到用于UML狀態圖編輯的基本元素,將這些元素拖拽到右側的編解面板中,可以看到這些元素的基本結構形式:

3.2 實例講解

下面是一個UML狀態圖的實例:

這是一個全自動洗衣機的UML狀態圖,主要包括“設置”、“工作中”、“暫?!边@3個狀態。

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

4 總結

本篇介紹了UML狀態圖的基礎知識,并通過visio繪制一個全自動洗衣機的UML狀態圖實例,來介紹UML狀態圖的畫法與所表達的含義。
審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • UML
    UML
    +關注

    關注

    0

    文章

    122

    瀏覽量

    30773
  • 時序圖
    +關注

    關注

    2

    文章

    56

    瀏覽量

    22374
  • 狀態機
    +關注

    關注

    2

    文章

    486

    瀏覽量

    27244
  • 狀態圖
    +關注

    關注

    0

    文章

    11

    瀏覽量

    7256
收藏 人收藏

    評論

    相關推薦

    UML狀態圖和Petri網絡在類測試用例生成的應用

    【作者】:陳志德;曾凡平;【來源】:《小型微型計算機系統》2010年03期【摘要】:分析和研究UML狀態圖、擴展狀態機和Petri網在類測試用例生成的特點,提出結合三者優勢的類測試用例生成方法.通過
    發表于 04-24 09:52

    狀態狀態圖

    狀態狀態圖
    發表于 08-22 19:45

    我的8.6版 沒有狀態圖功能

    我的8.6版 沒有狀態圖功能在網站下載 哪個是狀態圖模塊軟件 網站上的軟件全是英文的名字 哪位大師方便告訴一下
    發表于 09-18 03:44

    2011無法創建狀態圖

    額。。。新人不知道論壇規矩,希望沒發錯地方。創建狀態圖的時候沒有該選項,希望知道的大大們給予幫助。是不是需要下載一個模塊?但是在官網上只能找到2012的。。求解
    發表于 02-06 13:56

    狀態圖模擬ATM機

    `今天閑來無聊,翻了翻寶典,看到了狀態圖那一章,心血來潮,就做了一個基于狀態圖的ATM機,只有簡單的查詢,存款,取款,修改密碼功能,可能會有BUG,不過程序只是為了驗證狀態圖的功能o(╯□╰)o
    發表于 01-21 20:20

    【資源帖】LabVIEW狀態圖模塊

    LabVIEW狀態圖模塊提供了一種編程模式,可幫助用戶在高于原先水平的基礎上開發應用程序。使用NI LabVIEW狀態圖模塊,用戶可開發狀態圖(statechart diagram)、通過NI
    發表于 04-14 01:00

    狀態圖使用詳解-簡單入門

    本帖最后由 sszx2007 于 2019-6-17 10:38 編輯 狀態圖使用詳解-簡單入門安裝狀態圖工具包所有的狀態圖工具包均不支持64位LabVIEW有關
    發表于 04-07 20:12

    經典UML狀態圖實用C++設計嵌入式系統事件驅動型編程技術資料分享

    UML狀態圖的實用C/C++設計嵌入式系統的事件驅動編程技術第二版內含國外版本和國內翻譯版本
    發表于 04-24 14:34

    labview狀態圖模塊的一些疑思

    自己寫的一個異步狀態圖的demo,主要測試一下異步狀態圖的一些特性,但是可以看到我直接丟了兩個循環,異步狀態圖只有在收到觸發之后才會進入狀態轉移,如果沒有選擇任何觸發器,那么異步
    發表于 05-31 11:45

    狀態圖編程

    狀態圖編程指南
    發表于 01-10 16:16

    LabVIEW狀態圖編程指南

    采用 LabVIEW 狀態圖模塊開發應用程序 1-7LabVIEW 狀態圖模塊中 UML 專用術語 8-15如何對 LabVIEW 狀態圖應用程序進行調試 16-25LabVIEW
    發表于 09-21 06:05

    狀態圖使用詳解-作者做了一個動態顯示狀態,怎么做的??

    論壇里的帖子,狀態圖使用詳解-簡單入門 我初學者,很有幫助,甚是感謝??! 軟件界面里的圖片,狀態切換動畫是怎么實現的? 沒看明白,能給說一下嗎?感謝
    發表于 11-30 11:41

    UML狀態圖在回歸測試中的應用

    基于UML 狀態圖的測試是一種系統測試技術,也是基于需求的回歸測試方法的擴展。該文通過依賴性分析,生成基于依賴性分析的UML 狀態圖和依賴圖,將修改前和修改后的
    發表于 03-23 08:46 ?14次下載

    UML順序圖與狀態圖的一致性檢查

    用戶可使用UML從不同角度對系統進行建模,但不同視圖間存在信息冗余,可能導致視圖不一致問題。該文針對具有多種邏輯語義的順序圖提出分析方法,為復雜層次結構的狀態圖
    發表于 04-16 08:43 ?27次下載

    LabVIEW狀態圖編程指南

    采用LabVIEW狀態圖模塊開發應用程序 1-7LabVIEW狀態圖模塊中UML專用術語 8-15如何對LabVIEW狀態圖應用程序進行調試 16-25LabVIEW
    發表于 07-01 10:45 ?109次下載
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>