UML——狀態圖


•狀態和狀態機

狀態、狀態表示法及狀態機

狀態 是指在對象生命周期中滿足某些條件、執行某些活動或等待某些事件的一個條件和狀況

•一個狀態通常包括名稱、進入/退出活動、內部轉換、子狀態和延遲事件 等五個部分組成

image

狀態機 是計算機科學理論的一部分,但UML中的狀態機模型主要是基於David Harel所做的擴展,是用來展示狀態與狀態之間轉換的圖

•如何閱讀狀態機圖

閱讀最簡單的狀態圖

•最為核心的元素無外乎是兩個:一個是用圓角矩形表示的狀態 (初態和終態例外);另一個則是在狀態之間的、包含一些文字描述的有向箭頭線,這些箭頭線稱為轉換

image

轉換的五要素

image

•源狀態:即受轉換影響的狀態

•目標狀態:當轉換完成后對象的狀態

•觸發事件:用來為轉換定義一個事件,包括調用、改變、信號、時間四類事件

•監護條件:布爾表達式,決定是否激活轉換、

•動作:轉換激活時的操作

讀圖小結

•與狀態off相關的轉換有兩個,其觸發事件都是turnOn,只不過其監護條件不同。如果對象收到事件turnOn,那么將判斷壺中是否有水;如果[沒水],則仍然處於off狀態;如果[有水]則轉為on狀態,並執行“燒水”動作

•而與狀態on相關的轉換也有兩個,如果“水開了”就執行turnOff,關掉開關;如果燒壞了,就進入了終態了

image

復雜轉換

轉換類型

描述

語法

外部轉換

      對事件做出響應,引起狀態變化或自身轉換,同時引發一個特定動作,如果離開或進入狀態將引發進入轉換、離開轉換

事件 ( 參數 )[ 監護條件 ]/ 動作

內部轉換

      對事件做出響應,並執行一個特定的活動,但並不引起狀態變化或進入轉換、離開轉換

事件 ( 參數 )[ 監護條件 ]/ 動作

進入轉換

     當進入某一狀態時,執行相應活動

entry/ 活動

退出轉換

      當離開某一狀態時,執行相應活動

exit/ 活動

閱讀帶有復雜轉換的狀態圖

image

只有動作描述,進入和退出和操作方法寫在了里面

各種轉換的區別

進入和退出轉換 :當進入一個狀態時,執行某個動作;或當退出某個狀態時,執行什么動作。這時就可以使用進入和退出轉換 來表示

內部轉換 :用來處理一些不離開該狀態的事件

image

活動與延遲事件

•活動:當對象處於一個狀態時,它一般是空閑的,在等待一個事件的發生。但是某些時間,你可能希望描述個正在進行的活動。在處於一個狀態的同時,對象做着某些工作,並一直繼續到被某個事件中斷

• 延遲事件:延遲事件是一種特殊的事件,它是指該事件不會觸發狀態的轉換,當對象處於該狀態時事件不會丟失,但會被延遲執行。例如,當E-mail程序中正 在發送第一封郵件時,用戶下達發送第二封郵件執令就會被延遲,但第一封郵件發送完成后,這封郵件就會被發送。這種事件就屬於延遲事件

復合狀態表示法

image 分解指示符

順序復合狀態圖

image

監護條件為“應答音 ”,代表已連接。

並發復合狀態圖

image

三種評測方式

歷史

•“一個圓圈中加上字母H”,是用來表示歷史狀態的。

它的含義是:當從狀態“結賬”和“顯示購物車”返回子狀態“顯示索引信息”時,將進入的是離開時的歷史狀態。也就是說,轉到購物車或結賬區之后,再回到“瀏覽目錄”的頁面時,其中的內容是不變的,仍然保留原來的信息。

image

子狀態機

•將子狀態機單獨定義,並對其進行命名(通常以大寫字母開頭),然后在需要使用的地方來引用它

image

引用C狀態機

•如何繪制狀態機圖

繪制狀態機圖

•繪制狀態機圖的理想步驟是:尋找 主要的狀態,確定狀態之間的轉換細化 狀態內的活動與轉換,用復合狀態來展開細節

•尋找主要狀態:對於航班機票預訂系統而言,顯然包括的狀態主要有 -- 在剛確定飛機計划時,顯然是沒有任何預訂的,並且在有人預訂機票之前都將處於這種“無預訂”狀態 -- 對訂座而言顯然有“部分預訂”和“預訂完”兩種狀態 -- 而當航班快要起飛時,顯然要“預訂關閉” 總結一下,主要有四種狀態:無預訂、部分預訂、預訂完以及預訂關閉

•確定狀態間轉換

表格橫向是轉出

表格縱向是轉入

源目標

無預訂

部分預訂

預訂完

預訂關閉

無預訂

 

預訂 ()

不直接轉換

關閉 ()

部分預訂

退訂 (), 使預訂人 =0

 

預訂 (), 無空座

關閉 ()

預訂完

不直接轉換

退訂 ()

 

關閉 ()

預訂關閉

無轉換

無轉換

無轉換

 

image

•細化狀態內的活動與轉換

image

•使用復合狀態

image

•狀態機圖應用說明

•對對象生命周期建模 :主要描述對象能夠響應的事件、對這些事件的響以及過去對當前行為的影響

•對反應型對象建模:這個對象可能處於的穩定狀態、從一個狀態到另一個狀態之間的轉換所需的觸發事件,以及每個狀態改變時發生的動作

•狀態機圖既可以用來表示一個業務領域的知識,也可以用來描述設計階段對象的狀態變遷

•本章小結

•首先介紹了“狀態”的概念和UML表示法,然后引入了狀態機的概念

•通過三個例子逐一說明簡單狀態機圖、包含復雜轉換的狀態機圖以及包含復合狀態的狀態機圖的閱讀方法

•,緊接着通過一個航班機票預訂系統來闡述了狀態圖的繪制過程:確定狀態,分析狀態間的轉換,細化活動與內部轉化,通過復合狀態來組織

•簡明地點出狀態圖的兩大功能:對對象的生命周期建模以及對反應型對象的行為建模

內容出自:UML 面向對象設計PPT


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM