·狀態(tài)和狀態(tài)機(jī)狀態(tài)、狀態(tài)表示法及狀態(tài)機(jī) ·狀態(tài)是指在對(duì)象生命周期中滿足某些條件、執(zhí)行某些活動(dòng)或等待某些事件的一個(gè)條件和狀況 ·一個(gè)狀態(tài)通常包括名稱(chēng)、進(jìn)入/退出活動(dòng)、內(nèi)部轉(zhuǎn)換、子狀態(tài)和延遲事件等五個(gè)部分組成 ·狀態(tài)機(jī)是計(jì)算機(jī)科學(xué)理論的一部分,但UML中的狀態(tài)機(jī)模型主要是基于David Harel所做的擴(kuò)展,是用來(lái)展示狀態(tài)與狀態(tài)之間轉(zhuǎn)換的圖 ·如何閱讀狀態(tài)機(jī)圖閱讀最簡(jiǎn)單的狀態(tài)圖 ·最為核心的元素?zé)o外乎是兩個(gè):一個(gè)是用圓角矩形表示的狀態(tài)(初態(tài)和終態(tài)例外);另一個(gè)則是在狀態(tài)之間的、包含一些文字描述的有向箭頭線,這些箭頭線稱(chēng)為轉(zhuǎn)換 轉(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í)間四類(lèi)事件 ·監(jiān)護(hù)條件:布爾表達(dá)式,決定是否激活轉(zhuǎn)換、 ·動(dòng)作:轉(zhuǎn)換激活時(shí)的操作 讀圖小結(jié) ·與狀態(tài)off相關(guān)的轉(zhuǎn)換有兩個(gè),其觸發(fā)事件都是turnOn,只不過(guò)其監(jiān)護(hù)條件不同。如果對(duì)象收到事件turnOn,那么將判斷壺中是否有水;如果[沒(méi)水],則仍然處于off狀態(tài);如果[有水]則轉(zhuǎn)為on狀態(tài),并執(zhí)行“燒水”動(dòng)作 ·而與狀態(tài)on相關(guān)的轉(zhuǎn)換也有兩個(gè),如果“水開(kāi)了”就執(zhí)行turnOff,關(guān)掉開(kāi)關(guān);如果燒壞了,就進(jìn)入了終態(tài)了 復(fù)雜轉(zhuǎn)換
閱讀帶有復(fù)雜轉(zhuǎn)換的狀態(tài)圖 只有動(dòng)作描述,進(jìn)入和退出和操作方法寫(xiě)在了里面 各種轉(zhuǎn)換的區(qū)別 ·進(jìn)入和退出轉(zhuǎn)換:當(dāng)進(jìn)入一個(gè)狀態(tài)時(shí),執(zhí)行某個(gè)動(dòng)作;或當(dāng)退出某個(gè)狀態(tài)時(shí),執(zhí)行什么動(dòng)作。這時(shí)就可以使用進(jìn)入和退出轉(zhuǎn)換來(lái)表示 ·內(nèi)部轉(zhuǎn)換:用來(lái)處理一些不離開(kāi)該狀態(tài)的事件 活動(dòng)與延遲事件 ·活動(dòng):當(dāng)對(duì)象處于一個(gè)狀態(tài)時(shí),它一般是空閑的,在等待一個(gè)事件的發(fā)生。但是某些時(shí)間,你可能希望描述個(gè)正在進(jìn)行的活動(dòng)。在處于一個(gè)狀態(tài)的同時(shí),對(duì)象做著某些工作,并一直繼續(xù)到被某個(gè)事件中斷 ·延遲事件:延遲事件是一種特殊的事件,它是指該事件不會(huì)觸發(fā)狀態(tài)的轉(zhuǎn)換,當(dāng)對(duì)象處于該狀態(tài)時(shí)事件不會(huì)丟失,但會(huì)被延遲執(zhí)行。例如,當(dāng)E-mail程序中正在發(fā)送第一封郵件時(shí),用戶下達(dá)發(fā)送第二封郵件執(zhí)令就會(huì)被延遲,但第一封郵件發(fā)送完成后,這封郵件就會(huì)被發(fā)送。這種事件就屬于延遲事件 復(fù)合狀態(tài)表示法 順序復(fù)合狀態(tài)圖 監(jiān)護(hù)條件為“應(yīng)答音”,代表已連接。 并發(fā)復(fù)合狀態(tài)圖 三種評(píng)測(cè)方式 歷史 ·“一個(gè)圓圈中加上字母H”,是用來(lái)表示歷史狀態(tài)的。 它的含義是:當(dāng)從狀態(tài)“結(jié)賬”和“顯示購(gòu)物車(chē)”返回子狀態(tài)“顯示索引信息”時(shí),將進(jìn)入的是離開(kāi)時(shí)的歷史狀態(tài)。也就是說(shuō),轉(zhuǎn)到購(gòu)物車(chē)或結(jié)賬區(qū)之后,再回到“瀏覽目錄”的頁(yè)面時(shí),其中的內(nèi)容是不變的,仍然保留原來(lái)的信息。 子狀態(tài)機(jī) ·將子狀態(tài)機(jī)單獨(dú)定義,并對(duì)其進(jìn)行命名(通常以大寫(xiě)字母開(kāi)頭),然后在需要使用的地方來(lái)引用它 引用C狀態(tài)機(jī)
·如何繪制狀態(tài)機(jī)圖繪制狀態(tài)機(jī)圖 ·繪制狀態(tài)機(jī)圖的理想步驟是:尋找主要的狀態(tài),確定狀態(tài)之間的轉(zhuǎn)換,細(xì)化狀態(tài)內(nèi)的活動(dòng)與轉(zhuǎn)換,用復(fù)合狀態(tài)來(lái)展開(kāi)細(xì)節(jié) ·尋找主要狀態(tài):對(duì)于航班機(jī)票預(yù)訂系統(tǒng)而言,顯然包括的狀態(tài)主要有 ·確定狀態(tài)間轉(zhuǎn)換 表格橫向是轉(zhuǎn)出 表格縱向是轉(zhuǎn)入
·細(xì)化狀態(tài)內(nèi)的活動(dòng)與轉(zhuǎn)換 ·使用復(fù)合狀態(tài) ·狀態(tài)機(jī)圖應(yīng)用說(shuō)明·對(duì)對(duì)象生命周期建模:主要描述對(duì)象能夠響應(yīng)的事件、對(duì)這些事件的響以及過(guò)去對(duì)當(dāng)前行為的影響 ·對(duì)反應(yīng)型對(duì)象建模:這個(gè)對(duì)象可能處于的穩(wěn)定狀態(tài)、從一個(gè)狀態(tài)到另一個(gè)狀態(tài)之間的轉(zhuǎn)換所需的觸發(fā)事件,以及每個(gè)狀態(tài)改變時(shí)發(fā)生的動(dòng)作 ·狀態(tài)機(jī)圖既可以用來(lái)表示一個(gè)業(yè)務(wù)領(lǐng)域的知識(shí),也可以用來(lái)描述設(shè)計(jì)階段對(duì)象的狀態(tài)變遷 ·本章小結(jié)
·首先介紹了“狀態(tài)”的概念和UML表示法,然后引入了狀態(tài)機(jī)的概念 ·通過(guò)三個(gè)例子逐一說(shuō)明簡(jiǎn)單狀態(tài)機(jī)圖、包含復(fù)雜轉(zhuǎn)換的狀態(tài)機(jī)圖以及包含復(fù)合狀態(tài)的狀態(tài)機(jī)圖的閱讀方法 ·,緊接著通過(guò)一個(gè)航班機(jī)票預(yù)訂系統(tǒng)來(lái)闡述了狀態(tài)圖的繪制過(guò)程:確定狀態(tài),分析狀態(tài)間的轉(zhuǎn)換,細(xì)化活動(dòng)與內(nèi)部轉(zhuǎn)化,通過(guò)復(fù)合狀態(tài)來(lái)組織 ·簡(jiǎn)明地點(diǎn)出狀態(tài)圖的兩大功能:對(duì)對(duì)象的生命周期建模以及對(duì)反應(yīng)型對(duì)象的行為建模
內(nèi)容出自:UML 面向?qū)ο笤O(shè)計(jì)PPT |
|
來(lái)自: 知識(shí)池塘 > 《計(jì)算仿真》