資源描述:
《UML系統(tǒng)建?;A(chǔ)教程 第13章 狀態(tài)圖》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、重點(diǎn)內(nèi)容:何謂狀態(tài)圖構(gòu)成狀態(tài)圖的元素狀態(tài)圖的組成使用Rose創(chuàng)建狀態(tài)圖創(chuàng)建項(xiàng)目中的狀態(tài)圖第13章?tīng)顟B(tài)圖一、何謂狀態(tài)圖狀態(tài)圖由狀態(tài)、轉(zhuǎn)換、事件、活動(dòng)和動(dòng)作5部分組成:1狀態(tài)指的是對(duì)象在其生命周期中的一種狀況,處于某個(gè)特定狀態(tài)中的對(duì)象必然會(huì)滿足某些條件、執(zhí)行某些動(dòng)作或者是等待某些事件。一個(gè)狀態(tài)的生命周期是一個(gè)有限的時(shí)間階段。2轉(zhuǎn)換指的是兩個(gè)不同狀態(tài)之間的一種關(guān)系,表明對(duì)象將在第一個(gè)狀態(tài)中執(zhí)行一定的動(dòng)作,并且在滿足某個(gè)特定條件下由某個(gè)事件觸發(fā)進(jìn)入第二個(gè)狀態(tài)。3事件指的是發(fā)生在時(shí)間和空間上的對(duì)狀態(tài)機(jī)來(lái)講有意義的那些事情。事件通常會(huì)引起狀態(tài)的變遷,促使?fàn)顟B(tài)機(jī)從一種狀態(tài)切換到另一種狀態(tài),如信號(hào)、
2、對(duì)象額度創(chuàng)建和銷(xiāo)毀等。4活動(dòng)指的是狀態(tài)機(jī)中進(jìn)行的非原子操作。5動(dòng)作指的是狀態(tài)機(jī)中可以執(zhí)行的那些原子操作,所謂原子操作指的是它們?cè)谶\(yùn)行的過(guò)程中不能被其他消息所中斷,必須一直執(zhí)行下去,最終導(dǎo)致?tīng)顟B(tài)的變更或者返回一個(gè)值。1、狀態(tài)圖的概念一、何謂狀態(tài)圖狀態(tài)用于對(duì)實(shí)體在其生命周期中的各種狀況進(jìn)行建模,一個(gè)實(shí)體總是在有限的一段時(shí)間內(nèi)保持一個(gè)狀態(tài)。狀態(tài)由一個(gè)帶圓角的矩形表示,狀態(tài)的描述應(yīng)該包括:名稱、入口和出口動(dòng)作、內(nèi)部轉(zhuǎn)換和嵌套狀態(tài)。1、狀態(tài)圖的概念狀態(tài)一、何謂狀態(tài)圖在UML的狀態(tài)建模機(jī)制中,轉(zhuǎn)換用帶箭頭的直線表示,一端連接源狀態(tài),箭頭指向目標(biāo)狀態(tài)。轉(zhuǎn)換還可以標(biāo)注與此轉(zhuǎn)換相關(guān)的選項(xiàng),如事件、監(jiān)護(hù)
3、條件和動(dòng)作等,如果轉(zhuǎn)換上沒(méi)有標(biāo)注觸發(fā)轉(zhuǎn)換的事件,則表示此轉(zhuǎn)換自動(dòng)進(jìn)行。1、狀態(tài)圖的概念轉(zhuǎn)換一、何謂狀態(tài)圖每個(gè)狀態(tài)圖都應(yīng)該有一個(gè)初始狀態(tài),它代表狀態(tài)圖的起始位置。初始狀態(tài)是一個(gè)偽狀態(tài)(一個(gè)和普通狀態(tài)有連接的假狀態(tài)),對(duì)象不可能保持在初始狀態(tài),必須要有一個(gè)輸出的無(wú)觸發(fā)轉(zhuǎn)換(沒(méi)有事件觸發(fā)器的轉(zhuǎn)換)。通常初始狀態(tài)上的轉(zhuǎn)換是無(wú)監(jiān)護(hù)條件的,并且初始狀態(tài)只能作為轉(zhuǎn)換的源,而不能作為轉(zhuǎn)換的目標(biāo)。一個(gè)狀態(tài)圖只能有一個(gè)初始狀態(tài),用一個(gè)實(shí)心的圓表示。1、狀態(tài)圖的概念初始狀態(tài)一、何謂狀態(tài)圖終止?fàn)顟B(tài)是一個(gè)狀態(tài)圖的終點(diǎn),一個(gè)狀態(tài)圖可以擁有一個(gè)或者多個(gè)終止?fàn)顟B(tài)。對(duì)象可以保持在終止?fàn)顟B(tài),但是終止?fàn)顟B(tài)不可能有任何形式
4、的觸發(fā)轉(zhuǎn)換,它的目的就是為了激發(fā)封裝狀態(tài)上的完成轉(zhuǎn)換。1、狀態(tài)圖的概念終止?fàn)顟B(tài)一、何謂狀態(tài)圖活動(dòng)圖和狀態(tài)圖中都有需要根據(jù)給定條件進(jìn)行判斷,然后根據(jù)不同的判斷結(jié)果進(jìn)行不同的轉(zhuǎn)換的情況。實(shí)際就是工作流在此處按監(jiān)護(hù)條件的取值發(fā)生分支,在UML中判定用空心菱形表示。1、狀態(tài)圖的概念判定一、何謂狀態(tài)圖狀態(tài)圖的作用主要體現(xiàn)在以下幾個(gè)方面:1狀態(tài)圖清晰的描述了狀態(tài)之間的轉(zhuǎn)換順序,通過(guò)狀態(tài)的轉(zhuǎn)換順序也就可以清晰的看出事件的執(zhí)行順序。如果沒(méi)有狀態(tài)圖我們就不可避免的要使用大量的文字來(lái)描述外部事件的合法順序。2清晰的事件順序有利于程序員在開(kāi)發(fā)程序時(shí)避免出現(xiàn)事件錯(cuò)序的情況。3狀態(tài)圖清晰的描述了狀態(tài)轉(zhuǎn)換時(shí)所必
5、須的觸發(fā)事件、監(jiān)護(hù)條件和動(dòng)作等影響轉(zhuǎn)換的因素,有利于程序員避免程序中非法事件的進(jìn)入。4狀態(tài)圖通過(guò)判定可以更好的描述工作流因?yàn)椴煌臈l件發(fā)生的分支。2、為什么要使用狀態(tài)圖二、構(gòu)成狀態(tài)圖的元素狀態(tài)名:在實(shí)際使用中,狀態(tài)名通常是直觀、易懂、能充分表達(dá)語(yǔ)義的名詞短語(yǔ),其中每個(gè)單詞的首字母要大寫(xiě)。內(nèi)部活動(dòng):狀態(tài)可以包含描述為表達(dá)式的內(nèi)部活動(dòng)。當(dāng)狀態(tài)進(jìn)入時(shí),活動(dòng)在進(jìn)入動(dòng)作完成后就開(kāi)始。如果活動(dòng)結(jié)束,狀態(tài)就完成,然后一個(gè)從這個(gè)狀態(tài)出發(fā)的轉(zhuǎn)換被觸發(fā)。內(nèi)部轉(zhuǎn)換:狀態(tài)可能包含一系列的內(nèi)部轉(zhuǎn)換,內(nèi)部轉(zhuǎn)換因?yàn)橹挥性礌顟B(tài)而沒(méi)有目標(biāo)狀態(tài),所以內(nèi)部轉(zhuǎn)換的結(jié)果并不改變狀態(tài)本身。如果對(duì)象的事件在對(duì)象正處在擁有轉(zhuǎn)換的狀
6、態(tài)時(shí)發(fā)生,那內(nèi)部轉(zhuǎn)換上的動(dòng)作也被執(zhí)行。入口和出口動(dòng)作:狀態(tài)可能具有入口和出口動(dòng)作。這些動(dòng)作的目的是封裝這個(gè)狀態(tài),這樣就可以不必知道狀態(tài)的內(nèi)部狀態(tài)而在外部使用它。入口動(dòng)作和出口動(dòng)作原則上依附于進(jìn)入和出去的轉(zhuǎn)換,但是將它們聲明為特殊的動(dòng)作可以使?fàn)顟B(tài)的定義不依賴狀態(tài)的轉(zhuǎn)換,因此起到封裝的作用。歷史狀態(tài):組成狀態(tài)可能包含歷史狀態(tài)(Historystete)。1、狀態(tài)二、構(gòu)成狀態(tài)圖的元素轉(zhuǎn)換用于表示一個(gè)狀態(tài)機(jī)的兩個(gè)狀態(tài)之間的一種關(guān)系,即一個(gè)在某初始狀態(tài)的對(duì)象通過(guò)執(zhí)行指定的動(dòng)作并符合一定的條件下進(jìn)入第二種狀態(tài)。在這個(gè)狀態(tài)的變化中,轉(zhuǎn)換被稱作激發(fā)。在激發(fā)之前的狀態(tài)叫做源狀態(tài),在激發(fā)之后的狀態(tài)叫做目
7、標(biāo)狀態(tài)。簡(jiǎn)單轉(zhuǎn)換只有一個(gè)源狀態(tài)和一個(gè)目標(biāo)狀態(tài)。復(fù)雜轉(zhuǎn)換有不止一個(gè)源狀態(tài)和(或)有不止一個(gè)目標(biāo)狀態(tài)。2、轉(zhuǎn)換二、構(gòu)成狀態(tài)圖的元素外部轉(zhuǎn)換是一種改變狀態(tài)的轉(zhuǎn)換,也是最普通最常見(jiàn)的一種轉(zhuǎn)換。在UML中,它用從源狀態(tài)到目標(biāo)狀態(tài)的帶箭頭的線段表示,其他屬性以文字串附加在箭頭旁。2、轉(zhuǎn)換外部轉(zhuǎn)換二、構(gòu)成狀態(tài)圖的元素內(nèi)部轉(zhuǎn)換只有源狀態(tài),沒(méi)有目標(biāo)狀態(tài),不會(huì)激發(fā)入口和出口動(dòng)作,因此內(nèi)部轉(zhuǎn)換激發(fā)的結(jié)果不改變本來(lái)的狀態(tài)。如果一個(gè)內(nèi)部轉(zhuǎn)換帶有動(dòng)作,它也要被執(zhí)行。內(nèi)部轉(zhuǎn)換常用于對(duì)不