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