軟件建模技術(shù)第10章狀態(tài)機(jī)圖_第1頁
軟件建模技術(shù)第10章狀態(tài)機(jī)圖_第2頁
軟件建模技術(shù)第10章狀態(tài)機(jī)圖_第3頁
軟件建模技術(shù)第10章狀態(tài)機(jī)圖_第4頁
軟件建模技術(shù)第10章狀態(tài)機(jī)圖_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第第10章章 狀態(tài)機(jī)圖狀態(tài)機(jī)圖110.1 狀態(tài)機(jī)圖概述狀態(tài)機(jī)圖概述10.2 狀態(tài)機(jī)圖基本元素狀態(tài)機(jī)圖基本元素10.3 建立狀態(tài)機(jī)圖建立狀態(tài)機(jī)圖10.4 狀態(tài)機(jī)圖應(yīng)用范圍狀態(tài)機(jī)圖應(yīng)用范圍小結(jié)小結(jié)10.1 狀態(tài)機(jī)圖概述狀態(tài)機(jī)圖概述n狀態(tài)機(jī)圖用來對系統(tǒng)的動態(tài)行為建模;狀態(tài)機(jī)圖用來對系統(tǒng)的動態(tài)行為建模;n描述單一對象在其生命期內(nèi)受各種事件的描述單一對象在其生命期內(nèi)受各種事件的影響而發(fā)生的狀態(tài)變化;影響而發(fā)生的狀態(tài)變化;n狀態(tài)機(jī)圖是展示狀態(tài)與狀態(tài)轉(zhuǎn)換的圖,可狀態(tài)機(jī)圖是展示狀態(tài)與狀態(tài)轉(zhuǎn)換的圖,可以描述對象的行為,也可以描述用例、協(xié)以描述對象的行為,也可以描述用例、協(xié)作和方法甚至整個系統(tǒng)的動態(tài)行為。作和方法

2、甚至整個系統(tǒng)的動態(tài)行為。210.2 狀態(tài)機(jī)圖基本元素狀態(tài)機(jī)圖基本元素3圖圖10-1 狀態(tài)機(jī)圖狀態(tài)機(jī)圖n初始狀態(tài)初始狀態(tài)n終止?fàn)顟B(tài)終止?fàn)顟B(tài)n中間狀態(tài)中間狀態(tài)n事件事件n轉(zhuǎn)換轉(zhuǎn)換n監(jiān)護(hù)條件監(jiān)護(hù)條件n活動活動n動作動作n分支分支一、狀態(tài)(一、狀態(tài)(statestate)1、狀態(tài)、狀態(tài)n 對象生命周期中的某個條件或狀況,在此期間對象生命周期中的某個條件或狀況,在此期間對象將滿足某些條件、執(zhí)行某些活動或等待某對象將滿足某些條件、執(zhí)行某些活動或等待某些事件。些事件。4說明:說明:p 對象在任何時候都會處于某種狀態(tài)中,所有對對象在任何時候都會處于某種狀態(tài)中,所有對象都有狀態(tài)。象都有狀態(tài)。p 對象所處的狀態(tài)決

3、定了它如何響應(yīng)所檢測到的對象所處的狀態(tài)決定了它如何響應(yīng)所檢測到的事件或所接受的消息。事件或所接受的消息。p 通常,事件使對象從一種狀態(tài)轉(zhuǎn)向另一種狀態(tài)通常,事件使對象從一種狀態(tài)轉(zhuǎn)向另一種狀態(tài)(即狀態(tài)的轉(zhuǎn)移)。(即狀態(tài)的轉(zhuǎn)移)。5例:例:CD播放器播放器一、狀態(tài)(一、狀態(tài)(statestate)2、狀態(tài)的表示、狀態(tài)的表示n狀態(tài)名稱狀態(tài)名稱n入口動作入口動作n出口動作出口動作n內(nèi)部轉(zhuǎn)換內(nèi)部轉(zhuǎn)換n內(nèi)部活動內(nèi)部活動n可推遲事件可推遲事件 6狀態(tài)示例狀態(tài)示例動作動作(Action)n可執(zhí)行的原子計(jì)算??蓤?zhí)行的原子計(jì)算。n不可中斷,其執(zhí)行時間可忽略不計(jì)。不可中斷,其執(zhí)行時間可忽略不計(jì)。兩種特殊動作:兩種特殊

4、動作:n 進(jìn)入動作(進(jìn)入動作(entry action):進(jìn)入某狀態(tài)時執(zhí)行):進(jìn)入某狀態(tài)時執(zhí)行的動作,用的動作,用“entry/要執(zhí)行的動作要執(zhí)行的動作”表示。表示。n 退出動作(退出動作(exit action):退出某狀態(tài)時執(zhí)行):退出某狀態(tài)時執(zhí)行的動作,用的動作,用“exit/要執(zhí)行的動作要執(zhí)行的動作”表示。表示。 7活動活動n對象處于某個狀態(tài)時,對象進(jìn)行的一些列對象處于某個狀態(tài)時,對象進(jìn)行的一些列動作。動作。n表示活動的格式為表示活動的格式為“do/動作名動作名”8一、狀態(tài)(一、狀態(tài)(statestate)3、狀態(tài)的分類、狀態(tài)的分類n初態(tài)初態(tài)n終態(tài)終態(tài)n簡單狀態(tài)(中間狀態(tài))簡單狀態(tài)(中

5、間狀態(tài))n組合狀態(tài)組合狀態(tài)n歷史狀態(tài)歷史狀態(tài) 9n顯示狀態(tài)圖中狀態(tài)機(jī)的顯示狀態(tài)圖中狀態(tài)機(jī)的執(zhí)行(執(zhí)行(execution)的)的開始。開始。n一個狀態(tài)機(jī)只能有一個一個狀態(tài)機(jī)只能有一個初態(tài)。初態(tài)。n如果一個狀態(tài)機(jī)用多張如果一個狀態(tài)機(jī)用多張圖描述,則多張圖用同圖描述,則多張圖用同一個初態(tài)。一個初態(tài)。n如果用了組合狀態(tài),則如果用了組合狀態(tài),則組合狀態(tài)中可有初態(tài)。組合狀態(tài)中可有初態(tài)。10(1)初始狀態(tài)()初始狀態(tài)(Start State)n表示一個最后的或者終端狀態(tài)。表示一個最后的或者終端狀態(tài)。11(2)終止?fàn)顟B(tài)()終止?fàn)顟B(tài)(End State)n 一張圖中終態(tài)可以有一張圖中終態(tài)可以有多個,也可以沒有

6、。多個,也可以沒有。12(3)簡單狀態(tài))簡單狀態(tài)組成:組成:n狀態(tài)名狀態(tài)名n進(jìn)入進(jìn)入/退出動作退出動作n內(nèi)部轉(zhuǎn)移內(nèi)部轉(zhuǎn)移-不導(dǎo)致狀態(tài)改變的轉(zhuǎn)換,不會不導(dǎo)致狀態(tài)改變的轉(zhuǎn)換,不會執(zhí)行執(zhí)行entry和和exit動作。動作。n內(nèi)部活動內(nèi)部活動n延遲事件延遲事件-延遲到下一狀態(tài)處理的事件。延遲到下一狀態(tài)處理的事件。13例:狀態(tài)示例例:狀態(tài)示例EnterPasswordentry/ set echo *exit/ set echo normalevent keypress/ handle characterevent help/ display helpevent save/ deferdo/ get p

7、assword(4 4)組合)組合/ /嵌套狀態(tài)嵌套狀態(tài)n含有子狀態(tài)的狀態(tài)稱為組合狀態(tài)。含有子狀態(tài)的狀態(tài)稱為組合狀態(tài)。14兩種類型:兩種類型:15n順序子狀態(tài)順序子狀態(tài)復(fù)合狀態(tài)包含的多個子狀態(tài)之間是互斥的;復(fù)合狀態(tài)包含的多個子狀態(tài)之間是互斥的;復(fù)合狀態(tài)只包含一個狀態(tài)機(jī)。復(fù)合狀態(tài)只包含一個狀態(tài)機(jī)。n并發(fā)子狀態(tài)并發(fā)子狀態(tài)復(fù)合狀態(tài)包含兩個或多個并發(fā)的子狀態(tài)機(jī)。復(fù)合狀態(tài)包含兩個或多個并發(fā)的子狀態(tài)機(jī)。(4)組合)組合/嵌套狀態(tài)嵌套狀態(tài)兩種類型:兩種類型:n并發(fā)子狀態(tài)并發(fā)子狀態(tài)16n順序子狀態(tài)順序子狀態(tài)(4)組合)組合/嵌套狀態(tài)嵌套狀態(tài)復(fù)合狀態(tài)的表示法有復(fù)合狀態(tài)的表示法有2 2兩種:兩種:(1) (1)

8、將子狀態(tài)機(jī)嵌入表示狀態(tài)的圓角矩形將子狀態(tài)機(jī)嵌入表示狀態(tài)的圓角矩形中中(2) (2) 在圓角矩形中加入加分解指示符在圓角矩形中加入加分解指示符17(4)組合)組合/嵌套狀態(tài)嵌套狀態(tài)(5 5)歷史狀態(tài))歷史狀態(tài)n 使用歷史狀態(tài),則可以存儲退出組合狀態(tài)時所使用歷史狀態(tài),則可以存儲退出組合狀態(tài)時所處的子狀態(tài),則返回組合狀態(tài)時可以直接回到處的子狀態(tài),則返回組合狀態(tài)時可以直接回到相應(yīng)的子狀態(tài)。相應(yīng)的子狀態(tài)。18二、轉(zhuǎn)換(二、轉(zhuǎn)換(transitiontransition)1、轉(zhuǎn)換、轉(zhuǎn)換n兩個狀態(tài)之間的一種關(guān)系,表示對象在第兩個狀態(tài)之間的一種關(guān)系,表示對象在第一個狀態(tài)中執(zhí)行一定的動作,并在某個特一個狀態(tài)中執(zhí)

9、行一定的動作,并在某個特定事件發(fā)生而且滿足某個條件時進(jìn)入第二定事件發(fā)生而且滿足某個條件時進(jìn)入第二個狀態(tài)。個狀態(tài)。n轉(zhuǎn)換進(jìn)入的狀態(tài)稱為轉(zhuǎn)換進(jìn)入的狀態(tài)稱為活動狀態(tài)活動狀態(tài),轉(zhuǎn)換離開,轉(zhuǎn)換離開的狀態(tài)變變?yōu)榈臓顟B(tài)變變?yōu)榉腔顒訝顟B(tài)非活動狀態(tài)。 19二、轉(zhuǎn)換(二、轉(zhuǎn)換(transitiontransition)2、轉(zhuǎn)換的格式、轉(zhuǎn)換的格式n 事件(事件( 參數(shù)參數(shù) ) 條件條件 / 動作動作n Helplen(PSW)6/verifyPSW.help()n 每個轉(zhuǎn)移只允許一個事件,一個事件只允許一每個轉(zhuǎn)移只允許一個事件,一個事件只允許一個動作。個動作。20二、轉(zhuǎn)換(二、轉(zhuǎn)換(transitiontransi

10、tion)3、轉(zhuǎn)換的分類、轉(zhuǎn)換的分類n外部轉(zhuǎn)換外部轉(zhuǎn)換n內(nèi)部轉(zhuǎn)換內(nèi)部轉(zhuǎn)換n自動轉(zhuǎn)換自動轉(zhuǎn)換n復(fù)合轉(zhuǎn)換復(fù)合轉(zhuǎn)換21n 一種改變對象狀態(tài)的轉(zhuǎn)換,用從源狀態(tài)到目標(biāo)一種改變對象狀態(tài)的轉(zhuǎn)換,用從源狀態(tài)到目標(biāo)狀態(tài)的箭頭表示。(火車衛(wèi)生間的狀態(tài)機(jī)圖)狀態(tài)的箭頭表示。(火車衛(wèi)生間的狀態(tài)機(jī)圖)22(1)外部轉(zhuǎn)換)外部轉(zhuǎn)換UsedUnusedMaintainingThe train stopThe train go runningSomebody go intoSomebody go intoSomebody go outn 有一個源狀態(tài)但沒有目標(biāo)狀態(tài),轉(zhuǎn)換后的狀態(tài)有一個源狀態(tài)但沒有目標(biāo)狀態(tài),轉(zhuǎn)換后的狀態(tài)仍是它本

11、身。仍是它本身。23(2)內(nèi)部轉(zhuǎn)換)內(nèi)部轉(zhuǎn)換n 在沒有外部事件的作用下,對象執(zhí)行了某些活在沒有外部事件的作用下,對象執(zhí)行了某些活動后,自然而然地完成的轉(zhuǎn)換。動后,自然而然地完成的轉(zhuǎn)換。n 自動轉(zhuǎn)換是離開某個狀態(tài)后重新進(jìn)入原先的狀自動轉(zhuǎn)換是離開某個狀態(tài)后重新進(jìn)入原先的狀態(tài),它會激發(fā)狀態(tài)的入口動作和出口動作的執(zhí)態(tài),它會激發(fā)狀態(tài)的入口動作和出口動作的執(zhí)行。行。24(3)自動轉(zhuǎn)換)自動轉(zhuǎn)換n 復(fù)合轉(zhuǎn)換由簡單轉(zhuǎn)換組成,通過分支判定,把復(fù)合轉(zhuǎn)換由簡單轉(zhuǎn)換組成,通過分支判定,把多個簡單轉(zhuǎn)換組合在一起。多個簡單轉(zhuǎn)換組合在一起。25(4)復(fù)合轉(zhuǎn)換)復(fù)合轉(zhuǎn)換NewStateNewState2NewState3Ne

12、wState4NewState5Event1 Condition1 / Action1 Condition2 / Action2 Condition3 / Action3 Condition4 / Action4 Condition5 / Action5 Condition6 / Action6三、事件三、事件(EventEvent)1、事件、事件n 事件是外部作用于一個對象,能夠觸發(fā)對象狀事件是外部作用于一個對象,能夠觸發(fā)對象狀態(tài)改變的一種現(xiàn)象。態(tài)改變的一種現(xiàn)象。2、事件的類型、事件的類型n 信號事件信號事件n 調(diào)用事件調(diào)用事件n 變化事件變化事件n 時間事件時間事件n 延遲事件延遲事件26

13、n 對象之間通過發(fā)送信號和接收信號實(shí)現(xiàn)通信。對象之間通過發(fā)送信號和接收信號實(shí)現(xiàn)通信。n 信號是一種異步機(jī)制。對象一般都有相應(yīng)的事件信號是一種異步機(jī)制。對象一般都有相應(yīng)的事件處理器。處理器。n 鼠標(biāo)和鍵盤操作均屬于此類事件。鼠標(biāo)和鍵盤操作均屬于此類事件。27(1)信號事件()信號事件(signal event)n 一個對象請求調(diào)用某個對象的成員方法;一個對象請求調(diào)用某個對象的成員方法;n 是一種同步機(jī)制。是一種同步機(jī)制。 28(2)調(diào)用事件()調(diào)用事件(call event)OfflineOnlinelogIn( UserID,Password )n 某個指定屬性值為真時,事件得到觸發(fā)。某個指定

14、屬性值為真時,事件得到觸發(fā)。n 用關(guān)鍵字用關(guān)鍵字When,后面跟布爾表達(dá)式。,后面跟布爾表達(dá)式。n When(temperature120)/alerm()29(3)變化事件()變化事件(change event)WaitReadwhen(buffer!=null) / notifyUser()n滿足某一時間表達(dá)式的情況的出現(xiàn)。滿足某一時間表達(dá)式的情況的出現(xiàn)。n例如到達(dá)某時間或經(jīng)過了某一時間段。例如到達(dá)某時間或經(jīng)過了某一時間段。n用關(guān)鍵字用關(guān)鍵字After或或When表示。表示。30(4)時間事件()時間事件(time event)IdleActivewhen(date=Feb.14,2009

15、) / alarm()NoMouseMovingLeavingafter(10 minutes)n對象處在某狀態(tài)時外部事件產(chǎn)生了,但對象處在某狀態(tài)時外部事件產(chǎn)生了,但沒有執(zhí)行事件,要推遲到另外一個狀態(tài)沒有執(zhí)行事件,要推遲到另外一個狀態(tài)才執(zhí)行的事件。才執(zhí)行的事件。n例如例如E-mail中正在發(fā)送第一封郵件時,中正在發(fā)送第一封郵件時,用戶下達(dá)發(fā)送第二封郵件命令被延遲,用戶下達(dá)發(fā)送第二封郵件命令被延遲,等到發(fā)送完第一封收件后,這封郵件就等到發(fā)送完第一封收件后,這封郵件就會被發(fā)送。會被發(fā)送。31(5)延遲事件()延遲事件(deferred event)例:訂單處理系統(tǒng)例:訂單處理系統(tǒng)323310.3

16、建立狀態(tài)機(jī)圖建立狀態(tài)機(jī)圖繪制狀態(tài)機(jī)圖的一般步驟是:繪制狀態(tài)機(jī)圖的一般步驟是:n 1尋找主要的狀態(tài)尋找主要的狀態(tài);n 2尋找外部事件,以便確定狀態(tài)之間的轉(zhuǎn)換尋找外部事件,以便確定狀態(tài)之間的轉(zhuǎn)換;n 3詳細(xì)描述每個狀態(tài)和轉(zhuǎn)換詳細(xì)描述每個狀態(tài)和轉(zhuǎn)換;n 4. 把簡單狀態(tài)圖轉(zhuǎn)換為復(fù)合狀態(tài)圖。把簡單狀態(tài)圖轉(zhuǎn)換為復(fù)合狀態(tài)圖。3410.3 建立狀態(tài)機(jī)圖建立狀態(tài)機(jī)圖1尋找主要的狀態(tài)尋找主要的狀態(tài) 飛機(jī)票有以下飛機(jī)票有以下4種狀態(tài):無預(yù)訂、部分預(yù)訂、預(yù)種狀態(tài):無預(yù)訂、部分預(yù)訂、預(yù)訂完、預(yù)訂關(guān)閉。訂完、預(yù)訂關(guān)閉。(1)在剛確定飛行計(jì)劃時,顯然沒有任何預(yù)訂,)在剛確定飛行計(jì)劃時,顯然沒有任何預(yù)訂,且在顧客預(yù)訂機(jī)票之

17、前都將處于且在顧客預(yù)訂機(jī)票之前都將處于“無預(yù)訂無預(yù)訂”狀態(tài)。狀態(tài)。(2)對于訂座而言,有)對于訂座而言,有“部分預(yù)訂部分預(yù)訂”和和“預(yù)訂完預(yù)訂完”兩種狀態(tài)。兩種狀態(tài)。(3)當(dāng)航班快要起飛時,要)當(dāng)航班快要起飛時,要“預(yù)訂關(guān)閉預(yù)訂關(guān)閉”。3510.3 建立狀態(tài)機(jī)圖建立狀態(tài)機(jī)圖2尋找外部事件尋找外部事件(1)預(yù)訂)預(yù)訂():顧客預(yù)訂機(jī)票。:顧客預(yù)訂機(jī)票。(2)退訂)退訂():顧客退票。:顧客退票。(3)關(guān)閉)關(guān)閉():機(jī)票管理員關(guān)閉訂票系統(tǒng)。:機(jī)票管理員關(guān)閉訂票系統(tǒng)。(4)取消航班)取消航班():飛機(jī)調(diào)度人員取消飛行計(jì)劃。:飛機(jī)調(diào)度人員取消飛行計(jì)劃。3610.3 建立狀態(tài)機(jī)圖建立狀態(tài)機(jī)圖3確定狀態(tài)

18、間的轉(zhuǎn)換確定狀態(tài)間的轉(zhuǎn)換37表表10-1 事件與狀態(tài)轉(zhuǎn)換事件與狀態(tài)轉(zhuǎn)換源目標(biāo)源目標(biāo)無預(yù)訂無預(yù)訂部分預(yù)訂部分預(yù)訂預(yù)訂完預(yù)訂完預(yù)訂關(guān)閉預(yù)訂關(guān)閉無預(yù)訂無預(yù)訂 預(yù)訂預(yù)訂()不直接轉(zhuǎn)換不直接轉(zhuǎn)換關(guān)閉關(guān)閉()部分預(yù)訂部分預(yù)訂 退訂退訂()事件發(fā)生事件發(fā)生后,使預(yù)訂人后,使預(yù)訂人=0 預(yù)訂預(yù)訂(),無空座無空座關(guān)閉關(guān)閉()預(yù)訂完預(yù)訂完不直接轉(zhuǎn)換不直接轉(zhuǎn)換退訂退訂() 關(guān)閉關(guān)閉()預(yù)訂關(guān)閉預(yù)訂關(guān)閉 無轉(zhuǎn)換無轉(zhuǎn)換無轉(zhuǎn)換無轉(zhuǎn)換無轉(zhuǎn)換無轉(zhuǎn)換 10.3 建立狀態(tài)機(jī)圖建立狀態(tài)機(jī)圖 確定了狀態(tài)之間的有效轉(zhuǎn)換,繪制出相應(yīng)的狀態(tài)機(jī)圖,確定了狀態(tài)之間的有效轉(zhuǎn)換,繪制出相應(yīng)的狀態(tài)機(jī)圖,如圖如圖10-18所示。所示。3810.3 建立狀態(tài)機(jī)圖建立狀態(tài)機(jī)圖4詳細(xì)描述每個狀態(tài)和轉(zhuǎn)換詳細(xì)描述每個狀態(tài)和轉(zhuǎn)換詳細(xì)描述后的狀態(tài)圖,見圖詳細(xì)描述后的狀態(tài)圖,見圖10-19 3910.3 建立狀態(tài)機(jī)圖建立狀態(tài)機(jī)圖5把簡單狀態(tài)圖轉(zhuǎn)換為符合狀態(tài)圖把簡單狀態(tài)圖轉(zhuǎn)換為符合狀態(tài)圖轉(zhuǎn)換后的符合狀態(tài)圖,見圖轉(zhuǎn)換后的符合狀態(tài)圖,見圖10-20 4010.4 狀態(tài)機(jī)圖應(yīng)用范圍狀態(tài)機(jī)圖應(yīng)用范圍41 狀態(tài)機(jī)圖主要應(yīng)用有兩種:狀態(tài)機(jī)圖主要應(yīng)用有兩種:n一是,在對象生命周期內(nèi),對一個對象的一是,在對象生命周期內(nèi),對一個對象的整個活動狀態(tài)建模;整個活動狀態(tài)建模

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論