版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、狀態(tài)機(jī)圖是系統(tǒng)分析的一種常用工具,用于描述系統(tǒng)的行為。 在一般的面向?qū)ο蠹夹g(shù)中狀態(tài)機(jī)圖又稱(chēng)為狀態(tài)遷移圖,它是有限狀態(tài)機(jī)圖的圖形表示,用于描述對(duì)象類(lèi)的一個(gè)對(duì)象在其生存期間的行為。 UML的狀態(tài)機(jī)圖主要用于建立對(duì)象類(lèi)或?qū)ο蟮膭?dòng)態(tài)行為模型,表現(xiàn)一個(gè)對(duì)象所經(jīng)歷的狀態(tài)序列,引起狀態(tài)或活動(dòng)轉(zhuǎn)移的事件,以及因狀態(tài)或活動(dòng)轉(zhuǎn)移而伴隨的動(dòng)作。 狀態(tài)機(jī)圖也可用于描述Use Case,以及全系統(tǒng)的動(dòng)態(tài)行為。 UML的狀態(tài)機(jī)圖的表示風(fēng)格是建立在David Harel狀態(tài)圖(StateChat)的基礎(chǔ)上的。,第10章 狀態(tài)機(jī)圖,Home,第10章 狀態(tài)機(jī)圖,10.1狀態(tài)機(jī)圖11410.2狀態(tài)機(jī)圖的應(yīng)用115,Home,在
2、計(jì)算機(jī)技術(shù)中,狀態(tài)機(jī)圖的概念和使用由來(lái)已久。 在程序設(shè)計(jì)語(yǔ)言的編譯技術(shù)中,用有限狀態(tài)機(jī)圖描述詞法分析過(guò)程; 在操作系統(tǒng)中,進(jìn)程調(diào)度、緩沖區(qū)調(diào)度等都可以采用狀態(tài)機(jī)圖描述(參見(jiàn)圖10.1 )。 UML用狀態(tài)機(jī)圖對(duì)系統(tǒng)的動(dòng)態(tài)特征建模。 UML定義狀態(tài)機(jī)圖是一個(gè)行為(Behavior),它說(shuō)明一個(gè)模型元素在其生命期間的狀態(tài)的序列,及其對(duì)事件的響應(yīng)。 狀態(tài)機(jī)圖表示一個(gè)模型元素在其生命期間的情況:從該模型元素的開(kāi)始狀態(tài)起,響應(yīng)事件,執(zhí)行某些動(dòng)作,引起轉(zhuǎn)移到新?tīng)顟B(tài),又在新?tīng)顟B(tài)下響應(yīng)事件,執(zhí)行動(dòng)作,引起轉(zhuǎn)移到另一個(gè)狀態(tài),如此繼續(xù),直到終結(jié)狀態(tài)。,10.1 狀態(tài)機(jī)圖,Home,例:UNIX操作系統(tǒng)中的進(jìn)程的生命
3、周期可用狀態(tài)機(jī)圖簡(jiǎn)略表示,如圖10.1所示。,10.1 狀態(tài)機(jī)圖,Home,圖10.1 UNIX進(jìn)程的狀態(tài)和轉(zhuǎn)移,狀態(tài)機(jī)圖由狀態(tài)、轉(zhuǎn)移、事件、活動(dòng)、動(dòng)作等組成。 狀態(tài)(State)表示一個(gè)模型元素在生存期的一種狀況,如滿足某些條件,進(jìn)行某些活動(dòng),或等待某些事件的出現(xiàn)等。一個(gè)狀態(tài)在一個(gè)有限的時(shí)間段內(nèi)存在。 轉(zhuǎn)移(Transition)表示一個(gè)模型元素的不同狀態(tài)之間的聯(lián)系。在事件的觸發(fā)下,一個(gè)狀態(tài)可以轉(zhuǎn)移到另一個(gè)狀態(tài)。 事件(Event)是一個(gè)有意義的出現(xiàn)(Occurrence)的說(shuō)明。該出現(xiàn)在某個(gè)時(shí)間和空間點(diǎn)發(fā)生,并且立即觸發(fā)一個(gè)狀態(tài)的轉(zhuǎn)移。 活動(dòng)(Activity)是在狀態(tài)機(jī)圖中進(jìn)行的一個(gè)非原
4、子的執(zhí)行,它由一系列的動(dòng)作組成。 動(dòng)作(Action)是一個(gè)可執(zhí)行的原子計(jì)算,它導(dǎo)致?tīng)顟B(tài)的變更或返回一個(gè)值。 狀態(tài)機(jī)圖用于對(duì)一個(gè)模型元素建立行為模型,該模型元素通常是一個(gè)對(duì)象類(lèi),也可以是一個(gè)Use Case,甚至整個(gè)系統(tǒng)。,10.1 狀態(tài)機(jī)圖,Home,在UML中狀態(tài)機(jī)圖可以用兩種方式可視化地表達(dá):狀態(tài)機(jī)圖和活動(dòng)圖。 狀態(tài)機(jī)圖(State Machine Diagram)著重于對(duì)一個(gè)模型元素的可能的狀態(tài)及其轉(zhuǎn)移建立模型?;顒?dòng)圖著重于對(duì)一個(gè)活動(dòng)到另一個(gè)活動(dòng)的控制流建立模型。 狀態(tài)機(jī)圖由表示狀態(tài)的節(jié)點(diǎn)和表示狀態(tài)之間的轉(zhuǎn)移的弧組成。 在狀態(tài)機(jī)圖中,若干個(gè)狀態(tài)節(jié)點(diǎn)由一條或多條轉(zhuǎn)移弧連接,狀態(tài)的轉(zhuǎn)移由事
5、件觸發(fā)。模型元素的行為模型化為在狀態(tài)機(jī)圖中的一個(gè)周游,在此周游中狀態(tài)機(jī)圖執(zhí)行一系列的動(dòng)作。 一個(gè)狀態(tài)機(jī)圖表現(xiàn)了一個(gè)對(duì)象(或模型元素)的生存史,顯示觸發(fā)狀態(tài)轉(zhuǎn)移的事件和因狀態(tài)改變而導(dǎo)致的動(dòng)作。,10.1 狀態(tài)機(jī)圖,Home,UML的狀態(tài)機(jī)圖的圖形元素有如下幾種: 1狀態(tài) 狀態(tài)用一個(gè)帶圓角的矩形框表示,框內(nèi)標(biāo)有狀態(tài)的名稱(chēng)和其他一些信息。 狀態(tài)圖標(biāo)可以進(jìn)一步劃分成3個(gè)分隔框:名稱(chēng)框、內(nèi)部轉(zhuǎn)移框和嵌套狀態(tài)機(jī)圖框,如圖10.2所示。 在名稱(chēng)框中標(biāo)出狀態(tài)的名稱(chēng)。 在內(nèi)部轉(zhuǎn)移框中規(guī)定動(dòng)作或活動(dòng)。,10.1 狀態(tài)機(jī)圖,Home,圖10.2 狀態(tài)的圖形表示,狀態(tài)可以是簡(jiǎn)單狀態(tài)或組合狀態(tài)。 包含有子狀態(tài)的狀態(tài)稱(chēng)為
6、組合狀態(tài)(Composite State)。 在一個(gè)組合狀態(tài)的嵌套狀態(tài)機(jī)圖的分隔框內(nèi)放置被嵌套的子狀態(tài)機(jī)圖。對(duì)于一個(gè)簡(jiǎn)單狀態(tài),嵌套狀態(tài)機(jī)圖分隔框可以缺省。,10.1 狀態(tài)機(jī)圖,Home,圖10.3 狀態(tài)轉(zhuǎn)移的圖形表示,2轉(zhuǎn)移 轉(zhuǎn)移用實(shí)箭線表示,箭尾連接出發(fā)狀態(tài),即源狀態(tài),箭頭連接到達(dá)狀態(tài),即目標(biāo)狀態(tài)。 在箭線上可以標(biāo)示與該轉(zhuǎn)移有關(guān)的選項(xiàng):事件、保安條件(Guard Condition)和動(dòng)作。 當(dāng)處于源狀態(tài)的對(duì)象接收到一個(gè)事件,并且保安條件得到滿足(如果有保安條件的話)時(shí),則執(zhí)行相應(yīng)的動(dòng)作,并從源狀態(tài)轉(zhuǎn)移到目標(biāo)狀態(tài)。如果在轉(zhuǎn)移箭線上不標(biāo)示觸發(fā)轉(zhuǎn)移的事件時(shí),則從源狀態(tài)轉(zhuǎn)移到目標(biāo)狀態(tài)是自動(dòng)進(jìn)行的。
7、 狀態(tài)轉(zhuǎn)移的圖形表示如圖10.3所示。,10.1 狀態(tài)機(jī)圖,Home,3初始狀態(tài)(Initial State) 初始狀態(tài)是模型元素的初始狀況,代表一個(gè)狀態(tài)機(jī)圖的起始點(diǎn),是一個(gè)偽狀態(tài)(Pseudo State)。 初始狀態(tài)用一個(gè)實(shí)心的圓表示。 4終結(jié)狀態(tài)(Final State) 終結(jié)狀態(tài)是模型元素的最后的狀態(tài),代表一個(gè)狀態(tài)機(jī)圖的終止點(diǎn),是一個(gè)偽狀態(tài)。 終結(jié)狀態(tài)用一個(gè)圓中套一個(gè)小實(shí)心圓表示。,10.1 狀態(tài)機(jī)圖,Home,5判定(Decision) 判定是在狀態(tài)機(jī)圖中的一個(gè)特定的位置,工作流(Work flow)在此按保安條件的取值而發(fā)生分支。 判定用空心小菱形表示。 一般,判定只有一個(gè)入轉(zhuǎn)移和
8、兩個(gè)出轉(zhuǎn)移,保安條件為布爾表達(dá)式。根據(jù)保安條件表達(dá)式的值為“真”或“假”,觸發(fā)不同的分支轉(zhuǎn)移。 判定也可以是有一個(gè)入轉(zhuǎn)移和多個(gè)出轉(zhuǎn)移。,10.1 狀態(tài)機(jī)圖,Home,6同步(Synchronization) 同步可視化地定義了并發(fā)工作流的分叉(Fork)與聯(lián)結(jié)(Join)。 分叉是一個(gè)源狀態(tài)分為兩個(gè)或兩個(gè)以上的目標(biāo)狀態(tài),聯(lián)結(jié)是兩個(gè)以上的源狀態(tài)連接為一個(gè)目標(biāo)狀態(tài)。 在分叉與聯(lián)結(jié)之間的工作流是并行執(zhí)行的。 同步在狀態(tài)機(jī)圖中用一條粗短實(shí)線表示,稱(chēng)為同步桿,如圖10.4所示。,10.1 狀態(tài)機(jī)圖,Home,圖10.4 控制的分叉和聯(lián)結(jié)的圖形表示,例:項(xiàng)目與資源管理系統(tǒng)PRMS的一個(gè)資源對(duì)象的狀態(tài)機(jī)圖,
9、如圖10.5所示。,10.1 狀態(tài)機(jī)圖,Home,圖10.5 項(xiàng)目與資源管理系統(tǒng)PRMS的一個(gè)資源狀態(tài)機(jī)圖,10.1 狀態(tài)機(jī)圖狀態(tài),Home,1 概述,2 組合狀態(tài),4 歷史狀態(tài),3 順序狀態(tài),從原則上說(shuō),對(duì)象屬性的任何一個(gè)值的組合就是一個(gè)狀態(tài),全部的狀態(tài)構(gòu)成一個(gè)對(duì)象的狀態(tài)空間。 并非這個(gè)狀態(tài)空間中的每一個(gè)狀態(tài)都是值得關(guān)注的。在對(duì)一個(gè)系統(tǒng)或?qū)ο蠼?dòng)態(tài)行為模型時(shí),最關(guān)心的是那些明顯影響行為的屬性和屬性值,以及由它們表達(dá)的狀態(tài)。 對(duì)確定對(duì)象的狀態(tài)有重要意義的屬性稱(chēng)為狀態(tài)屬性(State Attribute)。 在建立狀態(tài)機(jī)圖模型時(shí),需要正確地找出一個(gè)對(duì)象的全部狀態(tài)屬性,根據(jù)它們的值劃分對(duì)象狀態(tài)。
10、,Home,10.1 狀態(tài)機(jī)圖狀態(tài),在對(duì)一個(gè)對(duì)象(模型元素)的行為建模時(shí),所選擇的該對(duì)象(模型元素)的生存期中的狀態(tài)的數(shù)量是有限的。 對(duì)象(模型元素)處于每個(gè)狀態(tài)的持續(xù)時(shí)間也是有限的。當(dāng)發(fā)生某個(gè)事件,或完成了某個(gè)動(dòng)作或活動(dòng)的執(zhí)行,都會(huì)觸發(fā)狀態(tài)的轉(zhuǎn)移。 UML對(duì)一個(gè)狀態(tài)的描述包含以下信息:名字、入口動(dòng)作與出口動(dòng)作、內(nèi)部轉(zhuǎn)移、嵌套子狀態(tài)、延遲事件等。 例:一個(gè)狀態(tài)的示例,如圖10.6所示。,Home,10.1 狀態(tài)機(jī)圖狀態(tài),圖10.6 狀態(tài)圖標(biāo)示例,一個(gè)不含內(nèi)嵌套狀態(tài)的狀態(tài),稱(chēng)為簡(jiǎn)單狀態(tài)。 如果一個(gè)狀態(tài)內(nèi)嵌套了若干個(gè)狀態(tài),則稱(chēng)該狀態(tài)為超狀態(tài)(Superstate)或組合狀態(tài)(Composite S
11、tate),其中被嵌套的狀態(tài)稱(chēng)為子狀態(tài)(Substate)。子狀態(tài)本身仍然可以是一個(gè)組合狀態(tài)。 超狀態(tài)中的每一個(gè)被嵌套的狀態(tài)機(jī)圖所表示的子狀態(tài)機(jī)圖,都對(duì)應(yīng)于該超狀態(tài)內(nèi)的正在進(jìn)行的一個(gè)活動(dòng)。 子狀態(tài)機(jī)圖的所在區(qū)域必有自己的初始狀態(tài)和終結(jié)狀態(tài)。對(duì)組合狀態(tài)的一個(gè)入轉(zhuǎn)移代表對(duì)其子區(qū)域內(nèi)的初始狀態(tài)的入轉(zhuǎn)移;對(duì)子區(qū)域內(nèi)的終結(jié)狀態(tài)的轉(zhuǎn)移代表包含它的組合狀態(tài)的相應(yīng)活動(dòng)的完成。 注意,動(dòng)作(Action)與活動(dòng)(Activity)的含義是不同的。 動(dòng)作與轉(zhuǎn)移相關(guān),動(dòng)作是一組原子的可執(zhí)行語(yǔ)句,它調(diào)用某個(gè)操作,很快完成,不能被中斷。 活動(dòng)是動(dòng)作的非原子序列,有一定的運(yùn)行期限,活動(dòng)可能被某個(gè)事件中斷。,Home,10
12、.1 狀態(tài)機(jī)圖組合狀態(tài),例:一個(gè)表示網(wǎng)上商店處理送貨過(guò)程的狀態(tài)機(jī)圖,如圖10.7所示。它是一個(gè)帶有組合狀態(tài)的狀態(tài)機(jī)圖。,Home,10.1 狀態(tài)機(jī)圖組合狀態(tài),圖10.7 組合狀態(tài)機(jī)圖示例,組合狀態(tài)可以包含有順序子狀態(tài)或并發(fā)子狀態(tài)。 一個(gè)組合狀態(tài)從理論上說(shuō)可以嵌套任意層次,而外部組合狀態(tài)本身可以作為一個(gè)簡(jiǎn)單狀態(tài)來(lái)對(duì)待。 采用組合狀態(tài)可以簡(jiǎn)化對(duì)復(fù)雜行為的建模。 更為重要的是組合狀態(tài)清楚地表達(dá)了狀態(tài)的結(jié)構(gòu)關(guān)系,便于分清主次,分別對(duì)待。 如果狀態(tài)圖中的狀態(tài)比較多,若不采用組合狀態(tài),則轉(zhuǎn)移線的交叉現(xiàn)象會(huì)不可避免,圖面將凌亂不堪。 例如,圖10.8的送貨處理狀態(tài)機(jī)圖是圖10.7的另一個(gè)版本,其中沒(méi)有采用組
13、合狀態(tài)。在圖10.8的狀態(tài)機(jī)圖中出現(xiàn)了轉(zhuǎn)移線交叉。,Home,10.1 狀態(tài)機(jī)圖組合狀態(tài),例:未采用組合狀態(tài)表示的送貨處理狀態(tài)機(jī)圖,如圖10.8 所示。,Home,10.1 狀態(tài)機(jī)圖組合狀態(tài),圖10.8 送貨處理狀態(tài)機(jī)圖示例,順序狀態(tài)(Sequential State)又稱(chēng)為不相交狀態(tài)(Disjoint State),它們是一個(gè)一個(gè)順序轉(zhuǎn)移的,不是并發(fā)存在的。 順序狀態(tài)表現(xiàn)正常的順利的行為。 在行為過(guò)程中常會(huì)出現(xiàn)各種非正常的情況,為此,必然要為每一個(gè)狀態(tài)畫(huà)出一條表現(xiàn)非正常行為的轉(zhuǎn)移箭線 ,圖面將凌亂。 可以使用組合狀態(tài)和順序子狀態(tài)的概念解決此類(lèi)建模問(wèn)題。 例如,在圖10.9中,“活動(dòng)”狀態(tài)是一
14、個(gè)組合狀態(tài),“驗(yàn)卡”、“撥號(hào)”、“通話”、“掛斷”等狀態(tài)是它的順序子狀態(tài),它們構(gòu)成“活動(dòng)”狀態(tài)內(nèi)部的子狀態(tài)機(jī)圖。,Home,10.1 狀態(tài)機(jī)圖順序狀態(tài),例:順序狀態(tài)示例,如圖10.9所示。它是表示IC卡電話機(jī)工作的部分狀態(tài)機(jī)圖。,Home,10.1 狀態(tài)機(jī)圖順序狀態(tài),圖10.9 順序狀態(tài)示例,在一個(gè)組合狀態(tài)中所包含的一個(gè)由順序子狀態(tài)構(gòu)成的子狀態(tài)機(jī)圖中,必定有一個(gè)子初始狀態(tài)。每次進(jìn)入該組合狀態(tài),被嵌套的子狀態(tài)機(jī)圖從它的子初始狀態(tài)開(kāi)始運(yùn)作(除非直接轉(zhuǎn)移到特定的子狀態(tài))。 有的情況下,當(dāng)離開(kāi)一個(gè)組合狀態(tài)后,又重新進(jìn)入該組合狀態(tài),但是不希望從它的子初始狀態(tài)開(kāi)始運(yùn)作,而是直接進(jìn)入到上次離開(kāi)該組合狀態(tài)時(shí)的
15、最后一個(gè)子狀態(tài)。 歷史狀態(tài)(History State)代表上次離開(kāi)組合狀態(tài)時(shí)的最后一個(gè)活動(dòng)子狀態(tài)。 每當(dāng)轉(zhuǎn)移到組合狀態(tài)中的歷史狀態(tài)時(shí),對(duì)象便恢復(fù)上次離開(kāi)該組合狀態(tài)時(shí)的最后一個(gè)活動(dòng)子狀態(tài),并執(zhí)行入口動(dòng)作。 歷史狀態(tài)用一個(gè)含有字母“H”的小圓圈表示。 歷史狀態(tài)只是一個(gè)偽狀態(tài)(Pseudo State)的圖形標(biāo)記,只能作為一個(gè)組合狀態(tài)中的子狀態(tài),不能在頂層狀態(tài)機(jī)圖中使用。 歷史狀態(tài)可以有任意個(gè)從外部狀態(tài)來(lái)的入轉(zhuǎn)移,至多有一個(gè)無(wú)標(biāo)簽的出轉(zhuǎn)移,它進(jìn)入到一個(gè)子狀態(tài)機(jī)圖。,Home,10.1 狀態(tài)機(jī)圖歷史狀態(tài),例:歷史狀態(tài)示例,如圖10.10所示,它是表示一個(gè)影碟機(jī)對(duì)象工作的部分狀態(tài)機(jī)圖。,Home,10
16、.1 狀態(tài)機(jī)圖歷史狀態(tài),圖10.10 歷史狀態(tài)示例,轉(zhuǎn)移表示當(dāng)一個(gè)特定的事件發(fā)生或某些條件滿足時(shí),一個(gè)在源狀態(tài)下的對(duì)象將完成一些特定的動(dòng)作,一旦發(fā)生這種情況,就稱(chēng)該轉(zhuǎn)移被激發(fā)了(Firing),其結(jié)果是使得對(duì)象從源狀態(tài)轉(zhuǎn)移到另一個(gè)新的目標(biāo)狀態(tài)。 觸發(fā)狀態(tài)轉(zhuǎn)移的事件可以是:某個(gè)條件為真,一個(gè)信號(hào),或一個(gè)調(diào)用操作。 當(dāng)發(fā)生一個(gè)轉(zhuǎn)移時(shí),該轉(zhuǎn)移進(jìn)入的狀態(tài)為活動(dòng)狀態(tài)(Active State),它將執(zhí)行相應(yīng)的動(dòng)作。當(dāng)發(fā)生一個(gè)轉(zhuǎn)移離開(kāi)一個(gè)狀態(tài)時(shí),該狀態(tài)變成非活動(dòng)狀態(tài)(Inactive State)。 一個(gè)轉(zhuǎn)移包含五部分信息:源狀態(tài)、目標(biāo)狀態(tài)、事件、保安條件、動(dòng)作。 源狀態(tài)是發(fā)出轉(zhuǎn)移的狀態(tài),目標(biāo)狀態(tài)是轉(zhuǎn)移到
17、達(dá)的狀態(tài)。 事件、保安條件(簡(jiǎn)稱(chēng)條件)和動(dòng)作是一個(gè)轉(zhuǎn)移常要給出的3個(gè)選項(xiàng),其在轉(zhuǎn)移箭線上的標(biāo)識(shí)格式為: 事件 保安條件 / 動(dòng)作,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移,Home,1 事件,2 條件,4 轉(zhuǎn)移的類(lèi)型,3 動(dòng)作,事件是一個(gè)有意義的出現(xiàn)(Occurrence)的說(shuō)明,它位于特定的時(shí)間和空間點(diǎn)。 在狀態(tài)機(jī)圖中,事件是一個(gè)激勵(lì)的出現(xiàn),它定義一個(gè)觸發(fā)子(Trigger)觸發(fā)對(duì)象改變其狀態(tài)。 事件的描述格式如下: 事件名稱(chēng) 參數(shù)表 entry exit do when 布爾表達(dá)式 after 時(shí)間表達(dá)式 參數(shù)表 參數(shù)名1,參數(shù)名2,,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移事件,
18、事件的名稱(chēng)用一個(gè)字符串表示。事件名必須引用接受事件的對(duì)象類(lèi)中的一個(gè)操作或信號(hào)。 在事件名后跟的方括號(hào)中列出的是傳送給該事件的形式參數(shù)。形式參數(shù)表為選項(xiàng),可以缺省。 下面是一些事件的例子: entry / setEchoOff () / 入口事件 exit / setEchoOn () / 出口事件 do / checkChar / DO事件,執(zhí)行活動(dòng) help / verifyPsw.help() / 內(nèi)部轉(zhuǎn)移事件 when (temp120) / setTest / 改變事件 after (2 sec.) / send c.isAlive / 時(shí)間事件,發(fā)送信號(hào) setTest /defer
19、 / 延遲事件,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移事件,事件之一的信號(hào)常用對(duì)象類(lèi)圖形表示,但是必須加上構(gòu)造型,如圖10.11所示。 事件也可以只發(fā)生而不觸發(fā)對(duì)象的狀態(tài)轉(zhuǎn)移。在這種情況下,若事件不是被聲明為一個(gè)延遲事件,它必定被丟失。,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移事件,圖10.11 事件的圖形表示示例,事件的種類(lèi)有:入口事件、出口事件、DO事件、信號(hào)事件、調(diào)用事件、改變事件、時(shí)間事件等。 (1)入口事件(Entry Event) 入口事件表示一個(gè)入口動(dòng)作序列,用關(guān)鍵字“entry”說(shuō)明,它在進(jìn)入狀態(tài)時(shí)執(zhí)行。 入口事件的動(dòng)作是原子的,不能避開(kāi),而且先于任何內(nèi)部活動(dòng)或轉(zhuǎn)移。 入口事件可以不帶參數(shù)和
20、保安條件,因?yàn)樗请[式調(diào)用的。 在一個(gè)對(duì)象類(lèi)的高層狀態(tài)機(jī)圖中的入口事件可能有參數(shù)表,它對(duì)應(yīng)于該類(lèi)的一個(gè)對(duì)象在創(chuàng)建時(shí)所接收的變量。,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移事件,(2)出口事件(Exit Event) 出口事件表示一個(gè)出口動(dòng)作序列,用關(guān)鍵字“exit”說(shuō)明,它在退出狀態(tài)時(shí)執(zhí)行。 出口事件的動(dòng)作是原子的,不能避開(kāi),而且跟在任何內(nèi)部活動(dòng)之后,但先于任何出轉(zhuǎn)移。 出口事件可以不帶參數(shù)和保安條件,因?yàn)樗请[式調(diào)用的。 (3)DO事件(Do Event) DO事件表示對(duì)一個(gè)嵌套狀態(tài)機(jī)圖的調(diào)用,用關(guān)鍵字“do”說(shuō)明。 在入口動(dòng)作之后,被調(diào)用的嵌套狀態(tài)機(jī)圖從它的初始狀態(tài)開(kāi)始運(yùn)作,直到到達(dá)它的終結(jié)狀態(tài),
21、而后發(fā)生出口動(dòng)作。,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移事件,(4)調(diào)用事件(Call Event) 調(diào)用事件表示調(diào)用者對(duì)操作的請(qǐng)求,調(diào)用事件至少涉及兩個(gè)以上的對(duì)象,一個(gè)對(duì)象請(qǐng)求調(diào)用另一個(gè)對(duì)象的操作。 調(diào)用事件一般為同步調(diào)用,也可以是異步調(diào)用。如果調(diào)用者需等待操作的完成,則是同步調(diào)用,否則是異步調(diào)用。 調(diào)用事件的定義格式為: 事件名(參數(shù)列表) 參數(shù)的格式為: 參數(shù)名:類(lèi)型表達(dá)式 例:調(diào)用事件示例,如圖10.12 所示。,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移事件,圖10.12 調(diào)用事件示例,(5)信號(hào)事件(Signal Event) 在狀態(tài)機(jī)圖中,可以使用信號(hào)發(fā)送構(gòu)造型圖標(biāo)和信號(hào)接收構(gòu)造型圖標(biāo)表示信號(hào)
22、事件。 信號(hào)發(fā)送構(gòu)造型圖標(biāo)是一個(gè)矩形的一側(cè)為尖角,它代表一個(gè)信號(hào)的發(fā)送,其中含有發(fā)送子句。 信號(hào)接收構(gòu)造型圖標(biāo)是一個(gè)矩形的一側(cè)為凹角,它代表一個(gè)信號(hào)的接收,其中含有事件名稱(chēng)。 例:信號(hào)發(fā)送與接收的構(gòu)造型圖標(biāo),如圖10.13所示。它是一個(gè)微波爐工作的狀態(tài)機(jī)圖。,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移事件,圖10.13 信號(hào)發(fā)送與接收的構(gòu)造型圖標(biāo)示例,(6)改變事件(Change Event) 改變事件表示一個(gè)通知信息,通知某個(gè)條件已為“真”, 以觸發(fā)一個(gè)轉(zhuǎn)移。 改變事件用關(guān)鍵字“when”說(shuō)明,后面帶有括在圓括號(hào)中的布爾表達(dá)式,并且跟有動(dòng)作,意指當(dāng)該布爾表達(dá)式為真時(shí),執(zhí)行規(guī)定的動(dòng)作,引起狀態(tài)的轉(zhuǎn)移。
23、改變事件與保安條件不同。 保安條件在事件觸發(fā)時(shí)求值,而改變事件是在條件為真時(shí)被觸發(fā)。當(dāng)一個(gè)對(duì)象發(fā)生改變時(shí),二者連續(xù)被檢查。,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移事件,(7)時(shí)間事件(Time Event) 時(shí)間事件表示一個(gè)通知信息,通知自從進(jìn)入狀態(tài)以來(lái)某個(gè)時(shí)間期限已到,或者已經(jīng)到了某個(gè)特定的日期/時(shí)間,以觸發(fā)一個(gè)轉(zhuǎn)移。 時(shí)間事件用關(guān)鍵字“after”說(shuō)明,帶有括在圓括號(hào)中的時(shí)間表達(dá)式,并且后跟動(dòng)作。 例:時(shí)間事件與改變事件的示例,如圖10.14所示。,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移事件,圖10.14 時(shí)間事件與改變事件示例,(8)延遲事件(Deferred Event) 延遲事件是在本狀態(tài)不處理
24、、推遲或排隊(duì)等到另外一個(gè)狀態(tài)才處理的事件。 延遲事件需要在狀態(tài)的圖標(biāo)中列出延遲事件名,其后跟一個(gè)斜杠“/”和特定的動(dòng)作“defer”。 例:在圖10.6的狀態(tài)“鍵入口令”中的事件“setTest / defer”是一個(gè)延遲事件,說(shuō)明事件“setTest”(設(shè)置測(cè)試)在本狀態(tài)中不響應(yīng),推遲到另外一個(gè)狀態(tài)才處理。 在建立狀態(tài)機(jī)圖時(shí),將會(huì)發(fā)現(xiàn)許多事件,其中有些事件可以作為狀態(tài)轉(zhuǎn)移的事件觸發(fā)子;另一些事件意義不大,可以忽略;還有一些事件可以延遲到以后再起作用。,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移事件,條件(保安條件)是為觸發(fā)轉(zhuǎn)移必須滿足的條件。 一個(gè)狀態(tài)的轉(zhuǎn)移可能是自動(dòng)發(fā)生的,也可能是在滿足某個(gè)條件的情
25、況下發(fā)生的。當(dāng)轉(zhuǎn)移按照判定而分支時(shí),條件是判定的依據(jù)。 條件一般用一個(gè)布爾表達(dá)式表示,可能涉及到正在觸發(fā)的事件的參數(shù)和屬性。 在事件發(fā)生時(shí),一個(gè)條件對(duì)于一個(gè)轉(zhuǎn)移只求值一次。如果該轉(zhuǎn)移再次被觸發(fā),則該條件可以再次求值。 例:條件示例,如圖10.15所示。,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移條件,圖10.15 條件示例,動(dòng)作是一組可執(zhí)行語(yǔ)句或計(jì)算過(guò)程。一個(gè)動(dòng)作可以包括操作調(diào)用,創(chuàng)建或銷(xiāo)毀另一個(gè)對(duì)象,發(fā)送一個(gè)信號(hào)給另一個(gè)對(duì)象等。 動(dòng)作是原子的、不可被中斷的。 動(dòng)作可以有一個(gè)動(dòng)作表達(dá)式,它由用逗號(hào)分隔的動(dòng)作子句表構(gòu)成。 動(dòng)作子句的格式為: 動(dòng)作子句 返回表 := 操作名 變量表 動(dòng)作子句是一個(gè)調(diào)用動(dòng)作(
26、Call Action),它引起對(duì)一個(gè)操作的調(diào)用,當(dāng)轉(zhuǎn)移被觸發(fā)時(shí)執(zhí)行。 操作的返回值組成返回表,該值應(yīng)是隨后的操作的實(shí)在參數(shù)。,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移動(dòng)作,動(dòng)作的類(lèi)型有:入口動(dòng)作,出口動(dòng)作,調(diào)用動(dòng)作,延遲動(dòng)作,創(chuàng)建動(dòng)作,銷(xiāo)毀動(dòng)作,返回動(dòng)作,終止動(dòng)作,發(fā)送動(dòng)作,本地調(diào)用動(dòng)作,例外動(dòng)作等。 入口動(dòng)作和出口動(dòng)作是在內(nèi)部轉(zhuǎn)移框中規(guī)定的,當(dāng)進(jìn)入或離開(kāi)該狀態(tài)時(shí)執(zhí)行的動(dòng)作。 標(biāo)有關(guān)鍵字“defer”的動(dòng)作稱(chēng)為延遲動(dòng)作,用于延遲一個(gè)事件。 創(chuàng)建動(dòng)作創(chuàng)建一個(gè)對(duì)象類(lèi)的實(shí)例(對(duì)象),它沒(méi)有目標(biāo)對(duì)象。 銷(xiāo)毀動(dòng)作銷(xiāo)毀一個(gè)對(duì)象類(lèi)的實(shí)例(對(duì)象),它必須有目標(biāo)對(duì)象。 返回動(dòng)作返回一個(gè)值或值集給調(diào)用者。 終止動(dòng)作引起
27、對(duì)象的自析構(gòu)(Self-Destruction),即自動(dòng)銷(xiāo)毀,結(jié)束對(duì)象的生存。,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移動(dòng)作,發(fā)送動(dòng)作異步發(fā)送一個(gè)信號(hào)。發(fā)送動(dòng)作可用專(zhuān)門(mén)發(fā)送子句表示,其圖形形式如圖10.16所示。 發(fā)送動(dòng)作還可以利用信號(hào)發(fā)送與接收的構(gòu)造型圖標(biāo),如圖10.13 所示。 本地調(diào)用動(dòng)作調(diào)用本地的操作,不產(chǎn)生調(diào)用事件或信號(hào)事件。 例外動(dòng)作在發(fā)生運(yùn)行錯(cuò)誤時(shí)發(fā)出出錯(cuò)信號(hào)。,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移動(dòng)作,圖10.16 發(fā)送子句,轉(zhuǎn)移有多種類(lèi)型:自轉(zhuǎn)移、內(nèi)部轉(zhuǎn)移、自動(dòng)轉(zhuǎn)移、復(fù)合轉(zhuǎn)移等。 1自轉(zhuǎn)移(Self-Transition) 自轉(zhuǎn)移是指那些源狀態(tài)和目標(biāo)狀態(tài)是同一個(gè)狀態(tài)的轉(zhuǎn)移。 自轉(zhuǎn)移中有入
28、口事件和出口事件,分別調(diào)用狀態(tài)的入口和出口動(dòng)作。 例:在圖10.14中的“休閑” 狀態(tài)有一個(gè)自轉(zhuǎn)移。 2內(nèi)部轉(zhuǎn)移(Internal Transition) 內(nèi)部轉(zhuǎn)移是指執(zhí)行那些響應(yīng)事件的內(nèi)部動(dòng)作或活動(dòng),但是對(duì)象的狀態(tài)并不發(fā)生改變。 內(nèi)部轉(zhuǎn)移與自轉(zhuǎn)移不同。,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移的類(lèi)型,在狀態(tài)的內(nèi)部轉(zhuǎn)移中需給出內(nèi)部動(dòng)作列表,其格式為: 動(dòng)作標(biāo)簽 / 動(dòng)作表達(dá)式 動(dòng)作標(biāo)簽標(biāo)識(shí)調(diào)用該動(dòng)作的環(huán)境,動(dòng)作表達(dá)式規(guī)定動(dòng)作。 動(dòng)作表達(dá)式可以用擁有該動(dòng)作的實(shí)體的任何屬性和連接來(lái)構(gòu)成。動(dòng)作表達(dá)式和其前面的斜杠“/”可以缺省。 UML規(guī)定了一些專(zhuān)用的動(dòng)作標(biāo)簽,如:entry、exit、do、include
29、等。 動(dòng)作標(biāo)簽entry用于標(biāo)識(shí)入口動(dòng)作。 動(dòng)作標(biāo)簽exit用于標(biāo)識(shí)出口動(dòng)作。 動(dòng)作標(biāo)簽do用于標(biāo)識(shí)一個(gè)正在進(jìn)行的活動(dòng),即“do活動(dòng)”。 動(dòng)作標(biāo)簽“include”用于標(biāo)識(shí)一個(gè)子狀態(tài)機(jī)圖的引用。 除了這些專(zhuān)用的動(dòng)作標(biāo)簽以外,一個(gè)動(dòng)作標(biāo)簽用于標(biāo)識(shí)一個(gè)事件,它觸發(fā)后跟的動(dòng)作表達(dá)式。 這種事件稱(chēng)為內(nèi)部轉(zhuǎn)移,它的表示格式為: 事件名(參數(shù)表)保安條件 / 動(dòng)作,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移的類(lèi)型,3自動(dòng)轉(zhuǎn)移(Automatic Transition) 自動(dòng)轉(zhuǎn)移又稱(chēng)為完成轉(zhuǎn)移(Completion Transition)。 每個(gè)狀態(tài)都可能有一個(gè)不由事件觸發(fā)的轉(zhuǎn)移,它是根據(jù)該狀態(tài)內(nèi)的動(dòng)作完成而自動(dòng)觸發(fā)
30、的,這就是自動(dòng)轉(zhuǎn)移。 4復(fù)合轉(zhuǎn)移(Compound Transition) 復(fù)合轉(zhuǎn)移由簡(jiǎn)單轉(zhuǎn)移組成,這些簡(jiǎn)單轉(zhuǎn)移通過(guò)分支判定、分叉或聯(lián)結(jié)組合在一起。 轉(zhuǎn)移的分支如圖10.17所示。 在圖10.17中給出了轉(zhuǎn)移的分支的兩種表示方式,一個(gè)使用了菱形的判定圖標(biāo),一個(gè)沒(méi)有使用菱形的判定圖標(biāo),這兩種表示方式等價(jià)。 多條件的分支判定可以是鏈?zhǔn)降暮头擎準(zhǔn)降?,如圖10.18所示。 當(dāng)多個(gè)轉(zhuǎn)移同時(shí)被觸發(fā)時(shí)將發(fā)生轉(zhuǎn)移的沖突。此時(shí)需要用轉(zhuǎn)移的優(yōu)先級(jí)來(lái)解決。 子狀態(tài)的轉(zhuǎn)移的優(yōu)先級(jí)比包含它的超狀態(tài)的轉(zhuǎn)移優(yōu)先級(jí)高。,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移的類(lèi)型,Home,10.1 狀態(tài)機(jī)圖轉(zhuǎn)移的類(lèi)型,圖10.17 分支示例,圖
31、10.18 鏈?zhǔn)椒种Ш头擎準(zhǔn)椒种?10.1 狀態(tài)機(jī)圖并發(fā)狀態(tài)機(jī)圖,Home,1 并發(fā)子狀態(tài),2 同步,并發(fā)子狀態(tài)用于表示兩個(gè)或多個(gè)狀態(tài)機(jī)圖并行執(zhí)行的情況。 并發(fā)狀態(tài)機(jī)圖(Concurrent State Machine Diagram)用于描述一個(gè)對(duì)象在某個(gè)時(shí)刻有多個(gè)并發(fā)的子狀態(tài)機(jī)圖的情況,并發(fā)狀態(tài)機(jī)圖是這些子狀態(tài)機(jī)圖的組合。 并發(fā)狀態(tài)機(jī)圖中的子狀態(tài)機(jī)圖各自有自己的初始狀態(tài)和終結(jié)狀態(tài),它們的活動(dòng)并發(fā)進(jìn)行 。 并發(fā)狀態(tài)機(jī)圖適合描述一個(gè)對(duì)象有許多獨(dú)立行為的情況,可以把表達(dá)這些個(gè)別行為的狀態(tài)機(jī)圖組合在一起,構(gòu)成一個(gè)并發(fā)狀態(tài)機(jī)圖。 一個(gè)表示網(wǎng)上商店系統(tǒng)中的“訂貨”對(duì)象的并發(fā)狀態(tài)機(jī)圖,如圖10.19 所示。,Home,10.1 狀態(tài)機(jī)圖并發(fā)子狀態(tài),例:一個(gè)表示網(wǎng)上商店系統(tǒng)中的“訂貨”對(duì)象的并發(fā)狀態(tài)機(jī)圖,如圖10.19所示。,Home,10.1 狀態(tài)機(jī)圖并發(fā)子狀態(tài),圖10.19 并發(fā)狀態(tài)機(jī)圖示例,在并發(fā)狀態(tài)機(jī)圖中一個(gè)子狀態(tài)機(jī)圖中的子狀態(tài),常常需要與另一個(gè)子狀態(tài)機(jī)圖中的子狀態(tài)的行為同步。 同步狀態(tài)(Synch State)是一個(gè)偽狀態(tài),它和分叉、聯(lián)結(jié)一起表達(dá)兩個(gè)并發(fā)的子狀態(tài)機(jī)圖之間的同步,保證一個(gè)子狀態(tài)機(jī)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 標(biāo)準(zhǔn)廠房社會(huì)影響分析
- 2024吊頂施工合同范本
- 掃地機(jī)器人行業(yè)發(fā)展前景及市場(chǎng)動(dòng)態(tài)分析
- 立體栽培項(xiàng)目可行性分析報(bào)告
- 工業(yè)園區(qū)供水保障項(xiàng)目招商引資報(bào)告
- 糖尿病病人的護(hù)理計(jì)劃
- 項(xiàng)目工程經(jīng)理勞動(dòng)合同(3篇)
- 2025年中國(guó)汽車(chē)自動(dòng)駕駛行業(yè)政策、市場(chǎng)規(guī)模及投資前景研究報(bào)告(智研咨詢(xún)發(fā)布)
- 舞蹈編排與演出技巧培訓(xùn)
- 嬰幼兒游戲指導(dǎo)課件 第6章第2節(jié):嬰幼兒認(rèn)知游戲的組織與實(shí)施
- JJF 1659-2017PM2.5質(zhì)量濃度測(cè)量?jī)x校準(zhǔn)規(guī)范
- GB/T 40386-2021再生純鋁原料
- GB/T 3766-2001液壓系統(tǒng)通用技術(shù)條件
- GB/T 23114-2008竹編制品
- GB 30603-2014食品安全國(guó)家標(biāo)準(zhǔn)食品添加劑乙酸鈉
- 松下panasonic-視覺(jué)說(shuō)明書(shū)pv200培訓(xùn)
- 大學(xué)物理 電阻電路等效變換
- 國(guó)企職務(wù)犯罪預(yù)防課件
- 介入手術(shù)跟臺(tái)課件
- 《子路、曾皙、冉有、公西華侍坐》 課件46張
評(píng)論
0/150
提交評(píng)論