![UML建模 狀態(tài)圖_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/4/fb46ce99-8fb0-4564-8f32-d64810300ead/fb46ce99-8fb0-4564-8f32-d64810300ead1.gif)
![UML建模 狀態(tài)圖_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/4/fb46ce99-8fb0-4564-8f32-d64810300ead/fb46ce99-8fb0-4564-8f32-d64810300ead2.gif)
![UML建模 狀態(tài)圖_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/4/fb46ce99-8fb0-4564-8f32-d64810300ead/fb46ce99-8fb0-4564-8f32-d64810300ead3.gif)
![UML建模 狀態(tài)圖_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/4/fb46ce99-8fb0-4564-8f32-d64810300ead/fb46ce99-8fb0-4564-8f32-d64810300ead4.gif)
![UML建模 狀態(tài)圖_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/4/fb46ce99-8fb0-4564-8f32-d64810300ead/fb46ce99-8fb0-4564-8f32-d64810300ead5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1第第9章章 狀態(tài)機(jī)圖狀態(tài)機(jī)圖 狀態(tài)機(jī)圖是系統(tǒng)分析的一種常用工具,它描述了一個(gè)對(duì)象在其生命期內(nèi)所經(jīng)歷的各種狀態(tài),以及狀態(tài)之間的轉(zhuǎn)移,發(fā)生轉(zhuǎn)移的原因,條件和轉(zhuǎn)移中所執(zhí)行的活動(dòng)。所有的類,只要它具有狀態(tài)和復(fù)雜的行為,都應(yīng)該有一個(gè)狀態(tài)機(jī)圖。狀態(tài)機(jī)圖用于指定對(duì)象的行為以及根據(jù)不同的當(dāng)前狀態(tài)行為之間差別。同時(shí),它還能說明事件是如何改變一個(gè)類對(duì)象的狀態(tài)。通過狀態(tài)機(jī)圖可以了解一個(gè)對(duì)象所能到達(dá)的所有狀態(tài)以及對(duì)象收到的事件(收到的消息、超時(shí)、錯(cuò)誤和條件滿足等)對(duì)對(duì)象狀態(tài)的影響等。2本章學(xué)習(xí)要點(diǎn): 了解狀態(tài)機(jī) 理解對(duì)象和狀態(tài) 掌握狀態(tài)機(jī)圖中基本標(biāo)記符 掌握動(dòng)作 掌握事件 運(yùn)用順序子狀態(tài)和并發(fā)子狀態(tài) 理解子狀態(tài)機(jī)引
2、用狀態(tài) 掌握同步狀態(tài)和歷史狀態(tài)39.1 定義狀態(tài)機(jī)圖定義狀態(tài)機(jī)圖 狀態(tài)機(jī)圖中包含了諸多元素,在學(xué)習(xí)狀態(tài)機(jī)圖之前先來學(xué)習(xí)一下有關(guān)狀態(tài)機(jī)圖的相關(guān)知識(shí)。包括了狀態(tài)機(jī)的概念原理和狀態(tài)機(jī)圖中重要要領(lǐng)的說明。 狀態(tài)機(jī)圖可以用于對(duì)象和一些類來說明當(dāng)調(diào)用對(duì)象的行為時(shí)對(duì)象的狀態(tài)如何改變,但是狀態(tài)機(jī)圖還可以用于許多其他情況。例如,狀態(tài)機(jī)圖可以用來說明基于用戶輸入的屏幕狀態(tài)的改變,也可以用來說明復(fù)雜的用例狀態(tài)進(jìn)展情況。 49.1.1 狀態(tài)機(jī)狀態(tài)機(jī) UML中用狀態(tài)機(jī)對(duì)軟件系統(tǒng)的動(dòng)態(tài)特征建模,通常一個(gè)狀態(tài)機(jī)依附于一個(gè)類,并且描述一個(gè)類的實(shí)例。狀態(tài)機(jī)包含了一個(gè)類的對(duì)象在其生命周期間所有狀態(tài)的序列以及對(duì)象對(duì)接收到的事件所產(chǎn)
3、生的反應(yīng)。 利用狀態(tài)機(jī)可以精確地描述對(duì)象的行為:從對(duì)象的初始狀態(tài)起,開始響應(yīng)事件并執(zhí)行某些動(dòng)作,這些事件引起狀態(tài)的轉(zhuǎn)換;對(duì)象在新的狀態(tài)下又開始響應(yīng)狀態(tài)和執(zhí)行動(dòng)作,如此連續(xù)直到終止?fàn)顟B(tài)。9.1.2 對(duì)象、狀態(tài)和事件對(duì)象、狀態(tài)和事件 在狀態(tài)機(jī)圖中,對(duì)象和狀態(tài)是一對(duì)不同分割的概念。狀態(tài)機(jī)圖是描述單個(gè)對(duì)象,以及對(duì)象的行為如何改變其狀態(tài)。對(duì)象是某個(gè)狀態(tài)下的對(duì)象,而狀態(tài)則是描述當(dāng)前對(duì)象。所有的對(duì)象均有狀態(tài),狀態(tài)的改變由對(duì)象的屬性值指向其他對(duì)象的鏈來決定。下面一些例子形像地說明了對(duì)象和狀態(tài)。 (1)支票(對(duì)象)已付(狀態(tài))。 (2)汽車(對(duì)象)已啟動(dòng)(狀態(tài))。 (3)小王(對(duì)象)睡著了(狀態(tài))。 (4)小紅
4、(對(duì)象)未婚(狀態(tài))。5 當(dāng)某些事件發(fā)生時(shí)對(duì)象的狀態(tài)就會(huì)改變,此時(shí)稱改變對(duì)象狀態(tài)的事情為“事件事件”。事件體現(xiàn)了狀態(tài)改變的這種動(dòng)態(tài)性,該動(dòng)態(tài)性表現(xiàn)在兩個(gè)方面:交互和內(nèi)部狀態(tài)改變。 交互描述對(duì)象的外部行為以及對(duì)象如何與其他對(duì)象交換信息;而內(nèi)部狀態(tài)改變描述對(duì)象是如何改變其狀態(tài)的,例如,對(duì)象內(nèi)部屬性值。UnmarriedMarriedMarry9.1.3 狀態(tài)機(jī)圖狀態(tài)機(jī)圖 狀態(tài)機(jī)圖實(shí)質(zhì)上是一種由狀態(tài)、轉(zhuǎn)移、事件和動(dòng)作組成的狀態(tài)機(jī),用來建模對(duì)象是如何改變其狀態(tài)的,并且定義了狀態(tài)機(jī)的表示符號(hào)。在對(duì)象生命周期中狀態(tài)機(jī)被用來捕捉由外部事件引起的變化,事件對(duì)對(duì)象發(fā)出命令,該命令會(huì)導(dǎo)致對(duì)象發(fā)生轉(zhuǎn)移,這又反過來影
5、響對(duì)象行為。狀態(tài)機(jī)圖表示了對(duì)象在其生命周期各個(gè)時(shí)期的狀態(tài),以及引起變化的事件。 狀態(tài)機(jī)圖描述從狀態(tài)到狀態(tài)的控制流,學(xué)用于系統(tǒng)的動(dòng)態(tài)特性建模。 8 在UML中系統(tǒng)動(dòng)態(tài)建模時(shí),除了狀態(tài)機(jī)圖,建模人員還可以用序列圖、協(xié)作圖和活動(dòng)圖對(duì)系統(tǒng)的動(dòng)態(tài)行為進(jìn)行建模,但四種圖存在著以下重要差別: 序列圖和協(xié)作圖用于對(duì)共同完成某些對(duì)序列圖和協(xié)作圖用于對(duì)共同完成某些對(duì)象群體進(jìn)行建模。象群體進(jìn)行建模。 狀態(tài)機(jī)圖和活動(dòng)圖用于對(duì)單個(gè)對(duì)象(可狀態(tài)機(jī)圖和活動(dòng)圖用于對(duì)單個(gè)對(duì)象(可以是類、用例或整個(gè)系統(tǒng)的實(shí)例)的生以是類、用例或整個(gè)系統(tǒng)的實(shí)例)的生命周期建模。命周期建模。9.2 認(rèn)識(shí)狀態(tài)機(jī)圖中的標(biāo)記符認(rèn)識(shí)狀態(tài)機(jī)圖中的標(biāo)記符 狀態(tài)
6、機(jī)圖中某些標(biāo)記符與活動(dòng)圖的標(biāo)記符非常相似,有時(shí)候會(huì)讓人混淆。其實(shí)活動(dòng)圖是用來建模不同區(qū)域的工作如何彼此交互的,而狀態(tài)機(jī)圖用來表示單個(gè)對(duì)象,以及對(duì)象的行為如何改變其狀態(tài)。狀態(tài)機(jī)圖由狀態(tài)、轉(zhuǎn)移和事件等組成。109.2.1 狀態(tài)狀態(tài) 狀態(tài)指對(duì)象的生命周期中滿足某些條件、執(zhí)行某些活動(dòng)或者等待某些事件時(shí)的一個(gè)條件或情況。狀態(tài)和事件之間的關(guān)系是狀態(tài)機(jī)圖的基礎(chǔ)。狀態(tài)與之前在活動(dòng)圖中講到的相同,同樣使用了圓矩形。中間狀態(tài)的名稱,名稱也可以作為個(gè)標(biāo)記置于狀態(tài)機(jī)圖標(biāo)上面。除了簡(jiǎn)單的狀態(tài),UML還定義了兩種特別的狀態(tài),即初始狀態(tài)和終止?fàn)顟B(tài)。初始狀態(tài)是使用一個(gè)填充的圓圈表示,終止?fàn)顟B(tài)類似在于在初始狀態(tài)外加一個(gè)圓圈,圖
7、演示了狀態(tài)標(biāo)記符。 11Stateentry/ dosth()exit/ dother9.2.2 轉(zhuǎn)移轉(zhuǎn)移 轉(zhuǎn)移用來顯示從一個(gè)狀態(tài)到另一外狀態(tài)的控制流,它描述了對(duì)象在兩種狀態(tài)間的轉(zhuǎn)變。當(dāng)對(duì)象在第一個(gè)狀態(tài)中執(zhí)行一定的動(dòng)作,并在某個(gè)特定事件發(fā)生后并且滿足特定的條件,然后進(jìn)入第二個(gè)狀態(tài)時(shí)。當(dāng)狀態(tài)間發(fā)生這種轉(zhuǎn)移時(shí),稱轉(zhuǎn)移被激活。轉(zhuǎn)移被激活之前對(duì)象處于狀態(tài)稱為源狀態(tài);轉(zhuǎn)移激活之后,稱對(duì)象所在狀態(tài)為目標(biāo)狀態(tài)。131.外部轉(zhuǎn)移PowerOnRunningWorkingFreePowerOff2.轉(zhuǎn)移條件 一個(gè)轉(zhuǎn)移還會(huì)有復(fù)雜的名稱結(jié)束和動(dòng)作列表。 轉(zhuǎn)移名: 事件名 參數(shù)列表 守衛(wèi)條件/動(dòng)作列表 事件:源狀態(tài)的
8、對(duì)象接收觸發(fā)事件后,只要滿足守衛(wèi)條件便可激活相應(yīng)轉(zhuǎn)移。 守衛(wèi)條件:守衛(wèi)條件是用方括號(hào)括起來的表達(dá)式,它放在事件的后面。 動(dòng)作:動(dòng)作可以操作調(diào)用另一個(gè)對(duì)象的創(chuàng)建和撤銷或向另一個(gè)對(duì)象的信號(hào)發(fā)送,它不能被事件中斷。 動(dòng)作是一組可執(zhí)行語句或者計(jì)算處理過程。 動(dòng)作可以包括發(fā)送消息給另一個(gè)對(duì)象、操作調(diào)用、設(shè)置返回值、創(chuàng)建和銷毀對(duì)象等。 動(dòng)作是原子的,不可中斷的,動(dòng)作或動(dòng)作序列的執(zhí)行不會(huì)被同時(shí)發(fā)生的其他動(dòng)作影響或終止。 整個(gè)系統(tǒng)可以在同一時(shí)間執(zhí)行多個(gè)動(dòng)作。LoginGUIIDInputGUIPasswordInputGUIRefuseCheckingdo/ CheckIDAndPasswordRetry /
9、 ClearInfoExitExitSystem / Cancle Invalid / Error Valid / BusinessBeginSubmit3.自轉(zhuǎn)移 建模時(shí)對(duì)象會(huì)收到一個(gè)事件,該事件不會(huì)改變對(duì)象的狀態(tài),卻會(huì)導(dǎo)致狀態(tài)的中斷,這種事件被稱為自轉(zhuǎn)移,它打斷當(dāng)前狀態(tài)下的所有活動(dòng),使對(duì)象退出當(dāng)前狀態(tài),然后又返回該狀態(tài)。Stateevent Reset/ addItemRetry / ChangeInfo()4.內(nèi)部轉(zhuǎn)移 內(nèi)部轉(zhuǎn)移只有源狀態(tài)沒有目標(biāo)狀態(tài),轉(zhuǎn)移激發(fā)的結(jié)果并不改變狀態(tài)本身。如果一個(gè)內(nèi)部轉(zhuǎn)移帶有動(dòng)作,動(dòng)作也要被執(zhí)行,但由于沒有狀態(tài)改變發(fā)生,因此不需要執(zhí)行入口動(dòng)作和出口動(dòng)作。Inf
10、ormationShowingevent Help/ DisplayHelpevent ShowInfo/ Information.show() 內(nèi)部轉(zhuǎn)移和自轉(zhuǎn)移不同,雖然兩者都不改變狀態(tài)本身,但有著本質(zhì)區(qū)別。自轉(zhuǎn)移會(huì)觸發(fā)入口動(dòng)作和出口動(dòng)作,而內(nèi)部轉(zhuǎn)移不會(huì)。9.2.3 決策點(diǎn)決策點(diǎn) 在第4章活動(dòng)圖中講到過決策點(diǎn),在狀態(tài)機(jī)圖中也需要用到?jīng)Q策點(diǎn)。它在建模狀態(tài)機(jī)圖時(shí)提供了方便,因?yàn)樗ㄟ^在中心位置分組轉(zhuǎn)移到各自的方向,從而提高了狀態(tài)機(jī)圖的可視性。決策點(diǎn)標(biāo)記符是一個(gè)空心菱形,圖演示了決策點(diǎn)的使用方法。22MainMenuPersonOptionMenuAreaMenuControlMenu9.2.4
11、同步同步 使用同步條可以顯示并發(fā)轉(zhuǎn)移,并發(fā)轉(zhuǎn)移中可以有多個(gè)源狀態(tài)和目標(biāo)狀態(tài)。并發(fā)轉(zhuǎn)移表示一個(gè)同步將一個(gè)控制劃分為并發(fā)的線程。狀態(tài)機(jī)圖中使用到同步條是為了說明某些狀態(tài)在哪里需要跟上或者等待其他狀態(tài)。狀態(tài)機(jī)圖中同步條是一條黑色的粗線,圖顯示了使用了同步條的狀態(tài)機(jī)圖。249.3 指定狀態(tài)機(jī)圖中動(dòng)作和事件指定狀態(tài)機(jī)圖中動(dòng)作和事件 事件是一個(gè)在時(shí)間和空間上都事件是一個(gè)在時(shí)間和空間上都占據(jù)一定位置有意義事情的規(guī)約,占據(jù)一定位置有意義事情的規(guī)約,它能指示狀態(tài)之間轉(zhuǎn)移的條件。它能指示狀態(tài)之間轉(zhuǎn)移的條件。對(duì)應(yīng)于消息的事件被發(fā)送到對(duì)象,要求對(duì)象做某件事情,這個(gè)事情被稱為動(dòng)作。動(dòng)作改變了對(duì)象屬性的值,導(dǎo)致對(duì)象的狀態(tài)
12、發(fā)生變化。本節(jié)將會(huì)對(duì)狀態(tài)機(jī)圖中動(dòng)作和事件進(jìn)行詳細(xì)講解。259.3.1 事件事件【目前作為了解目前作為了解】 一個(gè)事件的發(fā)生能觸發(fā)狀態(tài)的轉(zhuǎn)移,事件和轉(zhuǎn)移總是相伴出現(xiàn)。事件既可以是內(nèi)部事件又可以是外部事件,可以是同步的,也可以是異步的。內(nèi)部事件是指在系統(tǒng)內(nèi)部對(duì)象之間傳送的事件。例如,異常就是一個(gè)內(nèi)部事件。外部事件是指在系統(tǒng)和它的參與者之間傳送的事件。例如,在指定文本框中輸入內(nèi)容就是一個(gè)外部事件。圖顯示了帶有事件的狀態(tài)機(jī)圖26 在UML中有多種事情可以讓建模人員進(jìn)行建模,它們分別是:調(diào)用事件、信號(hào)事件、變化事件、時(shí)間事件和延遲事件。調(diào)用事件 一個(gè)調(diào)用事件代表一個(gè)操作的調(diào)用,它是同步的。當(dāng)一個(gè)對(duì)象調(diào)用
13、另一個(gè)具有狀態(tài)機(jī)對(duì)象的某個(gè)操作時(shí),控制就從發(fā)送者傳遞到接收者。該事件觸發(fā)轉(zhuǎn)移,完成操作后,接收這轉(zhuǎn)到一個(gè)新的狀態(tài),并將控制返還給發(fā)送者。DelInfoGUIUserDeleteddelManager( username )Stateevent delManage( username )/ 信號(hào)事件 信號(hào)是對(duì)象異步地發(fā)送并由另一個(gè)對(duì)象接收的具有名字的對(duì)象,它和簡(jiǎn)單的類有許多共同之處。例如,信號(hào)可以有實(shí)例,信號(hào)可包含在泛化層次中,它可以有屬性和操作,信號(hào)可作為狀態(tài)機(jī)中一個(gè)狀態(tài)轉(zhuǎn)移的動(dòng)作而被發(fā)送,也可作為交互中的一條消息被發(fā)送,一個(gè)操作的執(zhí)行也可以發(fā)送信號(hào)。事實(shí)上,當(dāng)建模人員為一個(gè)類或一個(gè)接口建模時(shí)
14、,通常需要說明它的操作所發(fā)送的信號(hào)。DelInfoGUIUerDeletedDefinedByMyselfStateevent DefinedByMyself/ 變化事件 變化事件是狀態(tài)中的一個(gè)變化或者某些事件滿足的條件。在UML中變化事件使用關(guān)鍵字when來標(biāo)記,它隱含了對(duì)于控制條件的連續(xù)測(cè)試,相當(dāng)于編程中的循環(huán)。當(dāng)條件從假變?yōu)檎鏁r(shí),事件發(fā)生,建模人員可以使用諸如when:time=08:00的表達(dá)式來標(biāo)記時(shí)間,也可以用如when:number20Stateevent when:KeepDays20/ 時(shí)間事件 時(shí)間事件是經(jīng)過一定的時(shí)間或者到達(dá)某個(gè)絕對(duì)時(shí)間后發(fā)生的事件。在UML中時(shí)間時(shí)間使用
15、關(guān)鍵字after來標(biāo)記,后面跟著計(jì)算一段時(shí)間的表達(dá)式。如:after(10分鐘。如果沒有特別說明,那么上面的表達(dá)式的開始時(shí)間是進(jìn)入當(dāng)前狀態(tài)的時(shí)間。FreshGobadafter:10Days延遲事件 在UML中,建模人員有時(shí)需識(shí)別某些事件,延遲對(duì)它們的響應(yīng)直到以后某個(gè)合適的時(shí)刻才執(zhí)行,在描述這種行為時(shí)可以使用延遲事。延遲事件使用關(guān)鍵字defer來標(biāo)識(shí),其語法形式為:延遲事件/defer。在實(shí)現(xiàn)時(shí),所有的延遲事件被保存在一個(gè)列表中,這些事件在狀態(tài)中的發(fā)生被延遲,直到對(duì)象進(jìn)入了一個(gè)不在需要延遲這些時(shí)間并需使用它們的狀態(tài)時(shí)列表中的事件才會(huì)發(fā)生,并觸發(fā)相應(yīng)的轉(zhuǎn)移。一旦對(duì)象進(jìn)入了一個(gè)不延遲切沒有使用這些
16、事件的狀態(tài),它們就會(huì)從這個(gè)列表中刪除。9.3.2 動(dòng)作動(dòng)作 動(dòng)作可以由對(duì)象(擁有所有狀態(tài)的對(duì)象)的操作和屬性組成,也可以由事件說明中的參數(shù)組成,在一個(gè)狀態(tài)中允許有多個(gè)動(dòng)作。 38 動(dòng)作初始時(shí)可以有以下5中基本狀態(tài)動(dòng)作類型。 entry:標(biāo)記入口動(dòng)作,用來指定進(jìn)入狀態(tài)時(shí)發(fā)生的動(dòng)作。entry/entry/動(dòng)作名動(dòng)作名 exit:標(biāo)記出口動(dòng)作,用來指定狀態(tài)被另一個(gè)狀態(tài)取代時(shí)發(fā)生的動(dòng)作。exit/exit/動(dòng)作名動(dòng)作名 do:標(biāo)記內(nèi)部活動(dòng),用來指定處于某種狀態(tài)時(shí)發(fā)生的活動(dòng)。do/do/活動(dòng)表達(dá)式活動(dòng)表達(dá)式 include: event:用來指定當(dāng)特定事件觸發(fā)時(shí)指定相應(yīng)動(dòng)作的發(fā)生。event-name
17、(parameters)guard-condition/action 事件可以伴有多個(gè)動(dòng)作的發(fā)生。動(dòng)作之間用逗號(hào)分隔。9.4 組成狀態(tài)組成狀態(tài) 在簡(jiǎn)單狀態(tài)之外,還有一種可以包含嵌套子狀態(tài)的狀態(tài),又稱為組成狀態(tài)組成狀態(tài)。在復(fù)雜的應(yīng)用中,當(dāng)狀態(tài)機(jī)圖處于某種特定的狀態(tài)時(shí),狀態(tài)機(jī)圖描述的該對(duì)象行為仍可以用另一個(gè)狀態(tài)機(jī)圖描述,用于描述對(duì)象行為的狀態(tài)機(jī)圖又稱為子狀態(tài)。 子狀態(tài)可以是狀態(tài)機(jī)圖中單獨(dú)的普通狀態(tài),也可以是一個(gè)完整的狀態(tài)機(jī)圖來描述一個(gè)狀態(tài)。組成狀態(tài)中子狀態(tài)可以是順序子狀態(tài),也包含并發(fā)的子狀態(tài)。如果包含順序子狀態(tài)的狀態(tài)是活動(dòng)的,則只有該子狀態(tài)是活動(dòng)的;如果包含并發(fā)子狀態(tài)的狀態(tài)是活動(dòng)的,則與它正交的所
18、有子狀態(tài)都是活動(dòng)的。449.4.1 順序子狀態(tài)順序子狀態(tài) 如果一個(gè)組成狀態(tài)的子狀態(tài)對(duì)應(yīng)的對(duì)象在其生命周期內(nèi)的任何時(shí)刻都只能處于一個(gè)子狀態(tài),也就是說狀態(tài)機(jī)圖中多個(gè)子狀態(tài)是互斥的,不能同時(shí)存在,這種子狀態(tài)被稱為順序子狀態(tài)或叫互斥子狀態(tài)。在順序子狀態(tài)中最多只能有一個(gè)初態(tài)和一個(gè)終態(tài)。 當(dāng)狀態(tài)機(jī)圖通過轉(zhuǎn)移從某種狀態(tài)轉(zhuǎn)入組合狀態(tài)時(shí),該轉(zhuǎn)移的目的可能是組成狀態(tài)本身,也可能是這個(gè)組成狀態(tài)的子狀態(tài)。 459.4.2 并發(fā)子狀態(tài)并發(fā)子狀態(tài) 有時(shí)組成狀態(tài)有兩個(gè)或多個(gè)并發(fā)的子狀態(tài),此時(shí)稱組成狀態(tài)的子狀態(tài)為并發(fā)子狀態(tài)。并發(fā)子狀態(tài)能說明很多事發(fā)生在同一時(shí)刻,為了分離不同的活動(dòng),組成狀態(tài)被分解成區(qū)域,每個(gè)區(qū)域都包含一個(gè)不同
19、的狀態(tài)機(jī)圖,各個(gè)狀態(tài)機(jī)圖在同一時(shí)刻分別運(yùn)行。 如果并發(fā)子狀態(tài)中有一個(gè)子狀態(tài)比其他并發(fā)子狀態(tài)到達(dá)它的終態(tài),那么先到的子狀態(tài)的控制流將在它的終態(tài)等待,直到所有的子狀態(tài)都達(dá)到終態(tài)。 479.4.3 子狀態(tài)機(jī)引用狀態(tài)子狀態(tài)機(jī)引用狀態(tài) 子狀態(tài)機(jī)引用狀態(tài)是表示激活其他地方定義的一個(gè)子狀態(tài)機(jī)的狀態(tài)。子狀態(tài)機(jī)引用狀態(tài)和宏調(diào)用非常相似,因?yàn)樗鼘?shí)際上是一種用來表示將一個(gè)復(fù)雜的規(guī)約嵌入到另一個(gè)規(guī)約的簡(jiǎn)單記號(hào)。 聲明子狀態(tài)機(jī)引用狀態(tài)時(shí),使用關(guān)鍵字include來標(biāo)記,具體標(biāo)記信息如下所示: include 子狀態(tài)機(jī)名499.4.4 同步狀態(tài)同步狀態(tài)同步狀態(tài)是連接兩個(gè)并發(fā)區(qū)域的特殊狀態(tài)。在某些情況下,組合狀態(tài)通常由同個(gè)
20、并發(fā)區(qū)域組成,每個(gè)區(qū)域有自己的順序子狀態(tài)區(qū)域。當(dāng)進(jìn)入一個(gè)組合狀態(tài)時(shí),每個(gè)并發(fā)區(qū)域里在一個(gè)控制線程。其中,區(qū)域之間是獨(dú)立的,如果要求對(duì)并發(fā)區(qū)域之間的控制進(jìn)行同步,此時(shí)可使用同步狀態(tài)。在同步狀態(tài)中使用了同步條,使用轉(zhuǎn)移把一個(gè)區(qū)域里中分叉的輸出連接到同步狀態(tài)的輸入上,同樣再使用轉(zhuǎn)移把同步狀態(tài)的輸出連接到另外一個(gè)區(qū)域中的匯合輸入上。 529.4.5 歷史狀態(tài)歷史狀態(tài) 在UML建模中,轉(zhuǎn)移進(jìn)入組成狀態(tài)并經(jīng)歷了許多狀態(tài),建模人員也許會(huì)在后面的步驟中返回到某個(gè)狀態(tài)。如果返回到一個(gè)簡(jiǎn)單狀態(tài),那么就會(huì)很容易實(shí)現(xiàn);如果返回一個(gè)組成狀態(tài),就沒那么簡(jiǎn)單了,并且再次使用同樣的組成狀態(tài)機(jī),狀態(tài)機(jī)圖會(huì)顯得臃腫。使用歷史狀態(tài)
21、就能解決這種問題,它允許組成狀態(tài)記住從該組成狀態(tài)出發(fā)的轉(zhuǎn)移觸發(fā)之前最后一個(gè)活動(dòng)子狀態(tài)。 UML狀態(tài)機(jī)圖中歷史狀態(tài)分為淺歷史狀態(tài)(簡(jiǎn)略歷史狀態(tài))和深歷史狀態(tài)(詳細(xì)歷史狀態(tài))兩種。 549.5 建造狀態(tài)機(jī)圖模型建造狀態(tài)機(jī)圖模型 本書以一個(gè)圖書管理系統(tǒng)貫穿全書,前面已經(jīng)建模圖書管理系統(tǒng)的用例圖、類圖和活動(dòng)圖,本節(jié)將以前面章節(jié)中所建模圖形為基礎(chǔ),建模圖書管理系統(tǒng)的狀態(tài)機(jī)圖。建模狀態(tài)機(jī)圖可以按照以下五步進(jìn)行。 (1)標(biāo)識(shí)出需要進(jìn)一步建模的實(shí)體。 (2)標(biāo)識(shí)出每個(gè)實(shí)體的開始和結(jié)束狀態(tài)。 (3)確定與每一個(gè)實(shí)體相關(guān)的事件。 (4)從開始狀態(tài)建模完整狀態(tài)機(jī)圖。 (5)如果必要?jiǎng)t指定組成狀態(tài)。569.5.1 分
22、析狀態(tài)機(jī)圖分析狀態(tài)機(jī)圖 第一步就是要確定需要進(jìn)一步建模的實(shí)體,標(biāo)識(shí)需要建模的對(duì)象。狀態(tài)機(jī)圖應(yīng)用于復(fù)雜的實(shí)體,而不必用于具有復(fù)雜行為的實(shí)體。對(duì)于有復(fù)雜行為或操作的實(shí)體,使用活動(dòng)圖會(huì)更加適合。具有清晰、有序狀態(tài)的實(shí)體最適合使用狀態(tài)機(jī)圖進(jìn)一步建模。這里建模一個(gè)Book對(duì)象作為建模圖書館管理系統(tǒng)狀態(tài)機(jī)圖的演練目標(biāo)。579.5.2 完成狀態(tài)機(jī)圖完成狀態(tài)機(jī)圖 利用前面分析的結(jié)果,建模一個(gè)簡(jiǎn)單的狀態(tài)機(jī)圖來描述Book對(duì)象的不同狀態(tài),以及觸發(fā)狀態(tài)改變的事件,如圖所示。58狀態(tài)圖建模技術(shù)建模步驟: 找出適合用模型描述其行為的類。 確定對(duì)象可能存在的狀態(tài)。 確定引起狀態(tài)轉(zhuǎn)換的事件。 確定轉(zhuǎn)換進(jìn)行時(shí)對(duì)象執(zhí)行的相應(yīng)動(dòng)
23、作。 對(duì)建模的結(jié)果進(jìn)行相應(yīng)的精化和細(xì)化。實(shí)例圖書館管理系統(tǒng)的狀態(tài)圖 1 使用Rational Rose繪制狀態(tài)圖的步驟 2 圖書館管理系統(tǒng)的狀態(tài)圖使用Rational Rose繪制狀態(tài)圖的步驟 1. 創(chuàng)建狀態(tài)圖 2. 狀態(tài)圖工具欄按鈕簡(jiǎn)介 3. 加入初始狀態(tài)和終止?fàn)顟B(tài) 4. 增加狀態(tài) 5. 增加轉(zhuǎn)換 6. 增加歷史狀態(tài)圖書館管理系統(tǒng)的狀態(tài)圖 1. 書的狀態(tài)圖 2. 借閱憑證的狀態(tài)圖1. 書的狀態(tài)圖2. 借閱憑證的狀態(tài)圖補(bǔ)充:關(guān)于事件 入口事件 出口事件 動(dòng)作事件 信號(hào)事件 調(diào)用事件 修改事件 時(shí)間事件 延遲事件 入口事件: 入口事件表示一個(gè)入口的動(dòng)作序列,它在進(jìn)入狀態(tài)時(shí)執(zhí)行。 入口事件的動(dòng)作是
24、原子的,并且先于人和內(nèi)部活動(dòng)或轉(zhuǎn)換。 出口事件: 出口事件表示一個(gè)出口的動(dòng)作序列,它在退出狀態(tài)時(shí)執(zhí)行。 出口事件也是原子的,它跟在所有的內(nèi)部活動(dòng)之后,但是先于所有的出口轉(zhuǎn)換。 動(dòng)作事件: 動(dòng)作事件也稱為“do事件”,它表示對(duì)一個(gè)嵌套狀態(tài)機(jī)的調(diào)用。 與動(dòng)作事件相關(guān)的活動(dòng)必定引用嵌套狀態(tài)機(jī),而非引用包含它的對(duì)象的操作。 信號(hào)事件: 信號(hào)的接收是信號(hào)接受對(duì)象的一個(gè)事件。 信號(hào)分為異步單路通信和雙路通信。 在異步單路通信中,發(fā)送者是獨(dú)立的。 在雙路通信模型中,至少在每個(gè)方向上都要有一個(gè)信號(hào)。 在信號(hào)事件中,發(fā)送者和接受者可以是同一個(gè)對(duì)象。 調(diào)用事件: 調(diào)用事件是一個(gè)對(duì)象對(duì)調(diào)用的接收。 調(diào)用事件至少涉及
25、兩個(gè)以上的對(duì)象。 調(diào)用事件既可以為同步調(diào)用,也可以為異步調(diào)用。 修改事件: 修改事件依靠特定屬性值的布爾表達(dá)式所表示的條件的滿足來觸發(fā)狀態(tài)的轉(zhuǎn)換。 修改事件表示了一種具有時(shí)間持續(xù)性的并且可能是涉及全局的計(jì)算過程。 監(jiān)護(hù)條件與修改事件的區(qū)別:監(jiān)護(hù)條件只是在引起轉(zhuǎn)換的觸發(fā)器事件觸發(fā)時(shí)和事件接收者對(duì)事件進(jìn)行處理時(shí)被賦值一次。修改事件則可以被多次賦值直到條件為真,多次賦值滿足條件后轉(zhuǎn)換也會(huì)被激發(fā)。 時(shí)間事件: 時(shí)間事件代表時(shí)間的流逝。 時(shí)間事件既可以被指定為絕對(duì)形式(天數(shù)),也可以被指定為相對(duì)形式(從某一指定事件發(fā)生開始所經(jīng)歷的時(shí)間)。 時(shí)間事件可以描述一個(gè)通知信息,自進(jìn)入狀態(tài)以來某個(gè)時(shí)間期限已到,時(shí)間事件就會(huì)激發(fā)狀態(tài)的轉(zhuǎn)換。 延遲事件: 延遲事件是在本狀態(tài)不處理,要推遲到另外一個(gè)狀態(tài)才處理的事件。補(bǔ)充:關(guān)于轉(zhuǎn)換外部轉(zhuǎn)換 外部轉(zhuǎn)換是一種改變對(duì)象狀態(tài)的轉(zhuǎn)換,是最常見的一種轉(zhuǎn)換。 外部轉(zhuǎn)換用從源狀態(tài)到目標(biāo)狀態(tài)的箭頭表示。 UsedUnusedMaintainingThe train stopThe train go runningSomebody go intoSome
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 丁二烯法合成氯丁橡膠生產(chǎn)裝置項(xiàng)目可行性研究報(bào)告模板-備案拿地
- 2024-2025學(xué)年河北省尚義縣第一中學(xué)等校高二上學(xué)期12月月考?xì)v史試卷
- 2025年債務(wù)轉(zhuǎn)股權(quán)協(xié)議標(biāo)準(zhǔn)格式
- 2025年古園林保護(hù)性維護(hù)協(xié)議
- 2025年農(nóng)產(chǎn)品交易市場(chǎng)租賃合同模板
- 2025年功能性棚模新材料及各種助劑項(xiàng)目提案報(bào)告
- 2025年企業(yè)與個(gè)人租車合同模板及規(guī)定
- 2025年長租公寓項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告范文
- 2025年家居用品商貿(mào)公司采購協(xié)議書
- 2025年綠色共享汽車合作投資與發(fā)展策劃協(xié)議
- 2025陜西省建筑安全員B證考試題庫及答案
- 益普索X空中云匯-2024年B2B外貿(mào)企業(yè)出海白皮書 -全球支付及金融平臺(tái) 賦能B2B外貿(mào)企業(yè)競(jìng)爭(zhēng)力
- 2025牢牢堅(jiān)守廉潔底線嚴(yán)守廉政職業(yè)底線主題課件
- DB31-T 451-2021 凈水廠用煤質(zhì)顆?;钚蕴窟x擇、使用及更換技術(shù)規(guī)范
- ADA糖尿病醫(yī)學(xué)診療標(biāo)準(zhǔn)指南修訂要點(diǎn)解讀(2025)課件
- 2024成人動(dòng)脈血?dú)夥治雠R床操作實(shí)踐標(biāo)準(zhǔn)(第二版)課件
- 高一古詩詞鑒賞課模板
- 年產(chǎn)珍珠棉7000噸紙箱包裝3000噸生產(chǎn)項(xiàng)目環(huán)評(píng)報(bào)告表
- 健康管理-理論知識(shí)復(fù)習(xí)測(cè)試卷含答案
- 崩漏?。ó惓W訉m出血)中西醫(yī)診療方案
- 2024年甘肅省公務(wù)員考試《行測(cè)》真題及答案解析
評(píng)論
0/150
提交評(píng)論