術語匯編 UML狀態圖用法解析
本文和大家重點討論一下UML狀態圖,UML狀態圖由表示狀態的節點和表示狀態之間轉換的帶箭頭的直接組成。若干個狀態由一條或多條轉換箭頭連接,狀態的轉換由事件觸發。
UML狀態圖簡介
UML狀態圖是系統分析的一種常用工具,它通過建立類對象的生存周期模型來描述對象隨時間變化的動態行為。
狀態機
狀態機是展示狀態與狀態轉換的圖。通常一個狀態機依附于一個類,并且描述一個類的實例。狀態機包含了一個類的對象在其生命周期間所有狀態的序列以及對象對接收到的事件所產生的反應。
狀態機由狀態、轉換、事件、活動和動作5部分組成。
UML狀態圖
一個UML狀態圖表示一個狀態機。主要用于表現從一個狀態到另一個狀態的控制流。
UML狀態圖由表示狀態的節點和表示狀態之間轉換的帶箭頭的直接組成。若干個狀態由一條或多條轉換箭頭連接,狀態的轉換由事件觸發。模型元素的行為可以由UML狀態圖中的一條通路表示,沿著此通路狀態機隨之執行了一系列動作。一個簡單的UML狀態圖如下:
1、狀態
狀態由一個帶圓角的矩形表示,UML狀態圖的圖標可以分為3部分:名稱、內部轉換和嵌套狀態。
(1)、名稱。名稱表示狀態的名字,通常用字符串表示。一個狀態的名稱在UML狀態圖所在的上下文中應該是***的
(2)、內部轉換。在內部轉換中可以包含進入或者走出此狀態應該執行的活動或動作,它們將響應對象所接收到的事件,但是不改變對象的狀態。
(3)、嵌套UML狀態圖。UML狀態圖中的狀態有兩種:簡單狀態和組合狀態。簡單狀態不包含其他狀態,組合狀態是包含子狀態的狀態。在組合狀態的嵌套UML狀態圖部分包含的就是此狀態的子狀態。
2、轉換
轉換用帶箭頭的直線表示,分別連接源狀態和目標狀態。當源狀態接收到一個事件,并且監護條件得到滿足,則執行相應的動作,同時從源狀態轉換到目標狀態。如果轉換上沒有標注觸發轉換的事件,則表示此轉換為自動進行。
3、初始狀態
初始狀態代表UML狀態圖的起始位置,起始狀態在一個UML狀態圖中只允許有一個,用一個實心圓表示。
4、終止狀態
終止狀態是一個UML狀態圖的終止點。它用一個含有實心圓的空心圓表示。
5、判定
判定用空心小菱形表示。工作流在此處按監護條件的取值而發生分支。#p#
狀態
UML狀態圖中狀態包括狀態名、內部轉換、入口動作和出口動作、簡單狀態、組成狀態(順序子狀態、并發子狀態)、歷史狀態。
事件
事件表示在某一特定的時間或空間出現的能夠引發狀態改變的運動變化。事件分為入口事件、出口事件、動作事件、信號事件、調用事件、修改事件、時間事件、延遲事件。
轉換
轉換表示當一個特定事件發生或某些條件得到滿足時,一個源狀態下的對象在完成一定的動作后將發生狀態轉變,轉向另一個稱之為目標狀態的狀態。
UML狀態圖中轉換通常分為外部轉換、內部轉換、完成轉換和復合轉換4種。一個轉換一般包括5部分的信息:源狀態、目標狀態、觸發事件、監護條件和動作。
1、外部轉換
外部轉換是一種改變對象狀態的轉換,它是最常見的一種轉換。外部轉換用從源狀態到目標狀態的箭頭表示。下圖表示了一個火車上的衛生間的簡單狀態轉換。圖中箭頭上標注的都是引發狀態轉換的外部事件。
2、內部轉換
內部轉換有一個源狀態但沒有目標狀態,它轉換后的狀態仍是它本身。內部轉換用于對不改變狀態的插入動作建立模型,例如建立幫助信息。
內部轉換和自轉換(即后面提到的完成轉換)不同:自轉換是離開本狀態后重新進入該狀態,它會激發狀態的入口動作和出口動作的執行;而內部轉換自始至終都不離開本狀態,所以沒有出口或入口事件。
3、完成轉換
完成轉換又成自轉換,之所以稱為完成轉換是因為沒有標明觸發器事件的轉換是由狀態中活動的完成引起的,是自然而然的完成的轉換。
4、復合轉換
復合轉換由簡單轉換組成,這些簡單轉換通過分支判定、分叉或接合組合在一起。多條件的分支判定又分為鏈式和非鏈式的分支,兩種分支分別如下圖所示:
5、觸發事件
UML狀態圖中觸發事件就是能引起狀態轉換的事件。觸發事件可以是信號、調用和時間段等。
6、監護條件
監護條件是觸發轉換必須滿足的條件,它是一個布爾表達式。當事件被觸發時,監護條件被賦值。如果布爾表達式為真,那么轉換被觸發;否則不會引起轉換。監護條件只能在觸發事件發生時被賦值一次。從一個狀態引出的多個轉換可以有同樣的觸發器事件,但是每個轉換必須具有不同的監護條件。
7、動作
動作是一組可執行語句或計算處理過程。動作可以包括發送消息給另一個對象、操作調用、設置返回值、創建和銷毀對象等。動作是原子的,不可中斷的。
整個系統可以在同一時間執行多個動作。動作在它的控制線程中是原子性的,一旦開始執行就必須執行到底并且不能與同時處于活動狀態的動作發生交互作用。
【編輯推薦】