版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章狀態(tài)機(jī)圖主講:鄧琨教學(xué)重點(diǎn):
本章主要介紹狀態(tài)機(jī)和狀態(tài)機(jī)圖的基本概念和表示方法,并深入介紹狀態(tài)和轉(zhuǎn)移、并發(fā)狀態(tài)圖、狀態(tài)機(jī)圖的應(yīng)用。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(java程序設(shè)計(jì))7.1狀態(tài)機(jī)在程序設(shè)計(jì)語言的編譯技術(shù)中,用有限狀態(tài)機(jī)描述詞法分析過程。在操作系統(tǒng)中,進(jìn)程調(diào)度、緩沖區(qū)調(diào)度等都可以采用狀態(tài)機(jī)描述。UML用狀態(tài)機(jī)對(duì)系統(tǒng)的動(dòng)態(tài)特征建模。UML定義狀態(tài)機(jī)是一個(gè)行為(Behavior),它說明一個(gè)模型元素在其生命期間的狀態(tài)的序列,及其對(duì)事件的響應(yīng)。狀態(tài)機(jī)表示一個(gè)模型元素在其生命期間的情況。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.1狀態(tài)機(jī)例:UNIX操作系統(tǒng)中的進(jìn)程的生命周期可用狀態(tài)機(jī)簡(jiǎn)略表示。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.1狀態(tài)機(jī)狀態(tài)機(jī)由狀態(tài)、轉(zhuǎn)移、事件、活動(dòng)、動(dòng)作等組成。狀態(tài)(State)表示一個(gè)模型元素在生存期的一種狀況,如滿足某些條件、進(jìn)行某些活動(dòng)等。一個(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)的說明。該出現(xiàn)在某個(gè)時(shí)間和空間點(diǎn)發(fā)生,并且立即觸發(fā)一個(gè)狀態(tài)的轉(zhuǎn)移。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.1狀態(tài)機(jī)活動(dòng)(Activity)是在狀態(tài)機(jī)中進(jìn)行的一個(gè)非原子的執(zhí)行,它由一系列的動(dòng)作組成。動(dòng)作(Action)是一個(gè)可執(zhí)行的原子計(jì)算,它導(dǎo)致狀態(tài)的變更或返回一個(gè)值。狀態(tài)機(jī)用于對(duì)一個(gè)模型元素建立行為模型,該模型元素通常是一個(gè)對(duì)象類,也可以是一個(gè)UseCase,甚至整個(gè)系統(tǒng)。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.2狀態(tài)機(jī)圖在UML中狀態(tài)機(jī)可以用兩種方式可視化地表達(dá):狀態(tài)機(jī)圖和活動(dòng)圖。狀態(tài)機(jī)圖(StateMachineDiagram)著重于對(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)移的弧組成計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.2狀態(tài)機(jī)圖在狀態(tài)機(jī)圖中,若干個(gè)狀態(tài)節(jié)點(diǎn)由一條或多條轉(zhuǎn)移弧連接,狀態(tài)的轉(zhuǎn)移由事件觸發(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)作。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.2狀態(tài)機(jī)圖計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))UML的狀態(tài)機(jī)圖的圖形元素有如下幾種:
狀態(tài)
狀態(tài)用一個(gè)帶圓角的矩形框表示,框內(nèi)標(biāo)有狀態(tài)的名稱和其他一些信息。
狀態(tài)圖標(biāo)可以進(jìn)一步劃分成3個(gè)分隔框:名稱框、內(nèi)部轉(zhuǎn)移框和嵌套狀態(tài)機(jī)圖框,如圖7.2所示。
在名稱框中標(biāo)出狀態(tài)的名稱。在內(nèi)部轉(zhuǎn)移框中規(guī)定動(dòng)作或活動(dòng)。7.2狀態(tài)機(jī)圖狀態(tài)可以是簡(jiǎn)單狀態(tài)或組合狀態(tài)。包含有子狀態(tài)的狀態(tài)稱為組合狀態(tài)(CompositeState)。在一個(gè)組合狀態(tài)的嵌套狀態(tài)機(jī)圖的分隔框內(nèi)放置被嵌套的子狀態(tài)機(jī)圖。對(duì)于一個(gè)簡(jiǎn)單狀態(tài),嵌套狀態(tài)機(jī)圖分隔框可以缺省。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.2狀態(tài)機(jī)圖轉(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):事件、保安條件(GuardCondition)和動(dòng)作。如果在轉(zhuǎn)移箭線上不標(biāo)示觸發(fā)轉(zhuǎn)移的事件時(shí),則從源狀態(tài)轉(zhuǎn)移到目標(biāo)狀態(tài)是自動(dòng)進(jìn)行的。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.2狀態(tài)機(jī)圖初始狀態(tài)(InitialState)初始狀態(tài)是模型元素的初始狀況,代表一個(gè)狀態(tài)機(jī)圖的起始點(diǎn),是一個(gè)偽狀態(tài)(PseudoState)。初始狀態(tài)用一個(gè)實(shí)心的圓表示。終結(jié)狀態(tài)(FinalState)終結(jié)狀態(tài)是模型元素的最后的狀態(tài),代表一個(gè)狀態(tài)機(jī)圖的終止點(diǎn),是一個(gè)偽狀態(tài)。終結(jié)狀態(tài)用一個(gè)圓中套一個(gè)小實(shí)心圓表示。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.2狀態(tài)機(jī)圖判定(Decision)判定是在狀態(tài)機(jī)圖中的一個(gè)特定的位置,工作流(Workflow)在此按保安條件的取值而發(fā)生分支。判定用空心小菱形表示。一般,判定只有一個(gè)入轉(zhuǎn)移和兩個(gè)出轉(zhuǎn)移,保安條件為布爾表達(dá)式。根據(jù)保安條件表達(dá)式的值為“真”或“假”,觸發(fā)不同的分支轉(zhuǎn)移。判定也可以是有一個(gè)入轉(zhuǎn)移和多個(gè)出轉(zhuǎn)移。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.2狀態(tài)機(jī)圖同步(Synchronization)同步可視化地定義了并發(fā)工作流的分劈(Fork)與接合(Join)。分劈是一個(gè)源狀態(tài)分為兩個(gè)或兩個(gè)以上的目標(biāo)狀態(tài),接合是兩個(gè)以上的源狀態(tài)連接為一個(gè)目標(biāo)狀態(tài)。在分劈與接合之間的工作流是并行執(zhí)行的。同步在狀態(tài)機(jī)圖中用一條粗短實(shí)線表示,稱為同步桿。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.2狀態(tài)機(jī)圖例:項(xiàng)目與資源管理系統(tǒng)PRMS的一個(gè)資源對(duì)象的狀態(tài)機(jī)圖計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.3狀態(tài)從原則上說,對(duì)象屬性的任何一個(gè)值的組合就是一個(gè)狀態(tài),全部的狀態(tài)構(gòu)成一個(gè)對(duì)象的狀態(tài)空間。對(duì)確定對(duì)象的狀態(tài)有重要意義的屬性稱為狀態(tài)屬性(StateAttribute)。在建立狀態(tài)機(jī)模型時(shí),需要正確地找出一個(gè)對(duì)象的全部狀態(tài)屬性,根據(jù)它們的值劃分對(duì)象狀態(tài)。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.3狀態(tài)計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))在對(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)的示例。7.3狀態(tài)組合狀態(tài)一個(gè)不含內(nèi)嵌套狀態(tài)的狀態(tài),稱為簡(jiǎn)單狀態(tài)。如果一個(gè)狀態(tài)內(nèi)嵌套了若干個(gè)狀態(tài),則稱該狀態(tài)為超狀態(tài)(Superstate)或組合狀態(tài)(CompositeState)。超狀態(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)動(dòng)作與轉(zhuǎn)移相關(guān),動(dòng)作是一組原子的可執(zhí)行語句,它調(diào)用某個(gè)操作,很快完成,不能被中斷?;顒?dòng)是動(dòng)作的非原子序列,有一定的運(yùn)行期限,活動(dòng)可能被某個(gè)事件中斷。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.3狀態(tài)例:一個(gè)表示網(wǎng)上商店處理送貨過程的狀態(tài)機(jī)圖,如圖所示。它是一個(gè)帶有組合狀態(tài)的狀態(tài)機(jī)圖。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.3狀態(tài)組合狀態(tài)組合狀態(tài)可以包含有順序子狀態(tài)或并發(fā)子狀態(tài)。一個(gè)組合狀態(tài)從理論上說可以嵌套任意層次,而外部組合狀態(tài)本身可以作為一個(gè)簡(jiǎn)單狀態(tài)來對(duì)待。采用組合狀態(tài)可以簡(jiǎn)化對(duì)復(fù)雜行為的建模。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.3狀態(tài)例:未采用組合狀態(tài)表示的送貨處理狀態(tài)機(jī)圖,如圖所示。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.3狀態(tài)順序狀態(tài)順序狀態(tài)(SequentialState)又稱為不相交狀態(tài)(DisjointState),它們是一個(gè)一個(gè)順序轉(zhuǎn)移的,不是并發(fā)存在的。順序狀態(tài)表現(xiàn)正常的順利的行為??梢允褂媒M合狀態(tài)和順序子狀態(tài)的概念解決此類建模問題。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.3狀態(tài)例:順序狀態(tài)示例,如圖所示。它是表示IC卡電話機(jī)工作的部分狀態(tài)機(jī)圖。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.3狀態(tài)歷史狀態(tài)歷史狀態(tài)(HistoryState)代表上次離開組合狀態(tài)時(shí)的最后一個(gè)活動(dòng)子狀態(tài)。歷史狀態(tài)用一個(gè)含有字母“H”的小圓圈表示。歷史狀態(tài)只是一個(gè)偽狀態(tài)(PseudoState)的圖形標(biāo)記,只能作為一個(gè)組合狀態(tài)中的子狀態(tài),不能在頂層狀態(tài)機(jī)圖中使用。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.3狀態(tài)例:歷史狀態(tài)示例,如圖所示,它是表示一個(gè)影碟機(jī)對(duì)象工作的部分狀態(tài)機(jī)圖。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移轉(zhuǎn)移表示當(dāng)一個(gè)特定的事件發(fā)生或某些條件滿足時(shí),一個(gè)在源狀態(tài)下的對(duì)象將完成一些特定的動(dòng)作。觸發(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)(ActiveState),它將執(zhí)行相應(yīng)的動(dòng)作。當(dāng)發(fā)生一個(gè)轉(zhuǎn)移離開一個(gè)狀態(tài)時(shí),該狀態(tài)變成非活動(dòng)狀態(tài)(InactiveState)。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移一個(gè)轉(zhuǎn)移包含五部分信息:源狀態(tài)、目標(biāo)狀態(tài)、事件、保安條件、動(dòng)作。源狀態(tài)是發(fā)出轉(zhuǎn)移的狀態(tài),目標(biāo)狀態(tài)是轉(zhuǎn)移到達(dá)的狀態(tài)。事件、保安條件(簡(jiǎn)稱條件)和動(dòng)作是一個(gè)轉(zhuǎn)移常要給出的3個(gè)選項(xiàng),其在轉(zhuǎn)移箭線上的標(biāo)識(shí)格式為:事件[保安條件]/動(dòng)作計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移事件是一個(gè)有意義的出現(xiàn)(Occurrence)的說明,它位于特定的時(shí)間和空間點(diǎn)。在狀態(tài)機(jī)圖中,事件是一個(gè)激勵(lì)的出現(xiàn),它定義一個(gè)觸發(fā)子(Trigger)觸發(fā)對(duì)象改變其狀態(tài)。事件的描述格式如下:事件名稱[參數(shù)表]entryexitdowhen[布爾表達(dá)式]after[時(shí)間表達(dá)式]
參數(shù)表參數(shù)名1,參數(shù)名2,…計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移事件事件的名稱用一個(gè)字符串表示。事件名必須引用接受事件的對(duì)象類中的一個(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)移事件計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移事件事件之一的信號(hào)常用對(duì)象類圖形表示,但是必須加上構(gòu)造型<<signal>>。事件也可以只發(fā)生而不觸發(fā)對(duì)象的狀態(tài)轉(zhuǎn)移。在這種情況下,若事件不是被聲明為一個(gè)延遲事件,它必定被丟失。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移事件事件的種類有:入口事件、出口事件、DO事件、信號(hào)事件、調(diào)用事件、改變事件、時(shí)間事件等。入口事件表示一個(gè)入口動(dòng)作序列,用關(guān)鍵字“entry”說明,它在進(jìn)入狀態(tài)時(shí)執(zhí)行。入口事件可以不帶參數(shù)和保安條件,因?yàn)樗请[式調(diào)用的。入口事件的動(dòng)作是原子的,不能避開,而且先于任何內(nèi)部活動(dòng)或轉(zhuǎn)移。出口事件表示一個(gè)出口動(dòng)作序列,用關(guān)鍵字“exit”說明,它在退出狀態(tài)時(shí)執(zhí)行。出口事件可以不帶參數(shù)和保安條件,因?yàn)樗请[式調(diào)用的。入口事件和出口事件是原子的,不可避免。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移事件DO事件表示對(duì)一個(gè)嵌套狀態(tài)機(jī)的調(diào)用,用關(guān)鍵字“do”說明。調(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ù)名:類型表達(dá)式計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移事件在狀態(tài)機(jī)圖中,可以使用信號(hào)發(fā)送構(gòu)造型圖標(biāo)和信號(hào)接收構(gòu)造型圖標(biāo)表示信號(hào)事件。信號(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)的接收,其中含有事件名稱。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移事件改變事件表示一個(gè)通知信息,通知某個(gè)條件已為“真”,
以觸發(fā)一個(gè)轉(zhuǎn)移。改變事件用關(guān)鍵字“when”說明,后面帶有括在圓括號(hào)中的布爾表達(dá)式,并且跟有動(dòng)作,意指當(dāng)該布爾表達(dá)式為真時(shí),執(zhí)行規(guī)定的動(dòng)作,引起狀態(tài)的轉(zhuǎn)移。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移事件時(shí)間事件表示一個(gè)通知信息,通知自從進(jìn)入狀態(tài)以來某個(gè)時(shí)間期限已到,或者已經(jīng)到了某個(gè)特定的日期/時(shí)間,以觸發(fā)一個(gè)轉(zhuǎn)移。時(shí)間事件用關(guān)鍵字“after”說明,帶有括在圓括號(hào)中的時(shí)間表達(dá)式,并且后跟動(dòng)作。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移事件延遲事件是在本狀態(tài)不處理、推遲或排隊(duì)等到另外一個(gè)狀態(tài)才處理的事件。延遲事件需要在狀態(tài)的圖標(biāo)中列出延遲事件名,其后跟一個(gè)斜杠“/”和特定的動(dòng)作“defer”。在建立狀態(tài)機(jī)圖時(shí),將會(huì)發(fā)現(xiàn)許多事件,其中有些事件可以作為狀態(tài)轉(zhuǎn)移的事件觸發(fā)子;另一些事件意義不大,可以忽略;還有一些事件可以延遲到以后再起作用。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移條件條件(保安條件)是為觸發(fā)轉(zhuǎn)移必須滿足的條件。一個(gè)狀態(tài)的轉(zhuǎn)移可能是自動(dòng)發(fā)生的,也可能是在滿足某個(gè)條件的情況下發(fā)生的。當(dāng)轉(zhuǎn)移按照判定而分支時(shí),條件是判定的依據(jù)。條件一般用一個(gè)布爾表達(dá)式表示,可能涉及到正在觸發(fā)的事件的參數(shù)和屬性。在事件發(fā)生時(shí),一個(gè)條件對(duì)于一個(gè)轉(zhuǎn)移只求值一次。如果該轉(zhuǎn)移再次被觸發(fā),則該條件可以再次求值。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移動(dòng)作動(dòng)作是一組可執(zhí)行語句或計(jì)算過程。一個(gè)動(dòng)作可以包括操作調(diào)用,創(chuàng)建或銷毀另一個(gè)對(duì)象,發(fā)送一個(gè)信號(hào)給另一個(gè)對(duì)象等。動(dòng)作可以有一個(gè)動(dòng)作表達(dá)式,它由用逗號(hào)分隔的動(dòng)作子句表構(gòu)成。動(dòng)作子句的格式為:動(dòng)作子句返回表:=操作名[變量表]動(dòng)作子句是一個(gè)調(diào)用動(dòng)作(CallAction),它引起對(duì)一個(gè)操作的調(diào)用,當(dāng)轉(zhuǎn)移被觸發(fā)時(shí)執(zhí)行。操作的返回值組成返回表,該值應(yīng)是隨后的操作的實(shí)在參數(shù)。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移動(dòng)作動(dòng)作的類型有:入口動(dòng)作,出口動(dòng)作,調(diào)用動(dòng)作,延遲動(dòng)作,創(chuàng)建動(dòng)作,銷毀動(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)入或離開該狀態(tài)時(shí)執(zhí)行的動(dòng)作。標(biāo)有關(guān)鍵字“defer”的動(dòng)作稱為延遲動(dòng)作,用于延遲一個(gè)事件。返回動(dòng)作返回一個(gè)值或值集給調(diào)用者。終止動(dòng)作引起對(duì)象的自析構(gòu)(Self-Destruction),即自動(dòng)銷毀,結(jié)束對(duì)象的生存。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))發(fā)送動(dòng)作異步發(fā)送一個(gè)信號(hào)。發(fā)送動(dòng)作可用專門發(fā)送子句表示,其圖形形式如圖所示。發(fā)送動(dòng)作還可以利用信號(hào)發(fā)送與接收的構(gòu)造型圖標(biāo),如圖所示。本地調(diào)用動(dòng)作調(diào)用本地的操作,不產(chǎn)生調(diào)用事件或信號(hào)事件。例外動(dòng)作在發(fā)生運(yùn)行錯(cuò)誤時(shí)發(fā)出出錯(cuò)信號(hào)。7.4轉(zhuǎn)移轉(zhuǎn)移的類型轉(zhuǎn)移有多種類型:自轉(zhuǎn)移、內(nèi)部轉(zhuǎn)移、自動(dòng)轉(zhuǎn)移、復(fù)合轉(zhuǎn)移等。自轉(zhuǎn)移是指那些源狀態(tài)和目標(biāo)狀態(tài)是同一個(gè)狀態(tài)的轉(zhuǎn)移。自轉(zhuǎn)移中有入口事件和出口事件,分別調(diào)用狀態(tài)的入口和出口動(dòng)作。內(nèi)部轉(zhuǎn)移是指執(zhí)行那些響應(yīng)事件的內(nèi)部動(dòng)作或活動(dòng),但是對(duì)象的狀態(tài)并不發(fā)生改變。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移轉(zhuǎn)移的類型在狀態(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í)體的任何屬性和連接來構(gòu)成。動(dòng)作表達(dá)式和其前面的斜杠“/”可以缺省。UML規(guī)定了一些專用的動(dòng)作標(biāo)簽,如:entry、exit、do、include等。除了這些專用的動(dòng)作標(biāo)簽以外,一個(gè)動(dòng)作標(biāo)簽用于標(biāo)識(shí)一個(gè)事件,它觸發(fā)后跟的動(dòng)作表達(dá)式。這種事件稱為內(nèi)部轉(zhuǎn)移,它的表示格式為:事件名(參數(shù)表)[保安條件]/動(dòng)作計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移轉(zhuǎn)移的類型自動(dòng)轉(zhuǎn)移又稱為完成轉(zhuǎn)移(CompletionTransition)。每個(gè)狀態(tài)都可能有一個(gè)不由事件觸發(fā)的轉(zhuǎn)移,它是根據(jù)該狀態(tài)內(nèi)的動(dòng)作完成而自動(dòng)觸發(fā)的,這就是自動(dòng)轉(zhuǎn)移。復(fù)合轉(zhuǎn)移由簡(jiǎn)單轉(zhuǎn)移組成,這些簡(jiǎn)單轉(zhuǎn)移通過分支判定、分叉或接合組合在一起。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.4轉(zhuǎn)移計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.5并發(fā)狀態(tài)機(jī)圖并發(fā)子狀態(tài)并發(fā)子狀態(tài)用于表示兩個(gè)或多個(gè)狀態(tài)機(jī)并行執(zhí)行的情況。并發(fā)狀態(tài)機(jī)圖(ConcurrentStateMachineDiagram)用于描述一個(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ī)圖。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.5并發(fā)狀態(tài)機(jī)圖例:一個(gè)表示網(wǎng)上商店系統(tǒng)中的“訂貨”對(duì)象的并發(fā)狀態(tài)機(jī)圖。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.5并發(fā)狀態(tài)機(jī)圖同步在并發(fā)狀態(tài)機(jī)圖中一個(gè)子狀態(tài)機(jī)圖中的子狀態(tài),常常需要與另一個(gè)子狀態(tài)機(jī)圖中的子狀態(tài)的行為同步。同步狀態(tài)(SynchState)是一個(gè)偽狀態(tài),它和分劈、接合一起表達(dá)兩個(gè)并發(fā)的子狀態(tài)機(jī)之間的同步,保證一個(gè)子狀態(tài)機(jī)在另一個(gè)子狀態(tài)機(jī)進(jìn)入某個(gè)特定的狀態(tài)之前離開某個(gè)(某些)狀態(tài)。同步狀態(tài)用一個(gè)含星號(hào)“*”的小圓表示,同步狀態(tài)的小圓圖標(biāo)放在分隔子狀態(tài)機(jī)的虛線上。在小圓中也可以含一個(gè)正整數(shù),表示同步狀態(tài)的出轉(zhuǎn)移的上界。計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UML系統(tǒng)分析與設(shè)計(jì))7.5并發(fā)狀態(tài)機(jī)圖計(jì)算機(jī)應(yīng)用技術(shù)系教師專用(UM
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年數(shù)控銑床項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模范
- 2024-2025學(xué)年宣城市寧國(guó)市三上數(shù)學(xué)期末監(jiān)測(cè)試題含解析
- 2025年醫(yī)用植入材料項(xiàng)目提案報(bào)告模范
- 2025年掃瞄隧道顯微鏡項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模稿
- 二年級(jí)上冊(cè)語文教學(xué)計(jì)劃集合5篇
- ??粕舐毿藕霞?篇
- 銷售主管個(gè)人述職報(bào)告
- 教育的實(shí)習(xí)報(bào)告范文九篇
- 員工離職報(bào)告(匯編15篇)
- 《觀察物體(二)》教學(xué)實(shí)錄-2023-2024學(xué)年四年級(jí)下冊(cè)數(shù)學(xué)人教版
- 山西師范大學(xué)計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)期末沖刺卷及答案
- 《3-6歲兒童學(xué)習(xí)與發(fā)展指南》考試參考題庫(kù)120題(含答案)
- 鼻炎疾病知識(shí)培訓(xùn)課件
- 工程圖學(xué)(吉林聯(lián)盟)智慧樹知到期末考試答案2024年
- 中華民族一家親同心共筑中國(guó)夢(mèng)
- 天津市部分區(qū)2022-2023學(xué)年七年級(jí)上學(xué)期期末語文試題(含答案)
- 膿毒血癥病例查房
- 餐廳創(chuàng)新改革方案課件
- 消防設(shè)施操作員培訓(xùn)方案
- 《社會(huì)歷史的決定性基礎(chǔ)》共171張高中語文選擇性必修中冊(cè)
- 養(yǎng)老培訓(xùn)市場(chǎng)分析報(bào)告
評(píng)論
0/150
提交評(píng)論