亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 課堂 > 技術(shù)開(kāi)發(fā) > 正文

UML系列內(nèi)容之十:狀態(tài)圖

2023-06-17 18:00:45
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

今天,繼續(xù)我們的UML之旅。

今天,我們將瀏覽一下UML中的狀態(tài)機(jī)圖。

1.什么是狀態(tài)機(jī)圖

狀態(tài)機(jī)圖(State Machine Diagram)是系統(tǒng)分析中常用的一種工具,它用于描述一個(gè)對(duì)象在其生命周期內(nèi)所經(jīng)歷的各種狀態(tài),以及狀態(tài)之間的轉(zhuǎn)移、引發(fā)轉(zhuǎn)移的事件或狀態(tài)轉(zhuǎn)移的活動(dòng)。

狀態(tài)機(jī)圖主要用于對(duì)類(lèi)或?qū)ο蟮膭?dòng)態(tài)行為進(jìn)行建模。也可以對(duì)一個(gè)用例,或整個(gè)系統(tǒng)進(jìn)行建模。

2.狀態(tài)機(jī)的構(gòu)成

狀態(tài)機(jī)由狀態(tài)、轉(zhuǎn)移、事件和動(dòng)作等組成。

2.1 狀態(tài)

狀態(tài)(state)是指對(duì)象在其生命周期中,滿(mǎn)足某些條件、執(zhí)行某些活動(dòng)或等待某些事件時(shí)的一個(gè)狀況。

如圖書(shū)館的一本書(shū)籍可能有:“在架”、“借出”、“被預(yù)借”等狀態(tài);讀者可能有“已綁定借閱卡”、“未綁定借閱卡”、“被限制借閱”等狀態(tài)。

在UML中,狀態(tài)使用圓角矩形表示,一個(gè)狀態(tài)有自己的狀態(tài)名稱(chēng),狀態(tài)中包含該狀態(tài)下將執(zhí)行的動(dòng)作和事件。

借閱圖書(shū)狀態(tài)
圖1 借閱圖書(shū)狀態(tài)

如上圖是借閱系統(tǒng)中借閱圖書(shū)的一個(gè)狀態(tài)。

entry、do和exit是標(biāo)準(zhǔn)的三個(gè)動(dòng)作,分別是進(jìn)入狀態(tài)時(shí)的動(dòng)作,處于該狀態(tài)下執(zhí)行的動(dòng)作和退出該狀態(tài)時(shí)的動(dòng)作

且可以在該狀態(tài)下定義相應(yīng)的事件動(dòng)作event。

entry為進(jìn)入動(dòng)作,當(dāng)進(jìn)入該狀態(tài)時(shí)要執(zhí)行的動(dòng)作

exit為退出動(dòng)作,當(dāng)離開(kāi)當(dāng)前狀態(tài)時(shí)要執(zhí)行的動(dòng)作

除了這種標(biāo)準(zhǔn)狀態(tài)之外,UML中還定義了初始狀態(tài)、結(jié)束狀態(tài)、組合狀態(tài)、子狀態(tài)和歷史狀態(tài)。

(1)初始狀態(tài)

初始狀態(tài)代表狀態(tài)機(jī)圖的開(kāi)始,使用實(shí)心圓表示。一個(gè)狀態(tài)機(jī)圖只有一個(gè)初始狀態(tài)。

初始狀態(tài)
圖2 初始狀態(tài)

(2)結(jié)束狀態(tài)

結(jié)束狀態(tài)表示一個(gè)狀態(tài)機(jī)圖的結(jié)束,使用實(shí)心的圓環(huán)表示。一個(gè)狀態(tài)機(jī)圖可以有多個(gè)結(jié)束狀態(tài)。

結(jié)束狀態(tài)
圖3 結(jié)束狀態(tài)

(3)組合狀態(tài)

組合狀態(tài)是狀態(tài)內(nèi)部嵌套有子狀態(tài)的狀態(tài)。一個(gè)組合狀態(tài)包含一系列子狀態(tài)。

而沒(méi)有嵌套的狀態(tài)稱(chēng)之為簡(jiǎn)單狀態(tài)。

嵌套在一個(gè)狀態(tài)內(nèi)部的狀態(tài)為子狀態(tài)??梢愿鶕?jù)狀態(tài)是否同時(shí)存在,可以再細(xì)分為順序子狀態(tài)和并發(fā)子狀態(tài)。

順序子狀態(tài):在組合狀態(tài)的生命周期中,任何時(shí)刻只能處于一個(gè)子狀態(tài),即多個(gè)子狀態(tài)之間是互斥的關(guān)系,不能同時(shí)存在。

如下面的圖中演示一部手機(jī)處于“給某人打電話(huà)”這種組合狀態(tài)時(shí),其子狀態(tài)不能同時(shí)存在,是一種順序的子狀態(tài)。

并發(fā)狀態(tài)之順序子狀態(tài)
圖4 組合狀態(tài)之順序子狀態(tài)

并發(fā)子狀態(tài):多個(gè)順序的子狀態(tài)可以同時(shí)存在。下圖給出一輛汽車(chē)行駛中的組合狀態(tài)。低速和高速這兩個(gè)狀態(tài)是順序的子狀態(tài),在某一時(shí)刻只能處于其中一個(gè)狀態(tài);前進(jìn)和倒車(chē)也是如此。但這兩個(gè)順序的子狀態(tài)又可以同時(shí)存在。

并發(fā)狀態(tài)
圖5 組合狀態(tài)之并發(fā)子狀態(tài)

歷史狀態(tài):歷史狀態(tài)是一種偽狀態(tài),它表示在狀態(tài)再次轉(zhuǎn)移到該組合狀態(tài)時(shí),應(yīng)處于上一次退出時(shí)的一個(gè)子狀態(tài)。

歷史狀態(tài)
圖6 組合狀態(tài)之歷史狀態(tài)

上圖給出了一個(gè)音樂(lè)播放器的一個(gè)狀態(tài)機(jī)圖。其中“播放”標(biāo)記為歷史狀態(tài)。其含義是在播放狀態(tài)轉(zhuǎn)移到暫停狀態(tài),當(dāng)由暫停再進(jìn)入播放狀態(tài)時(shí),其應(yīng)進(jìn)入“播放”狀態(tài)退出時(shí)的一個(gè)子狀態(tài),它可能在退出時(shí)是“順序播放”狀態(tài),也可能是“隨機(jī)播放”狀態(tài),也可能是“倒序播放”狀態(tài),但必須是退出“播放”狀態(tài)時(shí)所處的一個(gè)歷史狀態(tài)。

2.2 轉(zhuǎn)移

轉(zhuǎn)移(Transition)指的是兩個(gè)不同狀態(tài)之間的一種關(guān)系,是對(duì)象在滿(mǎn)足一定條件或發(fā)生某個(gè)事件時(shí),從一種狀態(tài)遷移到另外一種狀態(tài)。

狀態(tài)轉(zhuǎn)移
圖7 狀態(tài)轉(zhuǎn)移

一個(gè)轉(zhuǎn)移一般包括源狀態(tài)、目的狀態(tài)、觸發(fā)事件、警戒條件和動(dòng)作5部分組成。

也就是說(shuō)事件的發(fā)生導(dǎo)致了從源狀態(tài)到目的狀態(tài)的轉(zhuǎn)移。

(1)源狀態(tài)

是受轉(zhuǎn)移影響的狀態(tài),當(dāng)事件發(fā)生或滿(mǎn)足警戒條件時(shí),就會(huì)激活一個(gè)轉(zhuǎn)移。

(2)目的狀態(tài)

轉(zhuǎn)移完成后的狀態(tài)。

(3)觸發(fā)事件

當(dāng)源狀態(tài)的對(duì)象接收到事件時(shí)轉(zhuǎn)移才有可能被激活。觸發(fā)事件有自己的名稱(chēng),也可以有自己的參數(shù)。

(4)警戒條件

轉(zhuǎn)移激活前需要滿(mǎn)足的一個(gè)條件。警戒條件往往是一個(gè)邏輯表達(dá)式,其值為真或假。觸發(fā)事件發(fā)生,且警戒條件為真時(shí),轉(zhuǎn)移才會(huì)被激活。否則,本次事件將被丟棄,只能等待下一次觸發(fā)事件的發(fā)生。

(5)動(dòng)作

當(dāng)轉(zhuǎn)移被激活時(shí),對(duì)應(yīng)的動(dòng)作也會(huì)被執(zhí)行。動(dòng)作一般可以是一個(gè)賦值操作或算術(shù)運(yùn)算,也可以是調(diào)用目的對(duì)象的一個(gè)操作或創(chuàng)建、銷(xiāo)毀一個(gè)對(duì)象,也可以是用簡(jiǎn)單語(yǔ)言來(lái)說(shuō)明動(dòng)作的含義。

狀態(tài)轉(zhuǎn)移
圖8 動(dòng)作

上圖中是圖書(shū)由“在架”狀態(tài)轉(zhuǎn)移到“被預(yù)借”狀態(tài)的一個(gè)例子。

源狀態(tài)是“在架”,目的狀態(tài)是“被預(yù)借”,“讀者預(yù)借”是觸發(fā)事件的名稱(chēng),“圖書(shū)編號(hào)”是觸發(fā)事件的參數(shù),“讀者預(yù)借數(shù)量<=1”是轉(zhuǎn)移的警戒條件,“添加預(yù)借記錄”和“設(shè)置圖書(shū)預(yù)借標(biāo)志=1”是轉(zhuǎn)移伴隨的動(dòng)作。

轉(zhuǎn)移還區(qū)分外部轉(zhuǎn)移和內(nèi)部轉(zhuǎn)移兩種情形。

外部轉(zhuǎn)移:外部轉(zhuǎn)移是一種改變狀態(tài)的轉(zhuǎn)移。也是狀態(tài)機(jī)中常見(jiàn)的一種轉(zhuǎn)移。

這種轉(zhuǎn)移主要出現(xiàn)在兩個(gè)不同的狀態(tài)之間。

內(nèi)部轉(zhuǎn)移:內(nèi)部轉(zhuǎn)移是指不會(huì)導(dǎo)致?tīng)顟B(tài)改變的轉(zhuǎn)換。有時(shí),我們需要在該狀態(tài)下處理一些無(wú)需離開(kāi)狀態(tài)的事件,這時(shí)可以定義一個(gè)內(nèi)部轉(zhuǎn)移。

如“借閱圖書(shū)”這個(gè)狀態(tài)中,“超出借閱冊(cè)數(shù)”時(shí),我們可能終止該本書(shū)的借閱,不把本書(shū)添加到借閱列表中,這種處理沒(méi)有導(dǎo)致借閱圖書(shū)狀態(tài)的轉(zhuǎn)移,可以視為內(nèi)部轉(zhuǎn)移。

內(nèi)部轉(zhuǎn)移的表示方法:

事件(參數(shù)名)[警戒條件]/動(dòng)作

如下圖所示的三個(gè)event動(dòng)作。

狀態(tài)中的動(dòng)作
圖9 借閱圖書(shū)的狀態(tài)動(dòng)作

如果源狀態(tài)與目的狀態(tài)是同一狀態(tài),則稱(chēng)為自轉(zhuǎn)移。

下面這個(gè)例子中的“循環(huán)”就是一個(gè)自轉(zhuǎn)移的例子。

自轉(zhuǎn)移
圖10 自轉(zhuǎn)移

2.3 事件

事件(Event)是指在特定時(shí)間或空間內(nèi)出現(xiàn),并能夠?qū)е聽(tīng)顟B(tài)轉(zhuǎn)移的信號(hào)、超時(shí)、條件改變、時(shí)間段等。

主要包括信號(hào)事件、時(shí)間事件、改變事件和調(diào)用事件等。

(1)信號(hào)事件

信號(hào)事件(signal event)是指一個(gè)對(duì)象接收到信號(hào)的事件,該接收信號(hào)的事件會(huì)導(dǎo)致其狀態(tài)的轉(zhuǎn)換。

發(fā)送對(duì)象明確地創(chuàng)建、初始化一個(gè)信號(hào)實(shí)例并把它發(fā)送到一個(gè)對(duì)象或?qū)ο蟮募稀?/p>

信號(hào)事件
圖11 在選擇記錄時(shí),按下ctrl進(jìn)入多選模式狀態(tài),釋放ctrl鍵轉(zhuǎn)換為單選模式

(2)時(shí)間事件

時(shí)間事件(time event)代表時(shí)間的流逝。當(dāng)時(shí)間條件被滿(mǎn)足時(shí)可能要觸發(fā)某個(gè)事件。時(shí)間可以是相對(duì)的也可以絕對(duì)的。如:after(9:00)。

時(shí)間事件
圖12 在路燈控制系統(tǒng)中,上午6:00斷電關(guān)閉,下午18:00后供電,開(kāi)燈

(3)改變事件

改變事件(change event)是指依賴(lài)特定屬性值的邏輯表達(dá)式所表示的條件滿(mǎn)足時(shí),事件發(fā)生。

這里的改變事件與上面所說(shuō)的警戒條件不同,警戒條件是在轉(zhuǎn)移事件發(fā)生時(shí)或事件接收者對(duì)事件處理時(shí)被賦值一次,如果警戒條件為假,則轉(zhuǎn)移就不會(huì)發(fā)生,且該事件會(huì)被丟棄,警戒條件也不會(huì)再給賦值;而改變事件會(huì)被多次賦值直到條件為真,從而激活轉(zhuǎn)移。可以使用when(exp)的形式來(lái)表示。

改變事件
圖13 登錄后,time自動(dòng)連續(xù)增加,未操作時(shí)間超過(guò)300秒取消登錄狀態(tài)

(4)調(diào)用事件

調(diào)用事件(call event)表示一個(gè)對(duì)象接收到一個(gè)對(duì)調(diào)用的請(qǐng)求,這個(gè)對(duì)象用狀態(tài)的轉(zhuǎn)移而非特定的處理過(guò)程來(lái)實(shí)現(xiàn)操作。操作的參數(shù)即是事件的參數(shù)。調(diào)用結(jié)束時(shí),被調(diào)用者將返回結(jié)果給調(diào)用者,調(diào)用者可以繼續(xù)執(zhí)行。

調(diào)用事件
圖14 借閱圖書(shū)狀態(tài)中如有未交清罰款進(jìn)入到繳納罰款狀態(tài),繳納罰款完畢后返回繳清標(biāo)志,借閱圖書(shū)狀態(tài)繼續(xù)保持

2.4 動(dòng)作

動(dòng)作通常是一個(gè)簡(jiǎn)短的計(jì)算處理過(guò)程,如賦值操作或算術(shù)運(yùn)算。動(dòng)作也可以是一個(gè)動(dòng)作序列,包括給另外一個(gè)對(duì)象發(fā)送消息、調(diào)用一個(gè)操作、設(shè)置返回值、創(chuàng)建或銷(xiāo)毀對(duì)象。

動(dòng)作具有原子性,所以動(dòng)作不可被中斷,不能被同時(shí)發(fā)生的其它動(dòng)作所影響或終止。

動(dòng)作運(yùn)行時(shí)間很短,不能再被插入其它事件。

各種動(dòng)作的種類(lèi)及相關(guān)語(yǔ)法可描述如下:

(1)賦值:target:=expression

(2)調(diào)用:opname(arg1,arg2)

(3)創(chuàng)建對(duì)象:new Cname(arg1,arg2)

(4)銷(xiāo)毀對(duì)象:object.destroy()

(5)返回值:return value

(6)向?qū)ο蟀l(fā)送消息:sname(arg1,arg2)

(7)對(duì)象自我終止:terminate

(8)不可中斷動(dòng)作:[用語(yǔ)言說(shuō)明]

3.狀態(tài)圖建模步驟

在狀態(tài)圖建模過(guò)程中可以參考以下步驟:

(1)確定建模的語(yǔ)境

狀態(tài)機(jī)可以用于對(duì)類(lèi)進(jìn)行建模,也可以為一個(gè)用例進(jìn)行建?;蛘邽橐粋€(gè)子系統(tǒng),甚至整個(gè)系統(tǒng)建模。我們可以遵循從小到大的原則進(jìn)行建模,從類(lèi)的狀態(tài)到用例,再到子系統(tǒng)的過(guò)程。當(dāng)然,并不是每個(gè)類(lèi)都需要建立狀態(tài)機(jī)。

(2)識(shí)別狀態(tài)

確定好建模的語(yǔ)境后,識(shí)別其可能的狀態(tài),識(shí)別狀態(tài)可以按照從粗到細(xì)的方法去識(shí)別。并確定出必要的狀態(tài)。

(3)確定狀態(tài)的進(jìn)入動(dòng)作和退出動(dòng)作

對(duì)每個(gè)狀態(tài)確定其是否需要進(jìn)入動(dòng)作和退出動(dòng)作。

(4)確定狀態(tài)中的其它動(dòng)作

確定建模對(duì)象在該狀態(tài)下是否有其他需要做的事情以及警戒條件等。

(5)確定狀態(tài)之間的轉(zhuǎn)移

識(shí)別出各個(gè)狀態(tài)之間轉(zhuǎn)移的條件或事件,以及警戒條件等。

(6)檢查所繪制的狀態(tài)機(jī)是否與實(shí)際相符

(7)進(jìn)行必要的優(yōu)化

優(yōu)化包括圖形的布局,圖形的形式,以及狀態(tài)是否有冗余等。

4.使用Rose創(chuàng)建狀態(tài)圖

4.1 新建狀態(tài)圖

在Rose中,可以為一個(gè)類(lèi)、一個(gè)用例或一個(gè)參與者建立狀態(tài)圖,也可以為一個(gè)子系統(tǒng)或整個(gè)系統(tǒng)建立狀態(tài)圖。

在Rose中,狀態(tài)圖可以創(chuàng)建在用例視圖或邏輯視圖里。

如果為某一個(gè)對(duì)象,如類(lèi)、用例或參與者,可以直接在左側(cè)對(duì)象瀏覽器中的該對(duì)象上右擊,然后選擇“New”(新建)->"Statechart Diagram"(狀態(tài)圖)。

新建狀態(tài)圖
圖15 為一個(gè)對(duì)象建立狀態(tài)圖

若不指定對(duì)象,也可以在邏輯視圖或用例視圖上右擊選擇“New”->“Statechart Diagram”。

新建狀態(tài)圖02
圖16 在邏輯視圖上新建狀態(tài)圖

新建完?duì)顟B(tài)圖后,可以直接給其重新命名?;蛘咄ㄟ^(guò)右擊新建的狀態(tài)圖,然后選擇“rename”,如下圖所示:


圖17 為狀態(tài)圖重命名

4.2 狀態(tài)圖的工具箱

通過(guò)在左側(cè)對(duì)象瀏覽器中,雙擊新建的狀態(tài)圖可以開(kāi)始工作了。

同時(shí),在中間顯示出用于狀態(tài)圖的工具箱,默認(rèn)的工具箱及其含義如下:

狀態(tài)圖工具箱
圖18 狀態(tài)圖工具箱

用戶(hù)也可以在工具箱上右擊后選擇“Customize...”來(lái)添加其它的工具,如下圖所示:

定制狀態(tài)圖的工具箱
圖19 自定義工具箱

用戶(hù)可以在左側(cè)選中一個(gè)工具,然后點(diǎn)擊“添加(A)->”,將其添加到工具欄中,也可以把不需要的工具在右側(cè)選中之后點(diǎn)擊“<-刪除(R)”將其刪除掉。

在左側(cè)待選工具中,“—”是用于創(chuàng)建一個(gè)水平的同步條,“|”用于創(chuàng)建一個(gè)垂直的同步條,“◇”用于創(chuàng)建一個(gè)判定。

定制好自己的工具箱后,可以點(diǎn)擊“關(guān)閉”按鈕將其關(guān)閉。

4.3 創(chuàng)建狀態(tài)

(1)創(chuàng)建

用戶(hù)在工具箱中點(diǎn)擊狀態(tài)工具,然后在右側(cè)工作區(qū)中點(diǎn)擊一下,就會(huì)創(chuàng)建一個(gè)狀態(tài)。

(2)修改名稱(chēng)

方式一:創(chuàng)建完?duì)顟B(tài),其默認(rèn)名稱(chēng)會(huì)默認(rèn)被選中,這時(shí),用戶(hù)可以直接修改其名稱(chēng);

方式二:在創(chuàng)建完以后要修改其名稱(chēng),可以先選中這個(gè)狀態(tài),然后再次點(diǎn)擊一下,也可以修改其名稱(chēng);

方式三:在狀態(tài)上雙擊,彈出如下對(duì)話(huà)框:

狀態(tài)通用選項(xiàng)卡
圖20 狀態(tài)圖規(guī)范說(shuō)明對(duì)話(huà)框

在其“General”(通用)選項(xiàng)卡上的Name(名稱(chēng))項(xiàng)中修改其名稱(chēng);

方式四:右擊該狀態(tài),然后選擇“Open Specification...”,也會(huì)彈出上圖所示的對(duì)話(huà)框。右擊狀態(tài)選擇的情形如下圖所示:

Rose中右擊一個(gè)狀態(tài)
圖21 右擊狀態(tài)圖選擇“打開(kāi)規(guī)范說(shuō)明...”

(3)刪除一個(gè)狀態(tài)

如果想徹底刪除一個(gè)狀態(tài),可以選中狀態(tài)后,按下“Ctrl + D”,這樣就把這個(gè)狀態(tài)徹底從模型庫(kù)中刪除了。

也可以在狀態(tài)上右擊,然后選擇“Edit”(編輯),再選擇“Delete from Model”,也可以把這個(gè)狀態(tài)從模型庫(kù)中徹底刪除。

用戶(hù)還可以在選中狀態(tài)后,通過(guò)菜單中的“Edit”菜單下的“Delete from Model”從模型庫(kù)中刪除該狀態(tài)。

Rose中右擊刪除一個(gè)狀態(tài)
圖22 右擊選擇刪除狀態(tài)

如果僅是從當(dāng)前圖中刪除狀態(tài),而非從模型庫(kù)中徹底刪除,用戶(hù)可以在選中狀態(tài)后,按下鍵盤(pán)上的“Del”(刪除鍵)進(jìn)行刪除,也可以在狀態(tài)上右擊,然后選擇“Edit”->"Delete",如上面的圖中的Delete,也可以選擇菜單中的“Edit”->“Delete”來(lái)刪除一個(gè)狀態(tài)。

(4)為狀態(tài)添加動(dòng)作

用戶(hù)可以雙擊一個(gè)狀態(tài)或右擊狀態(tài)選擇“Open Specification”打開(kāi)狀態(tài)規(guī)格說(shuō)明對(duì)話(huà)框。打開(kāi)的狀態(tài)規(guī)范說(shuō)明對(duì)話(huà)框如圖20所示。

在“General”選項(xiàng)卡中可以設(shè)置狀態(tài)的名稱(chēng)、構(gòu)造型、說(shuō)明文檔、是否激活歷史狀態(tài)(淺層)或深層歷史狀態(tài)。

在第2個(gè)選項(xiàng)卡“Actions”中可以添加狀態(tài)的動(dòng)作,如下圖:

Rose中Actions選項(xiàng)卡
圖23 Actions選項(xiàng)卡

在空白處右擊,選擇“Insert”,可以為其添加一個(gè)動(dòng)作。

Rose中為狀態(tài)添加動(dòng)作
圖24 為狀態(tài)添加動(dòng)作

添加后的動(dòng)作如下圖所示:

Rose中添加動(dòng)作后的效果
圖25 添加動(dòng)作后的效果

我們可以在動(dòng)作所在的行上雙擊或右擊后選擇“Specification...”,其會(huì)彈出如下圖所示的對(duì)話(huà)框:

Rose中關(guān)于動(dòng)作的規(guī)格說(shuō)明
圖26 動(dòng)作的規(guī)格說(shuō)明

在該對(duì)話(huà)框中的“When”對(duì)應(yīng)的下拉列表中可以設(shè)置動(dòng)作的類(lèi)型,其中“On Entry”代表進(jìn)入動(dòng)作,“On Exit”代表退出動(dòng)作,“Do”代表內(nèi)部執(zhí)行的活動(dòng),“On Event”代表內(nèi)部事件轉(zhuǎn)移。Type用于指定動(dòng)作的類(lèi)型是一個(gè)普通動(dòng)作(Action)還是發(fā)送一個(gè)事件(Send Event)。

當(dāng)“When”中選擇的是“On Event”時(shí),在“When”下邊的“On Event”分組框中可以設(shè)置事件的名稱(chēng)、參數(shù)和條件。

下圖是On Event的一個(gè)設(shè)置情景:

Rose中OnEvent的設(shè)置
圖27 動(dòng)作規(guī)格說(shuō)明的例子

下圖是對(duì)“已借出”狀態(tài)設(shè)置的相關(guān)動(dòng)作。

Rose中已借閱狀態(tài)的設(shè)置情況
圖28 設(shè)置了動(dòng)作的狀態(tài)規(guī)格說(shuō)明

4.4 添加轉(zhuǎn)移

在工具相中選擇“狀態(tài)轉(zhuǎn)移”工具,鼠標(biāo)會(huì)變?yōu)橐粋€(gè)向上的空心箭頭的形狀,這時(shí),在源狀態(tài)上按下鼠標(biāo)不放,滑動(dòng)到目的狀態(tài)上后松開(kāi)鼠標(biāo)即可。

下圖給出了鼠標(biāo)到達(dá)目的狀態(tài)松開(kāi)之前的一個(gè)情景。

Rose中添加狀態(tài)轉(zhuǎn)移的操作
圖29 添加狀態(tài)的轉(zhuǎn)移

松開(kāi)鼠標(biāo)之后的效果如下圖所示:

圖片Rose中添加狀態(tài)轉(zhuǎn)移后的效果
圖30 添加了狀態(tài)轉(zhuǎn)移后的樣子

設(shè)置轉(zhuǎn)移的相關(guān)內(nèi)容

方式一:選中轉(zhuǎn)移后,右擊后選擇“Open Specification...”,如下圖所示:

Rose中轉(zhuǎn)移的設(shè)置
圖31 右鍵打開(kāi)轉(zhuǎn)移的規(guī)格說(shuō)明

方式二:雙擊轉(zhuǎn)移。

兩種方式都會(huì)打開(kāi)下圖所示的狀態(tài)轉(zhuǎn)移規(guī)格說(shuō)明對(duì)話(huà)框:

Rose狀態(tài)轉(zhuǎn)移設(shè)置-通用選項(xiàng)卡
圖32 轉(zhuǎn)移的規(guī)格說(shuō)明——General

在上面圖中“General”選項(xiàng)卡的Event行中添加觸發(fā)轉(zhuǎn)移的事件,在Arguments行中添加事件的參數(shù)。

在“Detail”選項(xiàng)卡中可以對(duì)觸發(fā)事件進(jìn)行詳細(xì)的設(shè)置,如下圖:

Rose中設(shè)置轉(zhuǎn)移-Detail
圖33 轉(zhuǎn)移個(gè)規(guī)格說(shuō)明——Detail

設(shè)置的內(nèi)容包括“Guard Condition(警戒條件)”、“Action(動(dòng)作)”以及發(fā)送的事件、發(fā)送事件的參數(shù)和發(fā)送的目標(biāo)對(duì)象。

若在General和Detail設(shè)置的內(nèi)容如圖34和圖35中的樣子,則最后在源狀態(tài)和目的狀態(tài)中呈現(xiàn)的樣子如圖36所示:

Rose中設(shè)置轉(zhuǎn)移的例子-通用選項(xiàng)卡
圖34 轉(zhuǎn)移規(guī)格說(shuō)明例子——General設(shè)置

Rose中設(shè)置轉(zhuǎn)移的例子-Detail選項(xiàng)卡
圖35 轉(zhuǎn)移的規(guī)格說(shuō)明——Detail設(shè)置


圖36 狀態(tài)轉(zhuǎn)移設(shè)置的最終樣子

4.5 子狀態(tài)的創(chuàng)建

在添加了主狀態(tài)之后,可以在其主狀態(tài)中,添加子狀態(tài),方法是在工具箱中選擇狀態(tài)后,直接在主狀態(tài)上點(diǎn)擊即可,則在主狀態(tài)中會(huì)添加一個(gè)子狀態(tài)。

下圖顯示了當(dāng)選擇狀態(tài)工具后,鼠標(biāo)滑到主狀態(tài)上時(shí)的情形:


圖37 添加子狀態(tài)

下圖顯示了添加完后的情形:

Rose中添加子狀態(tài)的效果
圖38 子狀態(tài)效果

給子狀態(tài)添加轉(zhuǎn)移等方法與上面有關(guān)內(nèi)容相同。

4.6 如何設(shè)置歷史狀態(tài)

打開(kāi)狀態(tài)的規(guī)格說(shuō)明對(duì)話(huà)框(雙擊狀態(tài)或右擊選擇“Open Specification...”),在“General”選項(xiàng)卡中把下面的“State/activity history”勾選上,則會(huì)在狀態(tài)的左下角顯示一個(gè)帶圈的H,如果想激活狀態(tài)的深層歷史狀態(tài),就把“Sub state/activity history”也勾選上,則原來(lái)H字母的右上角出現(xiàn)一個(gè)“*”號(hào)。

設(shè)置歷史狀態(tài)的情形如下:

Rose中歷史狀態(tài)的設(shè)置
圖39 設(shè)置歷史狀態(tài)

狀態(tài)設(shè)置后的效果如下圖所示:

Rose中歷史狀態(tài)效果
圖40 歷史狀態(tài)

4.7 如何添加同步條

用戶(hù)可以使用本文中4.2中的方法,把水平同步條以及垂直同步條添加到工具箱中,在需要的時(shí)候選擇它后并在繪圖區(qū)點(diǎn)擊一下,即可以添加一個(gè)同步條。

用戶(hù)也可以通過(guò)菜單欄中的“Tools”->“Create”中的“Horizontal Synchronization Bar”及“Vertical Synchronization Bar”創(chuàng)建水平同步條或垂直的同步條。如下圖所示的菜單:

Rose中為狀態(tài)圖添加同步條
圖41 使用菜單添加同步條

4.8 關(guān)于初始狀態(tài)和結(jié)束狀態(tài)

若要?jiǎng)?chuàng)建初始狀態(tài),用戶(hù)可以直接在工具箱中選擇黑色的實(shí)心圓,在繪圖區(qū)點(diǎn)擊一下就可以創(chuàng)建一個(gè)初始狀態(tài)。

注意:一個(gè)狀態(tài)圖中只允許有一個(gè)初始狀態(tài),如果在一個(gè)繪圖區(qū)中要使用多次初始狀態(tài),用戶(hù)可以從左側(cè)瀏覽器中把它拖拽到繪圖區(qū) 中來(lái)。

創(chuàng)建結(jié)束狀態(tài)的方法與創(chuàng)建初始狀態(tài)的方法相同。

在一個(gè)狀態(tài)圖中,可以有多個(gè)結(jié)束狀態(tài)。

以上帶大家學(xué)習(xí)了UML中的狀態(tài)機(jī)圖以及使用Rose繪制狀態(tài)圖的方法。

如有問(wèn)題,請(qǐng)留言。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
wwwxxxx在线观看| 欧美日韩精品免费观看视一区二区| 人人九九精品视频| 一本色道久久综合狠狠躁篇的优点| 国内自拍视频网| 99精品视频在线观看播放| 亚洲神马久久| 91丝袜美腿美女视频网站| 一区二区影视| 欧美日韩一区二区视频在线观看| 亚洲综合999| 中文字幕激情小说| 久久精品久久精品国产大片| 91精品国产91久久久久游泳池| 欧美乱妇23p| 中文字幕一区2区3区| 一本一道久久a久久精品蜜桃| 97福利网站在线观看视频| 亚洲欧洲黄色网| 中文字幕不卡的av| 欧美美女bb生活片| 东京热无码av男人的天堂| 欧美电影免费观看网站| 欧美视频福利| 在线观看不卡一区| 久久久久久久久久久久久久久久av| 日韩高清不卡一区二区三区| 欧美成va人片在线观看| 中文在线观看免费| 亚洲成人中文字幕| 一级片在线免费播放| 男女猛烈激情xx00免费视频| 欧美日韩中国免费专区在线看| 91麻豆精品国产91久久久更新时间| 国产精品进线69影院| 亚洲欧洲精品一区二区精品久久久| 精品国产伦理网| xfav资源| 亚洲品质自拍视频| 麻豆视频入口| 精品精品国产高清a毛片牛牛| 亚洲激情视频在线| 午夜激情影院在线观看| 无码精品在线观看| 国产欧美日本在线| 青青草在线免费观看| 日韩视频免费在线观看| 免费看ww视频网站入口| 最新中文在线视频| bl在线肉h视频大尺度| 国产成人精品三级高清久久91| 日韩欧美激情视频| 毛片免费在线| 久久亚洲不卡| 国产毛片视频网站| 四虎成人免费观看在线网址| 精品污污网站免费看| 丝袜 亚洲 另类 欧美 重口| 五月天电影免费在线观看一区| 欧美最猛性xxxxx(亚洲精品)| 三级网站视频在在线播放| 色噜噜狠狠狠综合曰曰曰88av| av国产在线观看| 国产精品无码专区在线观看| 欧美激情精品久久久久久免费| 欧美极品少妇xxxxⅹ高跟鞋| 中文字幕欧美精品日韩中文字幕| 欧美日一区二区三区在线观看国产免| 亚洲国产一区二区三区在线播| 91午夜伦伦电影理论片| 亚洲伦理在线精品| 久久精品97| a天堂资源在线观看| 午夜天堂在线视频| 美女视频黄频大全不卡视频在线播放| 高潮毛片无遮挡| 成年人黄视频网站| 屁屁影院ccyy国产第一页| 国产精品亚洲а∨天堂免在线| 精品电影在线观看| 男女爱爱福利视频| 一本到三区不卡视频| 丰满人妻老熟妇伦人精品| av在线免费网站| 亚洲激情中文在线| 欧美久久一区二区三区| 麻豆一区二区麻豆免费观看| 国产精品视频在线播放| 国产中文字幕在线视频| 成人毛片高清视频观看| 一本大道熟女人妻中文字幕在线| 欧美二区在线看| 成人在线视频成人| 欧美日韩亚洲一区二区三区在线观看| 国产在线日本| 一区二区三区在线视频免费| 毛片视频免费观看| 99免费视频| 人妻少妇一区二区| 欧美人妖视频| 在线视频中文亚洲| www午夜视频| 国产成人精品优优av| 日韩一区二区电影| 风间由美中文字幕在线看视频国产欧美| 亚洲精品视频自拍| aaa一级黄色片| 九色porny丨首页入口在线| 国产一区二区三区四区二区| 99色精品视频| 久久国产一二区| 亚洲国产精品www| www.一区二区三区| 亚洲1区在线观看| 精品免费二区三区三区高中清不卡| 特级西西444www大精品视频| 国产偷自视频区视频一区二区| 日本一卡二卡在线| 国产精品mv在线观看| 国产成人调教视频在线观看| 国产一级影片| 好了av在线| 欧美三级电影一区二区三区| 欧美成人午夜影院| 夜夜狂射影院| 永久免费观看片现看| 91丨porny丨中文| 青青视频在线播放| 青青草原国产免费| 一区二区三区不卡在线| 久久99热国产| 色8久久久久| 性高潮久久久久久久| 亚洲国产精品久| 日本jizzcom| 国产精品久久久久久久久免费看| 国产精品久久久久久久免费观看| 国产乱子伦一区二区三区国色天香| 无套白嫩进入乌克兰美女| 久久只有精品| 国产一区二区三区在线观看视频| 欧美国产日韩在线播放| 综合电影一区二区三区| 91插插视频| 婷婷激情在线| aaaaaa毛片| 免费观看黄色网| 偷窥国产亚洲免费视频| 国产精品国产亚洲精品| 久久一区二区中文字幕| 韩国中文字幕hd久久精品| 91精品麻豆日日躁夜夜躁| 高潮白浆女日韩av免费看| 欧美系列一区二区| 五月激情丁香一区二区三区| 国产模特av私拍大尺度| 神马午夜久久| 好吊色一区二区三区| 欧美亚洲第一页| 素人一区二区三区| 亚洲www永久成人夜色| 亚洲第一精品久久忘忧草社区| 午夜欧美一区二区三区免费观看| 日韩美女久久久| 456成人影院在线观看| 中文在线天堂库| 亚洲精品亚洲人成人网在线播放| 日韩精品成人| 91精品一区二区三区四区| 欧美日韩另类在线| 日韩一区国产在线观看| 日本韩国欧美中文字幕| 日韩黄色一级大片| 噜噜噜在线观看播放视频| 高清不卡在线观看av| 亚洲福利二区| 亚洲国产精品自拍| 欧美日韩成人在线一区| 久久人体做爰大胆| 91香蕉视频mp4| 国产精品一区二区三区在线免费观看| 国产小视频在线播放| 欧美巨大丰满猛性社交| 尤物精品国产第一福利三区| 久久久欧美一区二区| 日本又骚又刺激的视频在线观看| 国产精品久久久久久久久久久久| 色视频www在线播放国产成人| 韩国无码av片在线观看网站| 日韩av无码中文字幕| 88xx成人永久免费观看| 国产精品视频1区| 99久久久久成人国产免费| 国产高清一区视频| 91社区在线| 9久久9毛片又大又硬又粗| 色综合天天综合网国产成人网| 日本不卡网站| 日韩一区和二区| asian性开放少妇pics| 麻豆精品一区| 九九视频精品免费| 欧美黄色三级网站| 丰满少妇在线观看资源站| 无码小电影在线观看网站免费| 日韩中文视频| 色乱码一区二区三区在线| 亚洲国产导航| 日韩亚洲欧美成人| 无码人妻精品中文字幕| www.久久伊人| 91精品国产乱码久久久久久久| 亚洲福利精品在线| 97秋霞电影网| 久草热久草热线频97精品| 韩日成人在线| 精品一区二区国产| 日韩av在线第一页| 中文字幕第一页久久| 国产精品久久久久无码av| 日韩免费视频网站| 国产97免费视频| www.国产精品一区| 中文字幕一区av| 久久亚洲欧美国产精品乐播| 黄色短视频在线观看| 国产麻豆综合视频在线观看| 黄色网址在线视频| 亚洲在线观看免费视频| 免费在线国产精品| 国产精品久久久久精| 成人免费一级视频| 午夜看片在线免费| 影音先锋男人资源在线| 亚洲熟妇av一区二区三区| 国产精品视频精品视频| 国产亚洲精品午夜高清影院| 开心激情五月婷婷| 91观看网站| 一个人看的www视频免费在线观看| 久久久久久久久久国产| 成人免费毛片app| 中文字幕精品在线观看| 精彩国产在线| 最新中文在线视频| 一本大道av一区二区在线播放| 日本网站在线免费观看视频| 欧美特黄a级高清免费大片a级| 国产精品久久久久久一区二区| 国产高清视频一区二区| 欧美在线免费观看亚洲| 亚洲国产成人在线观看| 亚洲欧美在线观看| 午夜成人亚洲理伦片在线观看| 欧美日韩精品一区二区三区蜜桃| 免费日韩av| 91精品免费在线观看| 欧洲福利电影| www.51av欧美视频| 日韩精品视频久久| 久久亚洲高清| 在线观看视频一区二区三区| 国产欧美日韩不卡| 99久久综合精品| avlululu| 麻豆网在线观看| 中文在线手机av| 日本xxx免费| 三级在线播放| 亚洲少妇中文字幕| 国产又粗又猛又爽又黄的视频小说| 成年人一级黄色片| www.成人在线.com| 麻豆国产精品一区二区三区| 理论片影音先锋| 欧美在线一区二区三区四| 国产伊人精品| 日韩精品极品在线观看| 国产精品一区在线观看你懂的| 丰满少妇xbxb毛片日本| wwwwww日本| 国产一区二区成人| 男人的天堂官网| 国产精品久久一级| 日韩欧美看国产| 久久久久久蜜桃一区二区| 国产毛片毛片毛片毛片毛片| 亚洲乱码日产精品bd在线观看| 日韩在线一区视频| 羞羞漫画网18久久app| 国产91色在线|| 国产精品久久久久久妇女| 青青草精品视频在线观看| 97久久伊人激情网| 全部毛片永久免费看| 国产人成精品| 亚洲第一级黄色片| 51亚洲精品| 国产精品7777777| 无套内谢大学处破女www小说| 在线免费av观看| 国产精品一色哟哟哟| 久久人人爽人人爽人人片亚洲| 日本免费一级视频| 国产真实伦在线观看| 日韩大片在线观看视频| 亚洲淫性视频| 成人91视频| 国产91色在线|免| 国产精品一区二区你懂的| 91国在线精品国内播放| 色呦呦在线免费观看| 欧美激情性做爰免费视频| 黄色av网址在线免费观看| 国产aⅴ综合色| 欧美成人乱码一二三四区免费| 天天操夜夜操天天射| 老司机午夜精品视频在线观看| www.日本三级| 91香蕉视频免费看| 欧美黑人xxxⅹ高潮交| www.久久撸.com| 国产91色在线播放| 久久久精品少妇| 日本精品va在线观看| 久久精品一区二区三区中文字幕| 国内精品女同女同一区二区三区| 日韩av在线直播|