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

下載本文檔

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

文檔簡(jiǎn)介

第10章狀態(tài)機(jī)圖第10章狀態(tài)機(jī)圖2對(duì)象和狀態(tài)對(duì)象是某個(gè)狀態(tài)下的對(duì)象,而狀態(tài)則是描述當(dāng)前對(duì)象。所有的對(duì)象均有狀態(tài),狀態(tài)可改變下面一些例子說(shuō)明了對(duì)象和狀態(tài)(1)支票(對(duì)象)已付(狀態(tài))(2)汽車(對(duì)象)已啟動(dòng)(狀態(tài))(3)小王(對(duì)象)睡著了(狀態(tài))(4)小紅(對(duì)象)未婚(狀態(tài))22對(duì)象和狀態(tài)對(duì)象是某個(gè)狀態(tài)下的對(duì)象,而狀態(tài)則是描述當(dāng)前對(duì)象。3為什么要建模狀態(tài)機(jī)圖對(duì)象可能會(huì)有不同的狀態(tài),某些行為依賴于這些狀態(tài)。例如,按下開關(guān)按鈕時(shí),電燈將改變當(dāng)前的狀態(tài)(由關(guān)變開或由開變關(guān)),因此:需要記錄對(duì)象當(dāng)前的狀態(tài)發(fā)生了某種事件才會(huì)引起狀態(tài)間的轉(zhuǎn)移由一個(gè)狀態(tài)轉(zhuǎn)到另一個(gè)狀態(tài)的過(guò)程通常通過(guò)方法調(diào)用實(shí)現(xiàn)狀態(tài)機(jī)圖通常作為對(duì)類圖的補(bǔ)充3為什么要建模狀態(tài)機(jī)圖對(duì)象可能會(huì)有不同的狀態(tài),某些行為依賴面向?qū)ο蠓治雠c設(shè)計(jì)&UML4狀態(tài)機(jī)圖:電梯狀態(tài)機(jī)圖主要顯示以下3種內(nèi)容:對(duì)象在生命周期中所經(jīng)歷的狀態(tài)序列;誘發(fā)對(duì)象從一個(gè)狀態(tài)轉(zhuǎn)移到另一個(gè)狀態(tài)的事件;狀態(tài)改變所導(dǎo)致的動(dòng)作。面向?qū)ο蠓治雠c設(shè)計(jì)&UML4狀態(tài)機(jī)圖:電梯狀態(tài)機(jī)圖主要顯示以狀態(tài)機(jī)圖的概念狀態(tài)機(jī)圖描述對(duì)象在整個(gè)生命周期內(nèi),在外部事件的作用下,從一種狀態(tài)轉(zhuǎn)換到另一種狀態(tài)的關(guān)系圖。這種圖的節(jié)點(diǎn)是狀態(tài)(包括初始狀態(tài)和終止?fàn)顟B(tài)),關(guān)系是轉(zhuǎn)換。狀態(tài)機(jī)圖的概念狀態(tài)機(jī)圖描述對(duì)象在整個(gè)生命周期內(nèi),在外部事件的狀態(tài)機(jī)圖的概念狀態(tài)機(jī)圖的作用狀態(tài)機(jī)圖常用來(lái)描述業(yè)務(wù)或軟件系統(tǒng)中的對(duì)象在外部事件的作用下,對(duì)象的狀態(tài)從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的控制流。利用狀態(tài)機(jī)圖可以精確地描述對(duì)象在生命周期內(nèi)的行為特征。狀態(tài)機(jī)圖的組成元素狀態(tài)機(jī)圖的組成元素包括:初始狀態(tài)、終止?fàn)顟B(tài)、狀態(tài)、轉(zhuǎn)換。其中,轉(zhuǎn)換將各種狀態(tài)連接在一起,構(gòu)成一個(gè)狀態(tài)機(jī)圖。狀態(tài)機(jī)在整個(gè)生命周期內(nèi),描述對(duì)象處于各種狀態(tài)的圖,該圖必須完整包括:初始狀態(tài)、終止?fàn)顟B(tài)、狀態(tài)、轉(zhuǎn)換。狀態(tài)機(jī)圖不一定完整包含初始狀態(tài)、終止?fàn)顟B(tài)、狀態(tài)、轉(zhuǎn)換等狀態(tài)。狀態(tài)機(jī)圖的概念狀態(tài)機(jī)圖的作用7狀態(tài)機(jī)圖的基本符號(hào)7狀態(tài)機(jī)圖的基本符號(hào)狀態(tài)機(jī)圖的表示一個(gè)狀態(tài)機(jī)圖包含的元素有初始狀態(tài)、終止?fàn)顟B(tài)、狀態(tài)、轉(zhuǎn)換、分支。狀態(tài)的表示初始狀態(tài)初始狀態(tài)代表狀態(tài)機(jī)圖的起始位置,只能作為轉(zhuǎn)換的源,而不能作為轉(zhuǎn)換的目標(biāo)。初始狀態(tài)在一個(gè)狀態(tài)機(jī)圖中只允許有一個(gè),它用一個(gè)實(shí)心的圓表示。終止?fàn)顟B(tài)終止?fàn)顟B(tài)是對(duì)象的最后狀態(tài),是一個(gè)狀態(tài)機(jī)圖的終止點(diǎn)。終止?fàn)顟B(tài)只能作為轉(zhuǎn)換的目標(biāo),而不能作為轉(zhuǎn)換的源。終止?fàn)顟B(tài)在一個(gè)狀態(tài)機(jī)圖中可以有多個(gè),它用一個(gè)套有一個(gè)實(shí)心圓的空心圓表示。狀態(tài)機(jī)圖的表示一個(gè)狀態(tài)機(jī)圖包含的元素有初始狀態(tài)、終止?fàn)顟B(tài)、狀狀態(tài)機(jī)圖的表示狀態(tài)對(duì)象屬性值的集合標(biāo)識(shí)了一個(gè)對(duì)象的狀態(tài)。表示對(duì)象狀態(tài)的圖標(biāo)由一個(gè)帶圓角的矩形表示。它包含三部分:名稱:給對(duì)象所處狀態(tài)取的名字,名字用一個(gè)字符串表示,在一個(gè)圖中,名字應(yīng)該是唯一的。內(nèi)部轉(zhuǎn)換:對(duì)象響應(yīng)外部事件所執(zhí)行的動(dòng)作。內(nèi)部轉(zhuǎn)換發(fā)生時(shí),不改變對(duì)象的狀態(tài),但是,當(dāng)進(jìn)入該狀態(tài)時(shí),可以包含進(jìn)入動(dòng)作;當(dāng)退出該狀態(tài)時(shí),可以包含退出動(dòng)作。嵌套狀態(tài):狀態(tài)機(jī)圖中的狀態(tài)可以包含兩種狀態(tài):一種是簡(jiǎn)單狀態(tài),簡(jiǎn)單狀態(tài)不包含其它狀態(tài);一種是組合狀態(tài),組合狀態(tài)包含了子狀態(tài)。即狀態(tài)機(jī)圖的某些狀態(tài)本身也是狀態(tài)機(jī)圖。狀態(tài)機(jī)圖的表示狀態(tài)名稱:給對(duì)象所處狀態(tài)取的名字,名字用一個(gè)字10狀態(tài)機(jī)圖的表示狀態(tài)名入口動(dòng)作,進(jìn)入該狀態(tài)時(shí)執(zhí)行該動(dòng)作.動(dòng)作,處于該狀態(tài)時(shí)執(zhí)行的動(dòng)作.內(nèi)部轉(zhuǎn)換,該狀態(tài)中出現(xiàn)特定事件時(shí)執(zhí)行的動(dòng)作.退出動(dòng)作,當(dāng)離開該狀態(tài)時(shí)執(zhí)行該動(dòng)作.延遲響應(yīng)事件,在該狀態(tài)出現(xiàn)該事件時(shí),不在本狀態(tài)響應(yīng),而是延遲到其他狀態(tài)響應(yīng).10狀態(tài)機(jī)圖的表示狀態(tài)名入口動(dòng)作,進(jìn)入該狀態(tài)時(shí)執(zhí)行該動(dòng)作.狀態(tài)機(jī)圖的表示轉(zhuǎn)換的表示轉(zhuǎn)換是指對(duì)象在外部事件的作用下,當(dāng)滿足特定的條件時(shí),對(duì)象執(zhí)行一定的動(dòng)作,進(jìn)入目標(biāo)狀態(tài)。轉(zhuǎn)換用帶箭頭的直線表示,箭尾連接源狀態(tài)(轉(zhuǎn)出的狀態(tài)),箭頭連接目標(biāo)狀態(tài)(轉(zhuǎn)入的狀態(tài))。轉(zhuǎn)換關(guān)系到的內(nèi)容包括:源狀態(tài)、目標(biāo)狀態(tài)、外部事件、監(jiān)護(hù)條件和執(zhí)行的動(dòng)作。下圖描述了燒水器的狀態(tài)機(jī)圖。注意:用實(shí)線箭頭表示的轉(zhuǎn)換都是外部轉(zhuǎn)換。

燒水器的狀態(tài)機(jī)圖狀態(tài)機(jī)圖的表示轉(zhuǎn)換的表示燒水器的狀態(tài)機(jī)圖12轉(zhuǎn)換的五要素源狀態(tài):即受轉(zhuǎn)換影響的狀態(tài)目標(biāo)狀態(tài):當(dāng)轉(zhuǎn)換完成后對(duì)象的狀態(tài)觸發(fā)事件:用來(lái)為轉(zhuǎn)換定義一個(gè)事件,包括調(diào)用、改變、信號(hào)、時(shí)間四類事件監(jiān)護(hù)條件:布爾表達(dá)式,決定是否激活轉(zhuǎn)換、動(dòng)作:轉(zhuǎn)換激活時(shí)的操作12轉(zhuǎn)換的五要素狀態(tài)機(jī)圖的表示1.源狀態(tài)對(duì)于一個(gè)轉(zhuǎn)換來(lái)說(shuō),轉(zhuǎn)換前對(duì)象所處的狀態(tài),就是源狀態(tài)。源狀態(tài)是個(gè)相對(duì)的概念,即,相對(duì)當(dāng)前狀態(tài)而言,它的前一個(gè)狀態(tài)就是源狀態(tài)。2.目標(biāo)狀態(tài)轉(zhuǎn)換完成后,對(duì)象所處的狀態(tài)就是目標(biāo)狀態(tài)。當(dāng)前狀態(tài)相對(duì)它的前一個(gè)狀態(tài)而言,當(dāng)前狀態(tài)就是目標(biāo)狀態(tài)。源狀態(tài)和目標(biāo)狀態(tài)都是相對(duì)某個(gè)轉(zhuǎn)換而言的。狀態(tài)機(jī)圖的表示1.源狀態(tài)狀態(tài)機(jī)圖的表示3.事件事件就是外部作用于一個(gè)對(duì)象,能夠觸發(fā)對(duì)象狀態(tài)改變的一種現(xiàn)象。1).信號(hào)事件對(duì)象之間通過(guò)發(fā)送信號(hào)和接收信號(hào)實(shí)現(xiàn)通信。信號(hào)是一種異步機(jī)制。對(duì)于一個(gè)信號(hào)而言,對(duì)象一般都有相應(yīng)的事件處理器,如onMouseClick()。2).調(diào)用事件調(diào)用某個(gè)對(duì)象的成員方法就是調(diào)用事件,它是一種同步的機(jī)制。例如turnOn是一種調(diào)用事件,用來(lái)將開關(guān)置于“On”狀態(tài)。3).改變事件指某個(gè)指定屬性值為真時(shí),事件得到觸發(fā)。與監(jiān)護(hù)條件不同,在對(duì)象生命周期內(nèi),一直在計(jì)算改變事件中的屬性值,事件觸發(fā),計(jì)算停止。4).時(shí)間事件當(dāng)時(shí)間流逝到某個(gè)時(shí)刻,觸發(fā)事件對(duì)對(duì)象起作用。例如,after(12:00)),after(2seconds)),when(12:00)。5).延遲事件指對(duì)象處在在本狀態(tài)時(shí)外部事件產(chǎn)生了,但沒有執(zhí)行事件,要推遲到另外一個(gè)狀態(tài)才執(zhí)行的事件。狀態(tài)機(jī)圖的表示3.事件狀態(tài)機(jī)圖的表示4.監(jiān)護(hù)條件監(jiān)護(hù)條件是一個(gè)布爾表達(dá)式,當(dāng)布爾表達(dá)式的值為真時(shí),轉(zhuǎn)換才能夠完成。只有在觸發(fā)事件發(fā)生時(shí),才計(jì)算一次監(jiān)護(hù)條件的值,當(dāng)監(jiān)護(hù)條件的值為真時(shí),轉(zhuǎn)換才發(fā)生。如果轉(zhuǎn)換發(fā)生后,監(jiān)護(hù)條件才由假變?yōu)檎妫敲崔D(zhuǎn)換也不會(huì)被觸發(fā)。狀態(tài)機(jī)圖的表示4.監(jiān)護(hù)條件狀態(tài)機(jī)圖的表示5.動(dòng)作當(dāng)轉(zhuǎn)換被激活后,如果定義了相應(yīng)的動(dòng)作,那么就將執(zhí)行這個(gè)動(dòng)作。動(dòng)作可以是一個(gè)賦值語(yǔ)句、簡(jiǎn)單的算術(shù)運(yùn)算、發(fā)送信號(hào)、調(diào)用操作、創(chuàng)建和銷毀對(duì)象、讀取和設(shè)置屬性的值,甚至是一個(gè)包含多個(gè)動(dòng)作的活動(dòng)。例如,當(dāng)turnOn事件發(fā)生,就測(cè)試監(jiān)護(hù)條件[有水],如果有水,就會(huì)執(zhí)行“燒水”的動(dòng)作。動(dòng)作分為入口動(dòng)作和出口動(dòng)作。1).入口動(dòng)作入口動(dòng)作表示對(duì)象進(jìn)入某個(gè)狀態(tài)所要執(zhí)行的動(dòng)作。入口動(dòng)作用“entry/要執(zhí)行的動(dòng)作”表示。2).出口動(dòng)作出口動(dòng)作表示對(duì)象退出某個(gè)狀態(tài)所要執(zhí)行的動(dòng)作。出口動(dòng)作用“exit/要執(zhí)行的動(dòng)作”表示。狀態(tài)機(jī)圖的表示5.動(dòng)作狀態(tài)機(jī)圖的表示活動(dòng)當(dāng)對(duì)象處于一個(gè)狀態(tài)時(shí),它一般是空閑的,在等待一個(gè)事件的發(fā)生。但是某些時(shí)間,對(duì)象正在執(zhí)行一序列動(dòng)作,即,對(duì)象做著某些工作,并一直繼續(xù)到被某個(gè)外部事件的到來(lái),才中斷這些工作,我們把對(duì)象處于某個(gè)狀態(tài)時(shí)進(jìn)行的一序列動(dòng)作稱為活動(dòng)。如果對(duì)象處于某個(gè)狀態(tài)進(jìn)行一些動(dòng)作,可能會(huì)需要一些時(shí)間,我們可以用活動(dòng)來(lái)描述這一序列動(dòng)作。表示活動(dòng)的方法是,在狀態(tài)的轉(zhuǎn)換分欄中添加一行“活動(dòng)描述”,其格式為“do/動(dòng)作名”。活動(dòng)用來(lái)描述對(duì)象處于某個(gè)狀態(tài)時(shí),對(duì)象進(jìn)行的一序列動(dòng)作。狀態(tài)機(jī)圖的表示活動(dòng)狀態(tài)機(jī)圖的表示理解簡(jiǎn)單狀態(tài)機(jī)圖例如,描述一個(gè)燒水器在工作時(shí)的行為狀態(tài)變化。與狀態(tài)off相關(guān)的轉(zhuǎn)換有兩個(gè),其觸發(fā)事件都是turnOn,只不過(guò)其監(jiān)護(hù)條件不同。如果對(duì)象收到事件turnOn,那么將判斷壺中是否有水;如果[沒水],則仍然處于off狀態(tài);如果[有水]則轉(zhuǎn)為on狀態(tài),并執(zhí)行“燒水”動(dòng)作與狀態(tài)on相關(guān)的轉(zhuǎn)換也有兩個(gè),如果“水開了”就執(zhí)行turnOff動(dòng)作,關(guān)掉開關(guān);如果燒壞了,就進(jìn)入了終態(tài)了狀態(tài)機(jī)圖的表示理解簡(jiǎn)單狀態(tài)機(jī)圖狀態(tài)機(jī)圖的表示分支的表示對(duì)象在外部事件的作用下,根據(jù)監(jiān)護(hù)條件的不同值,轉(zhuǎn)向不同的目標(biāo)狀態(tài)。即,對(duì)象的狀態(tài)根據(jù)監(jiān)護(hù)條件的取值而發(fā)生分支。分支用空心小菱形表示。根據(jù)監(jiān)護(hù)條件的真假可以觸發(fā)不同的分支轉(zhuǎn)換。狀態(tài)機(jī)圖的表示分支的表示狀態(tài)機(jī)圖的表示轉(zhuǎn)換表示當(dāng)一個(gè)外部事件作用于對(duì)象,在監(jiān)護(hù)條件得到滿足時(shí),對(duì)象在源狀態(tài)下執(zhí)行一序列的動(dòng)作后,轉(zhuǎn)向目標(biāo)狀態(tài)。轉(zhuǎn)換進(jìn)入的狀態(tài)稱為活動(dòng)狀態(tài),轉(zhuǎn)換離開的狀態(tài)變變?yōu)榉腔顒?dòng)狀態(tài)。轉(zhuǎn)換通常分為:外部轉(zhuǎn)換內(nèi)部轉(zhuǎn)換自動(dòng)轉(zhuǎn)換復(fù)合轉(zhuǎn)換狀態(tài)機(jī)圖的表示轉(zhuǎn)換表示當(dāng)一個(gè)外部事件作用于對(duì)象,在監(jiān)護(hù)條件得轉(zhuǎn)換的分類1.外部轉(zhuǎn)換外部轉(zhuǎn)換是一種改變對(duì)象狀態(tài)的轉(zhuǎn)換,是最常見的一種轉(zhuǎn)換。外部轉(zhuǎn)換用從源狀態(tài)到目標(biāo)狀態(tài)的箭頭表示?;疖嚿闲l(wèi)生間的簡(jiǎn)單狀態(tài)轉(zhuǎn)換。該衛(wèi)生間存在三個(gè)狀態(tài),包含5個(gè)外部轉(zhuǎn)換。轉(zhuǎn)換的分類1.外部轉(zhuǎn)換轉(zhuǎn)換的分類2.內(nèi)部轉(zhuǎn)換內(nèi)部轉(zhuǎn)換有一個(gè)源狀態(tài)但是沒有目標(biāo)狀態(tài),它轉(zhuǎn)換后的狀態(tài)仍舊是它本身。內(nèi)部轉(zhuǎn)換自始至終都不離開源狀態(tài),所以沒有入口動(dòng)作和出口動(dòng)作。因此,當(dāng)對(duì)象處于某個(gè)狀態(tài),進(jìn)行的一些動(dòng)作時(shí),我們可以把這些動(dòng)作看成是內(nèi)部轉(zhuǎn)換。在第二欄,描述了入口動(dòng)作和出口動(dòng)作,也描述了內(nèi)部轉(zhuǎn)換,要注意的是,入口動(dòng)作和出口動(dòng)作描述的是外部轉(zhuǎn)換時(shí)發(fā)生的動(dòng)作;內(nèi)部轉(zhuǎn)換是描述本狀態(tài)沒有發(fā)生改變的情況下,發(fā)生的動(dòng)作。轉(zhuǎn)換的分類2.內(nèi)部轉(zhuǎn)換狀態(tài)的分類3.自動(dòng)轉(zhuǎn)換在沒有外部事件的作用下,對(duì)象執(zhí)行了某些活動(dòng)后,自然而然地完成的轉(zhuǎn)換。自轉(zhuǎn)換是離開某個(gè)狀態(tài)后重新進(jìn)入原先的狀態(tài),它會(huì)激發(fā)狀態(tài)的入口動(dòng)作和出口動(dòng)作的執(zhí)行。4.復(fù)合轉(zhuǎn)換復(fù)合轉(zhuǎn)換由簡(jiǎn)單轉(zhuǎn)換組成,通過(guò)分支判定,把多個(gè)簡(jiǎn)單轉(zhuǎn)換組合在一起。狀態(tài)的分類3.自動(dòng)轉(zhuǎn)換24轉(zhuǎn)換的區(qū)別內(nèi)部轉(zhuǎn)換和自轉(zhuǎn)換不同:自轉(zhuǎn)換是離開本狀態(tài)后重新進(jìn)入該狀態(tài),它會(huì)激發(fā)狀態(tài)的入口動(dòng)作和出口動(dòng)作的執(zhí)行。內(nèi)部轉(zhuǎn)換自始至終都不離開本狀態(tài),所以沒有出口或入口事件,也就不執(zhí)行入口和出口動(dòng)作。24轉(zhuǎn)換的區(qū)別內(nèi)部轉(zhuǎn)換和自轉(zhuǎn)換不同:25帶有復(fù)雜轉(zhuǎn)換的狀態(tài)機(jī)圖25帶有復(fù)雜轉(zhuǎn)換的狀態(tài)機(jī)圖26同步使用同步條可以顯示并發(fā)轉(zhuǎn)移,并發(fā)轉(zhuǎn)移中可以有多個(gè)源狀態(tài)和目標(biāo)狀態(tài)。并發(fā)轉(zhuǎn)移表示一個(gè)同步將一個(gè)控制劃分為并發(fā)的線程。狀態(tài)機(jī)圖中使用到同步條是為了說(shuō)明某些狀態(tài)在哪里需要跟上或者等待其他狀態(tài)。狀態(tài)機(jī)圖中同步條是一條黑色的粗線。2626同步使用同步條可以顯示并發(fā)轉(zhuǎn)移,并發(fā)轉(zhuǎn)移中可以有多個(gè)源狀狀態(tài)的分類狀態(tài)機(jī)圖中的狀態(tài)分為簡(jiǎn)單狀態(tài)和復(fù)合狀態(tài)2種。1簡(jiǎn)單狀態(tài)簡(jiǎn)單狀態(tài)是指不包含其他狀態(tài)的狀態(tài)。但是,簡(jiǎn)單狀態(tài)可以具有內(nèi)部轉(zhuǎn)換、入口動(dòng)作和出口動(dòng)作等。下圖只包含2個(gè)簡(jiǎn)單狀態(tài)。狀態(tài)的分類狀態(tài)機(jī)圖中的狀態(tài)分為簡(jiǎn)單狀態(tài)和復(fù)合狀態(tài)2種。狀態(tài)的分類2復(fù)合狀態(tài)復(fù)合狀態(tài)是指狀態(tài)本身包含一到多個(gè)子狀態(tài)機(jī)的狀態(tài)。復(fù)合狀態(tài)中包含的多個(gè)子狀態(tài)之間的關(guān)系有兩種:一種是并發(fā)關(guān)系,另一種是互斥關(guān)系。如果子狀態(tài)是并發(fā)關(guān)系,稱子狀態(tài)為并發(fā)子狀態(tài);如果子狀態(tài)是互斥關(guān)系,稱子狀態(tài)為順序子狀態(tài)。子狀態(tài)子狀態(tài)也可以有初態(tài)和終態(tài)狀態(tài)的分類2復(fù)合狀態(tài)子狀態(tài)子狀態(tài)也可以有初態(tài)和終態(tài)狀態(tài)的分類1.順序子狀態(tài)在任何時(shí)刻,當(dāng)復(fù)合狀態(tài)被激活時(shí),如果復(fù)合狀態(tài)包含的多個(gè)子狀態(tài)中,只能有一個(gè)子狀態(tài)處于活動(dòng)狀態(tài),即多個(gè)子狀態(tài)之間是互斥的,這種子狀態(tài)稱為順序子狀態(tài)。復(fù)合狀態(tài)的子狀態(tài)如果是順序子狀態(tài),在下圖中,IC卡電話“使用狀態(tài)”狀態(tài)是一個(gè)復(fù)合狀態(tài),包含5個(gè)子狀態(tài),因?yàn)镮C電話不能同時(shí)處于兩個(gè)不同的子狀態(tài)中,所以這些子狀態(tài)是順序子狀態(tài)。狀態(tài)的分類1.順序子狀態(tài)狀態(tài)的分類2.并發(fā)子狀態(tài)如果復(fù)合狀態(tài)包含兩個(gè)或者多個(gè)并發(fā)的子狀態(tài)機(jī),此時(shí)稱復(fù)合狀態(tài)的子狀態(tài)為并發(fā)子狀態(tài)??疾煲惠v處于“運(yùn)行”狀態(tài)的電動(dòng)車。車處在運(yùn)行狀態(tài)時(shí),包含了前進(jìn)和后退兩個(gè)不同的子狀態(tài),這兩個(gè)子狀態(tài)之間是順序子狀態(tài),因?yàn)橐惠v車不可能同時(shí)處于前進(jìn)和后退兩種子狀態(tài);另一方面,車的運(yùn)行狀態(tài)又包括高速行駛狀態(tài)和低速行駛狀態(tài)。前進(jìn)狀態(tài)可以同時(shí)為高速行駛或者低速行駛狀態(tài);后退狀態(tài)時(shí),也可以是高速行駛或者低速行駛狀態(tài),即,前進(jìn)狀態(tài)或后退狀態(tài)之一,可以與高速行駛狀態(tài)或低速行使?fàn)顟B(tài)之一同時(shí)存在。這些可以同時(shí)出現(xiàn)的狀態(tài)稱為并發(fā)子狀態(tài)。狀態(tài)的分類2.并發(fā)子狀態(tài)狀態(tài)的分類3.復(fù)合狀態(tài)表示法復(fù)合狀態(tài)的表示法有兩種。(1).將子狀態(tài)機(jī)嵌入表示狀態(tài)的圓角矩形中這種表示法是在表示狀態(tài)的圓角矩形中加入子狀態(tài)機(jī)的新分欄。(2).在圓角矩形中加入加分解指示符這種表示法是在表示狀態(tài)的圓角矩形中加入分解指示符的新分欄,其中,分解指示符表示子狀態(tài)機(jī),狀態(tài)的分類3.復(fù)合狀態(tài)表示法歷史狀態(tài)

歷史狀態(tài)當(dāng)狀態(tài)機(jī)通過(guò)轉(zhuǎn)換從某種狀態(tài)轉(zhuǎn)入復(fù)合狀態(tài)時(shí),被嵌套的子狀態(tài)機(jī)一般要從子狀態(tài)機(jī)的初始狀態(tài)開始執(zhí)行。但是有些情況下,當(dāng)離開一個(gè)復(fù)合狀態(tài),然后重新進(jìn)入復(fù)合狀態(tài)時(shí),并不希望從復(fù)合包含的子狀態(tài)機(jī)的初始狀態(tài)開始執(zhí)行,而是希望直接進(jìn)入上次離開復(fù)合狀態(tài)時(shí)的最后一個(gè)活動(dòng)子狀態(tài),最后一個(gè)活動(dòng)子狀態(tài)即稱為歷史狀態(tài)。每當(dāng)轉(zhuǎn)換到復(fù)合狀態(tài)的歷史狀態(tài)時(shí),對(duì)象的狀態(tài)便恢復(fù)到上次離開該復(fù)合狀態(tài)時(shí)的最后一個(gè)活動(dòng)子狀態(tài),并執(zhí)行入口動(dòng)作。歷史狀態(tài)歷史狀態(tài)歷史狀態(tài)一個(gè)MP3播放器對(duì)象的狀態(tài)機(jī)圖。,MP3播放器對(duì)象的復(fù)合狀態(tài)——“活動(dòng)”狀態(tài)包含4個(gè)嵌套子狀態(tài):“停止”、“播放”、“前進(jìn)”、“后退”狀態(tài),如果用戶按下了“暫?!卑粹o,活動(dòng)狀態(tài)被打斷而進(jìn)入暫停狀態(tài);當(dāng)用戶撤銷暫停,恢復(fù)播放器的活動(dòng)狀態(tài)時(shí),MP3播放器對(duì)象直接進(jìn)入歷史狀態(tài),此時(shí)將進(jìn)入播放器上一次離開活動(dòng)狀態(tài)時(shí)的子狀態(tài)。例如當(dāng)用戶在播放狀態(tài)按下暫停按鈕,當(dāng)恢復(fù)播放時(shí),播放器仍進(jìn)入播放狀態(tài)。歷史狀態(tài)一個(gè)MP3播放器對(duì)象的狀態(tài)機(jī)圖。,MP3播放器對(duì)象的34“當(dāng)從狀態(tài)“結(jié)賬”和“顯示購(gòu)物車”返回子狀態(tài)“顯示索引信息”時(shí),將進(jìn)入的是離開時(shí)的歷史狀態(tài)。也就是說(shuō),轉(zhuǎn)到購(gòu)物

車或結(jié)賬區(qū)之后,

再回到“瀏覽目錄”的

頁(yè)面時(shí),其中的內(nèi)容

是不變的,仍然保留

原來(lái)的信息。歷史狀態(tài)34“當(dāng)從狀態(tài)“結(jié)賬”和“顯示購(gòu)物車”返回子狀態(tài)“顯示索引信建立狀態(tài)機(jī)圖繪制狀態(tài)機(jī)圖的一般步驟是:1.尋找主要的狀態(tài),2.尋找外部事件,以便確定狀態(tài)之間的轉(zhuǎn)換3.詳細(xì)描述每個(gè)狀態(tài)和轉(zhuǎn)換4.把簡(jiǎn)單狀態(tài)機(jī)圖轉(zhuǎn)換為復(fù)合狀態(tài)機(jī)圖。建立狀態(tài)機(jī)圖繪制狀態(tài)機(jī)圖的一般步驟是:建立狀態(tài)機(jī)圖例子對(duì)于航班機(jī)票預(yù)訂系統(tǒng)而言,我們把飛機(jī)票看作一個(gè)整體,我們來(lái)看飛機(jī)票有哪幾種狀態(tài),以及有哪些事件觸發(fā)機(jī)票狀態(tài)的變化。1.確定狀態(tài)飛機(jī)票有以下4種狀態(tài):無(wú)預(yù)訂、部分預(yù)訂、預(yù)訂完、預(yù)訂關(guān)閉。(1)在剛確定飛行計(jì)劃時(shí),顯然時(shí)沒有任何預(yù)訂的,并且在顧客預(yù)訂機(jī)票之前都將處于這種“無(wú)預(yù)訂”狀態(tài)。(2)對(duì)于訂座而言,顯然有“部分預(yù)訂”和“預(yù)訂完”兩種狀態(tài)。(3)當(dāng)航班快要起飛時(shí),顯然要“預(yù)訂關(guān)閉”。建立狀態(tài)機(jī)圖例子對(duì)于航班機(jī)票預(yù)訂系統(tǒng)而言,我們把飛機(jī)票看作一建立狀態(tài)機(jī)圖例子2.尋找外部事件無(wú)論機(jī)票處于那種狀態(tài),可能有的外部事件有:(1)預(yù)訂():顧客預(yù)訂機(jī)票。(2)退訂():顧客退訂機(jī)票。(3)關(guān)閉():機(jī)票管理員關(guān)閉訂票系統(tǒng)。(4)

取消航班():飛機(jī)調(diào)度人員取消飛行計(jì)劃。3.我們已經(jīng)知道了機(jī)票的主要狀態(tài),也知道了改變機(jī)票狀態(tài)變化的外部事件?,F(xiàn)在我們分析狀態(tài)之間的轉(zhuǎn)換(這里指外部轉(zhuǎn)換)。即,確定當(dāng)機(jī)票處于這一狀態(tài)時(shí),哪些外部事件能真正改變機(jī)票狀態(tài),哪些事件對(duì)本狀態(tài)不起作用??梢圆捎帽砀竦姆绞絹?lái)進(jìn)行分析。建立狀態(tài)機(jī)圖例子2.尋找外部事件建立狀態(tài)機(jī)圖例子

確定狀態(tài)間的有效轉(zhuǎn)換,在此基礎(chǔ)上可以繪制出相應(yīng)的狀態(tài)機(jī)圖。源目標(biāo)無(wú)預(yù)訂部分預(yù)訂預(yù)訂完預(yù)訂關(guān)閉無(wú)預(yù)訂

預(yù)訂()不直接轉(zhuǎn)換關(guān)閉()部分預(yù)訂退訂()事件發(fā)生后,使預(yù)訂人=0

預(yù)訂(),無(wú)空座關(guān)閉()預(yù)訂完不直接轉(zhuǎn)換退訂()

關(guān)閉()預(yù)訂關(guān)閉無(wú)轉(zhuǎn)換無(wú)轉(zhuǎn)換無(wú)轉(zhuǎn)換

機(jī)票預(yù)訂系統(tǒng)的初步狀態(tài)機(jī)圖事件與狀態(tài)轉(zhuǎn)換建立狀態(tài)機(jī)圖例子確定狀態(tài)間的有效轉(zhuǎn)換,在此基礎(chǔ)上可以繪制建立狀態(tài)機(jī)圖例子詳細(xì)描述每個(gè)狀態(tài)和轉(zhuǎn)換前面已經(jīng)確定了各個(gè)狀態(tài)之間的外部轉(zhuǎn)換,為了詳細(xì)描述狀態(tài),我們給狀態(tài)添加內(nèi)部轉(zhuǎn)換、外部轉(zhuǎn)換時(shí)的進(jìn)入和退出動(dòng)作,以及相關(guān)的活動(dòng)等。例如,在這個(gè)例子中,還存在下一些內(nèi)部轉(zhuǎn)換和活動(dòng):1.機(jī)票處在“部分預(yù)訂”狀態(tài)時(shí),當(dāng)發(fā)生退訂事件時(shí),如果退訂數(shù)小于預(yù)訂數(shù),那么狀態(tài)不變;同樣的道理,當(dāng)發(fā)生預(yù)訂事件時(shí),如果預(yù)訂數(shù)小于空位數(shù),那么狀態(tài)也是不變的。2.從初態(tài)到“無(wú)預(yù)訂”狀態(tài)時(shí),我們要對(duì)機(jī)票數(shù)、預(yù)定數(shù)和空座位數(shù)進(jìn)行初始化活動(dòng)。3.當(dāng)預(yù)訂事件和取訂事件發(fā)生時(shí),都應(yīng)該更新預(yù)訂數(shù)和空位數(shù)的值。但由于座位總數(shù)是已知的,因此只要更新預(yù)訂數(shù)就可以了。通過(guò)上述分析,可以在狀態(tài)機(jī)圖上,為每個(gè)狀態(tài)添加詳細(xì)的動(dòng)作或活動(dòng)建立狀態(tài)機(jī)圖例子詳細(xì)描述每個(gè)狀態(tài)和轉(zhuǎn)換建立狀態(tài)機(jī)圖例子詳細(xì)描述后的狀態(tài)機(jī)圖建立狀態(tài)機(jī)圖例子詳細(xì)描述后的狀態(tài)機(jī)圖建立狀態(tài)機(jī)圖例子把簡(jiǎn)單狀態(tài)機(jī)圖轉(zhuǎn)換為復(fù)合狀態(tài)機(jī)圖為了便于理解狀態(tài)機(jī)圖,我們常把簡(jiǎn)單狀態(tài)機(jī)圖轉(zhuǎn)換為復(fù)合狀態(tài)機(jī)圖??梢詫o(wú)預(yù)定、部分預(yù)訂、預(yù)訂完三個(gè)狀態(tài)歸結(jié)為“預(yù)訂”狀態(tài),這樣就可以采用一個(gè)復(fù)合狀態(tài),即“預(yù)訂”狀態(tài)來(lái)表示該圖,建立狀態(tài)機(jī)圖例子把簡(jiǎn)單狀態(tài)機(jī)圖轉(zhuǎn)換為復(fù)合狀態(tài)機(jī)圖狀態(tài)機(jī)圖的應(yīng)用狀態(tài)機(jī)圖主要應(yīng)用有兩種:一是在對(duì)象生命周期內(nèi),對(duì)一個(gè)對(duì)象的整個(gè)活動(dòng)狀態(tài)建模;二是對(duì)反應(yīng)型對(duì)象的行為建模。1.對(duì)對(duì)象的生命周期建模使用狀態(tài)機(jī)最通常的目的是對(duì)對(duì)象的生命周期建模,即,描述對(duì)象在生命周期內(nèi),各種狀態(tài)以及在外部事件的作用下,狀態(tài)之間的轉(zhuǎn)換。交互圖建模是用來(lái)描述多個(gè)協(xié)作對(duì)象的行為;而狀態(tài)機(jī)是對(duì)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論