成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解析UML狀態機視圖狀態和轉換

開發 架構
學習UML建模語言的過程中,你是否遇到過UML狀態機視圖方面的問題,你對它是否熟悉呢,這里就向大家介紹一下UML狀態機視圖的狀態和轉換。

本節和大家一起學習一下UML狀態機視圖的概念,這里主要介紹一下UML狀態機視圖的狀態和轉換兩部分內容,相信通過本節的介紹你對UML狀態機視圖有一定的了解。下面是具體介紹。

UML狀態機視圖狀態和轉換

◆狀態

狀態描述了一個類對象生命期中的一個時間段。它可以用三種附加方式說明:在某些方面性質相似的一組對象值;一個對象等待一些事件發生時的一段時間;對象執行持續活動時的一段時間。雖然狀態通常是匿名的并僅用處于該狀態時對象進行的活動描述,但它也可以有名字。

在狀態機中,一組狀態由轉換相連接。雖然轉換連接著兩個狀態(或多個狀態,如果圖中含有分支和結合控制),但轉換只由轉換出發的狀態處理。當對象處于某種狀態時,它對觸發狀態轉換的觸發器事件很敏感。狀態用具有圓形拐角的矩形表示。如圖6-2所示。

 
圖6–2狀態

◆轉換

我們再來看一下UML狀態機視圖的轉換。從狀態出發的轉換定義了處于此狀態的對象對外界發生的事件所做出的反應。通常,定義一個轉換要有引起轉換的觸發器事件、監護條件、轉換的動作和轉換的目標狀態。表6–2列出了幾種轉換和由轉換所引起的隱含動作。

轉換的種類
描述
語法

入口動作
進入某一狀態時執行的動作
entry/action

出口動作
離開某一狀態時執行的動作
exit/action

外部轉換
引起狀態轉換或自身轉換,同時執行一個具體的動作,包括引起入口動作和出口動作被執行的轉換
e(a:T)[exp]/action

內部轉換
引起一個動作的執行但不引起狀態的改變或不引起入口動作或出口動作的執行
e(a:T)[exp]/action
表6–2轉換的種類及隱含動作

◆1.外部轉換

我們先來看一下UML狀態機視圖中的外部轉換,它是一種改變活動狀態的轉換,它是最普通的一種轉換。它用從源狀態到目標狀態的箭頭表示,其他屬性以文字串附加在箭頭旁(如圖6–3所示)。
圖6–3外部轉換

◆2.觸發器事件

觸發器事件是引起轉換的事件。事件可以有參數,以供轉換的動作使用。如果一個信號有后代,那么信號中的任一個后代都可以引起轉換。例如,如果轉換將MouseButton作為觸發器,那么MouseButtonDown可以觸發這個轉換(如圖6–1)。

事件并不是持續發生的,它只在時間的一點上發生。當一個對象接收到一個事件時,如果它沒有空閑時間來處理事件,就將事件保存起來。對象一次只處理一個事件,在對象處理事件時轉換必須激發,事件過后是不會被記住的(某些特殊的延遲事件除外,在觸發一個轉換前或處延遲被解除前,這類事件被保存起來)。如果兩個事件同時發生,它們被每次處理一個。沒有觸發任何轉換的事件被簡單地忽略或遺棄,這并不是一個錯誤,忽略不想要的事件要比詳細指明所有事件容易得多。

◆3.監護條件

UML狀態機視圖中轉換可能具有一個監護條件,監護條件是一個布爾表達式。監護條件可以引用對象的屬性值和觸發事件的參數。當一個觸發器事件被觸發時,監護條件被賦值。如果布爾表達式的值為“真”,那么觸發事件即,使轉換有效。如果布爾表達式的值為“假”,則不會引起轉換。監護條件只能在觸發事件發生時被賦值一次。如果在轉換發生后監護條件由原來的“假”變為“真”,則因為賦值太遲而不能觸發轉換。

從一個狀態引出的多個轉換可以有同樣的觸發器事件,但是每個轉換必須具有不同的監護條件。當其中一個監護條件滿足時,觸發器事件會引起相應的轉換。通常,監護條件的設置要考慮到各種可能的情況以確保一個觸發器事件的發生應該能夠引起某些轉換。如果有些情況沒有考慮到,一個觸發器事件沒有引起任何轉換,那么在狀態機視圖中要忽略這個事件。一個事件的發生只能同時引起一個轉換(在一個控制線程中)。如果一個事件可能引起多個轉換,那么其中只有一個轉換有效。如果兩個相互矛盾的轉換同時有效,則無法確定到底發生了哪個轉換。這兩個轉換隨機地發生一個,或者由系統的實現細節決定究竟發生哪一個,但是對建模者來說,無法預料這種轉換產生的后果。#p#

◆4.完成轉換

沒有標明觸發器事件的轉換是由狀態中的活動的完成引起的(即完成轉換)。完成轉換也可以帶一個監護條件,這個監護條件是在狀態中的活動完成時被賦值的(而不是完成以后)。

◆5.動作

當轉換被引起時,它對應的動作被執行。UML狀態機視圖中動作是原子性的,一般是一個簡短的計算處理過程,通常是一個賦值操作或算術計算。另外還有一些動作,包括給另一個對象發送消息、調用一個操作、設置返回值、創建和銷毀對象,沒有被定義的控制動作用外部語言來進行詳細說明。動作也可以是一個動作序列,即一系列簡單的動作。動作或動作序列的執行不會被同時發生的其他動作影響或終止。按照UML中的概念,動作的執行時間非常短,與外界事件所經歷的時間相比是可以忽略的,因此,在動作的執行過程中不能再插入其他事件。然而,實際上任何動作的執行都要耗費一定時間,新到來的事件必須被安置在一個隊列中。

整個系統可以在同一時間執行多個動作。我們說動作是原子性的,并不是說整個系統是原子性的。系統能夠處理硬件的中斷和多個動作的時間共享。動作在它的控制線程中是原子性的。一旦開始執行,它必須執行到底并且不能與同時處于活動狀態的動作發生交互作用。但動作不能用于表達處理過程很長的事物。與系統處理外部事件所需要的反應時間相比,動作的執行過程應該很簡潔,否則系統不能夠做到實時響應。

一個動作可以使用觸發器事件的參數和對象的屬性值作為表達式的一部分。

表6–3列出了各種動作及描述。

表6–3動作的種類

◆6.狀態改變

當動作執行完畢后,轉換的目標狀態被激活,這時會觸發出口動作或入口動作的執行。

◆7.嵌套狀態

狀態可以被嵌套在其他的組成狀態之內(看下一段)。從一個外部狀態出發的轉換可以應用于這個狀態所有的內部嵌套狀態。任何一個內部嵌套狀態被激活時,轉換都有可能發生。組成狀態可用于表達例外和異常,因為組成狀態上的轉換適用于所有它所嵌套的狀態,不需要每個嵌套狀態顯式地單獨處理異常。

◆8.入口和出口動作

一個跨越多個嵌套層次的轉換可能會離開或進入某個狀態。只要轉換進入或離開某個狀態,則該狀態可能包含要被執行的動作。進入一個狀態可能會執行一個依附于該狀態的入口動作。如果轉換離開初始狀態,那么在轉換的動作和新狀態的入口動作被執行前,執行該狀態的出口動作。

入口動作通常用來進行狀態所需要的內部初始化。因為不能回避一個入口動作,任何狀態內的動作在執行前都可以假定狀態的初始化工作已經完成,不需要考慮如何進入這個狀態。同樣,無論何時從一個狀態離開都要執行一個出口動作來進行后處理工作。當出現代表錯誤情況的高層轉換使嵌套狀態異常終止時,出口動作特別有用。出口動作可以處理這種情況以使對象的狀態保持前后一致。入口動作和出口動作原則上依附于進來的和出去的轉換,但是將它們聲明為特殊的動作可以使狀態的定義不依賴狀態的轉換,因此起到封裝的作用。

◆9.內部轉換

我們再來看一下UML狀態機視圖中內部轉換。內部轉換有一個源狀態但是沒有目標狀態。內部轉換的激發規則和改變狀態的轉換的激發規則相同。由于內部轉換沒有目標狀態,因此轉換激發的結果不改變本狀態。如果一個內部轉換帶有動作,它也要被執行,但是沒有狀態改變發生,因此也不需要執行入口和出口動作。內部轉換用于對不改變狀態的插入動作建立模型(如,記錄發生的事件數目或建立幫助信息屏)。

盡管入口動作和出口動作的執行是由進入或離開某狀態的外部轉換所引起的,除了使用保留字entry和exit代替觸發事件名稱之外,入口和出口動作使用與內部轉換相同的表示法。

一個自身轉移會激發狀態上的入口動作和出口動作的執行(從概念上來講,自身轉換從一個狀態出發后又會到自身狀態),因此,自身轉換不等價于內部轉換。圖6–4說明了入口動作、出口動作和內部轉換。

圖6–4內部轉、入口動作和出口動作

【編輯推薦】

  1. UML狀態圖及其組成元素簡介
  2. UML狀態圖創建過程中需要注意問題
  3. UML建模風格 UML狀態圖表現形式解析
  4. 在回歸測試中UML狀態圖切片的應用 
  5. UML用戶指南--UML圖簡介

 

責任編輯:佚名 來源: linuxdiyf.com
相關推薦

2010-06-18 13:25:44

UML狀態機視圖

2010-07-12 15:00:56

UML狀態機視圖

2010-07-12 15:09:20

UML狀態機視圖

2010-07-08 13:03:31

UML狀態機圖

2010-06-18 13:08:05

UML狀態機視圖

2010-06-12 11:11:55

UML應用

2010-06-18 13:15:07

UML狀態機圖

2023-03-06 07:35:30

狀態機工具訂單狀態

2013-09-03 09:57:43

JavaScript有限狀態機

2021-07-08 09:15:20

單片機編程狀態機編程語言

2020-03-27 10:50:29

DSL 狀態機工具

2010-06-13 16:16:21

UML狀態圖

2024-10-10 17:46:06

2021-04-29 09:31:05

前端開發技術

2011-06-24 16:09:24

Qt 動畫 狀態機

2010-07-06 16:19:56

UML圖形

2010-07-05 12:21:36

UML行為圖

2010-07-12 14:16:19

UML活動圖

2021-08-19 09:00:00

微服務開發架構

2011-08-22 10:52:30

iptables狀態
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91天堂| 亚洲福利在线观看 | 91高清视频在线观看 | 韩国电影久久 | 精品久久视频 | 中文字幕一区在线观看视频 | 国产精品久久久一区二区三区 | 人妖videosex高潮另类 | 日本三级做a全过程在线观看 | 91大神在线资源观看无广告 | 久久尤物免费一区二区三区 | 7777在线| 欧美日韩三级 | 97超碰人人草| 亚洲视频在线播放 | 午夜视频一区二区 | 欧美a√ | av在线免费网 | h在线 | 中文字幕人成乱码在线观看 | 中文字幕一区二区三区日韩精品 | 99精品久久久久久中文字幕 | 国产欧美一区二区三区另类精品 | 日本大片在线播放 | 岛国二区 | 欧美日韩在线综合 | 成人精品久久日伦片大全免费 | 午夜精品久久久久久久久久久久久 | 免费观看羞羞视频网站 | www.成人.com | 在线观看日韩 | 久久久久无码国产精品一区 | 久久在线| 日韩视频在线免费观看 | 一区二区三区国产精品 | 精品少妇v888av | 成年人在线视频 | 国产精品成人一区二区三区吃奶 | www.久草| 日韩精品一区二区三区中文在线 | 欧美日韩一区二区三区四区五区 |