zhjr-第八章狀態(tài)圖_第1頁
zhjr-第八章狀態(tài)圖_第2頁
zhjr-第八章狀態(tài)圖_第3頁
zhjr-第八章狀態(tài)圖_第4頁
zhjr-第八章狀態(tài)圖_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

授課:張金榮Email:zhjr2000@163.com

zhjr@QQ:zhjr@(即1211460305)電話:13983103704107030803、04班《統(tǒng)一建模語言與建模工具》教學(xué)要求狀態(tài)圖概念、定義、作用狀態(tài)及其表示法、狀態(tài)圖的標(biāo)記符狀態(tài)轉(zhuǎn)換、事件、條件的概念掌握狀態(tài)圖的閱讀和繪制方法。重點:狀態(tài)圖的基本概念和元素難點:復(fù)合狀態(tài)圖的表達第

8

章狀態(tài)圖2目錄8.1狀態(tài)圖的基礎(chǔ)知識8.2狀態(tài)圖組成8.2.1狀態(tài)、狀態(tài)表示法包括名稱、入口/出口動作、內(nèi)部轉(zhuǎn)換、子狀態(tài)(嵌套狀態(tài))和延遲事件等五個部分8.2.2初始狀態(tài)(initialstate)8.2.3終止?fàn)顟B(tài)(finalstate)8.2.4轉(zhuǎn)換和轉(zhuǎn)換的五要素8.2.5判定與復(fù)合轉(zhuǎn)換8.2.6狀態(tài)嵌套和歷史狀態(tài)8.3并發(fā)狀態(tài)圖(不做要求)8.4狀態(tài)圖設(shè)計實例8.5繪制狀態(tài)機圖38.1狀態(tài)圖的基礎(chǔ)知識1.狀態(tài)機狀態(tài)機是一種記錄下給定時刻狀態(tài)的設(shè)備,它可以根據(jù)各種不同的輸入對每個給定的變化而改變其狀態(tài)或引發(fā)一個動作,如計算機、各種客戶端軟件、Web上的各種交互頁面都是狀態(tài)機。在UML中狀態(tài)機由對象的各個狀態(tài)和連接這些狀態(tài)的轉(zhuǎn)換組成,是展示狀態(tài)與狀態(tài)轉(zhuǎn)換的圖。在面向?qū)ο蟮能浖到y(tǒng)中,一個對象無論多么簡單或者多么復(fù)雜,都必然會經(jīng)歷一個從開始創(chuàng)建到最終消亡的完整過程,這個過程通常被稱為對象的生命周期。一般說來,對象在其生命周期內(nèi)是不可能完全孤立的,它必然會接受消息來改變自身或者發(fā)送消息來影響其他對象。而狀態(tài)機就是用于說明對象在其生命周期中響應(yīng)事件所經(jīng)歷的狀態(tài)序列以及對這些事件的響應(yīng)。在狀態(tài)機的語境中,一個事件就是一次激發(fā)的產(chǎn)生,每個激發(fā)都可以觸發(fā)一個狀態(tài)轉(zhuǎn)換。48.1狀態(tài)圖的基礎(chǔ)知識2.狀態(tài)圖定義:狀態(tài)圖是眾多開發(fā)人員都十分熟悉甚至經(jīng)常使用的工具,它描述了一個特定對象的所有可能狀態(tài)以及由于各種事件的發(fā)生而引起的狀態(tài)之間的轉(zhuǎn)移。大多數(shù)面向?qū)ο蠹夹g(shù)都使用狀態(tài)圖來描述一個對象在其生命周期中的行為,尤其是通過給單個類繪制狀態(tài)圖以表該類單個對象的生存期行為。對象從產(chǎn)生到結(jié)束,可以處于一系列不同的狀態(tài)。狀態(tài)影響對象的行為,當(dāng)這些狀態(tài)的數(shù)目有限時,就可以用狀態(tài)圖來為對象的行為建模,顯示其生命的整個進程。狀態(tài)圖把系統(tǒng)或?qū)ο笏?jīng)歷的狀態(tài)以及導(dǎo)致狀態(tài)轉(zhuǎn)變的事件以圖的方式顯示出來。53.在畫對象的狀態(tài)圖時,需要考慮以下因素:1)對象有哪些有意義的狀態(tài)。2)如何決定對象的可能狀態(tài)。3)對象的狀態(tài)圖和其他模型之間如何進行映射。68.2狀態(tài)圖組成在UML中狀態(tài)圖由表示狀態(tài)的節(jié)點和表示狀態(tài)之間轉(zhuǎn)換的帶箭頭的直線組成。狀態(tài)的轉(zhuǎn)換由事件觸發(fā),狀態(tài)和狀態(tài)之間由轉(zhuǎn)換箭頭連接。每一個狀態(tài)圖都有一初始狀態(tài)(實心圓),用來表示狀態(tài)機的開始,還有一個終止?fàn)顟B(tài)(半實心圓),用來表示狀態(tài)機的終止。一個簡單的狀態(tài)圖如下圖所示。7一個簡單的狀態(tài)圖最為核心的元素?zé)o外乎是兩個:一個是用圓角矩形表示的狀態(tài)(初態(tài)和終態(tài)例外);另一個則是在狀態(tài)之間的、包含一些文字描述的有向箭頭線,這些箭頭線稱為轉(zhuǎn)換。8狀態(tài)圖的基本符號

基本狀態(tài)圖主要由元素狀態(tài)、轉(zhuǎn)換、初始狀態(tài)、終止?fàn)顟B(tài)等組成98.2.1狀態(tài)、狀態(tài)表示法狀態(tài)是指在對象生命周期中滿足某些條件、執(zhí)行某些活動或等待某些事件的一個條件和狀況一個狀態(tài)通常包括名稱、入口/出口動作、內(nèi)部轉(zhuǎn)換、子狀態(tài)(嵌套狀態(tài))和延遲事件等五個部分組成101.狀態(tài)名

狀態(tài)名指的是狀態(tài)的名字,通常用字符串表示,其中每個單詞的首字母大寫。狀態(tài)名可以包含任意數(shù)量的字母、數(shù)字和除冒號“:”以外的一些符號,可以較長,連續(xù)幾行。但是一定要注意一個狀態(tài)的名稱在狀態(tài)圖所在的上下文中應(yīng)該是惟一的,能夠把該狀態(tài)和其他狀態(tài)區(qū)分開。112.入口和出口動作

一個狀態(tài)可以有或者沒有入口和出口動作。入口和出口動作分別指的是進入和退出一個狀態(tài)時所執(zhí)行的“邊界”動作。這些動作的目的是封裝這個狀態(tài),這樣就可以不必知道狀態(tài)的內(nèi)部狀態(tài)而在外部使用它。入口動作:【用entry/動作】表示出口動作:【exit/動作】表示123.內(nèi)部活動(inneractivity)狀態(tài)可以包含表達式的內(nèi)部活動?!綿o/活動】表示當(dāng)狀態(tài)進入時活動在進入動作完成后就開始。如果活動結(jié)束,狀態(tài)就完成,執(zhí)行出口動作,然后一個從這個狀態(tài)出發(fā)的轉(zhuǎn)換被觸發(fā),否則狀態(tài)等待觸發(fā)轉(zhuǎn)換以引起狀態(tài)本身的改變。如果在活動正在執(zhí)行時轉(zhuǎn)換觸發(fā),那么活動被迫結(jié)束并且退出動作被執(zhí)行。134.內(nèi)部轉(zhuǎn)換

內(nèi)部轉(zhuǎn)換指的是不導(dǎo)致狀態(tài)改變的轉(zhuǎn)換。跟外部轉(zhuǎn)換形式是一樣的。內(nèi)部轉(zhuǎn)換事件動作監(jiān)護條件145.延遲事件延遲事件是一種特殊的事件,它是指該事件不會觸發(fā)狀態(tài)的轉(zhuǎn)換,當(dāng)對象處于該狀態(tài)時事件不會丟失,但會被延遲執(zhí)行。例如,當(dāng)E-mail程序中正在發(fā)送第一封郵件時,用戶下達發(fā)送第二封郵件執(zhí)令就會被延遲,但第一封郵件發(fā)送完成后,這封郵件就會被發(fā)送。這種事件就屬于延遲事件;再如打印事件。在狀態(tài)內(nèi)部用/defer表示延遲事件158.2.2初始狀態(tài)(initialstate)每個狀態(tài)圖都應(yīng)該有一個初始狀態(tài),它代表狀態(tài)圖的起始位置。初始狀態(tài)是一個偽狀態(tài)(一個和普通狀態(tài)有連接的假狀態(tài)),對象不可能保持在初始狀態(tài),必須要有一個輸出的無觸發(fā)轉(zhuǎn)換(沒有事件觸發(fā)器的轉(zhuǎn)換)。通常初始狀態(tài)上的轉(zhuǎn)換是無監(jiān)護條件的并且初始狀態(tài)只能作為轉(zhuǎn)換的源,而不能作為轉(zhuǎn)換的目標(biāo)在UML中一個狀態(tài)圖只能有一個初始狀態(tài),用一個實心的圓表示。168.2.3終止?fàn)顟B(tài)(finalstate)終止?fàn)顟B(tài)是一個狀態(tài)圖的終點一個狀態(tài)圖可以擁有0個或者多個終止?fàn)顟B(tài)。對象可以保持在終止?fàn)顟B(tài)但是終止?fàn)顟B(tài)不可能有任何形式的觸發(fā)轉(zhuǎn)換,它的目的就是為了激發(fā)封裝狀態(tài)上的完成轉(zhuǎn)換。因此終止?fàn)顟B(tài)只能作為轉(zhuǎn)換的目標(biāo)而不能作為轉(zhuǎn)換的源在UML中終止?fàn)顟B(tài)用一個含有實心圓的空心圓表示。17需要注意的是,對于一些特殊的狀態(tài)圖,可以沒有終止?fàn)顟B(tài)如圖所示為一部電的狀態(tài)圖,在這個狀態(tài)圖中沒有終止?fàn)顟B(tài)。因為不管在什么樣的情況下,電話的狀態(tài)都在“空閑”和“忙”之間轉(zhuǎn)換。188.2.4轉(zhuǎn)換和轉(zhuǎn)換的五要素源狀態(tài)(SourceState):即受轉(zhuǎn)換影響的狀態(tài)目標(biāo)狀態(tài)(TargetState):當(dāng)轉(zhuǎn)換完成后對象的狀態(tài)觸發(fā)事件(EventTrigger):用來為轉(zhuǎn)換定義一個事件,包括調(diào)用、改變、信號、時間四類事件監(jiān)護條件(GuardCondition):布爾表達式,決定是否激活轉(zhuǎn)換、動作(Action):轉(zhuǎn)換激活時的操作19與狀態(tài)off相關(guān)的轉(zhuǎn)換有兩個,其觸發(fā)事件都是turnOn,只不過其監(jiān)護條件不同。如果對象收到事件turnOn,那么將判斷壺中是否有水;如果[沒水],則仍然處于off狀態(tài);如果[有水]則轉(zhuǎn)為on狀態(tài),并執(zhí)行“燒水”動作而與狀態(tài)on相關(guān)的轉(zhuǎn)換也有兩個,如果“水開了”就執(zhí)行turnOff,關(guān)掉開關(guān);如果燒壞了,就進入了終態(tài)了20轉(zhuǎn)換的分類、描述和語法轉(zhuǎn)換類型描述語法①外部轉(zhuǎn)換對事件做出響應(yīng),引起狀態(tài)變化或自身轉(zhuǎn)換,同時引發(fā)一個特定動作,如果離開或進入狀態(tài)將引發(fā)進入轉(zhuǎn)換、離開轉(zhuǎn)換事件(參數(shù))[監(jiān)護條件]/動作②內(nèi)部轉(zhuǎn)換對事件做出響應(yīng),并執(zhí)行一個特定的活動,但并不引起狀態(tài)變化或進入轉(zhuǎn)換、離開轉(zhuǎn)換同①③進入轉(zhuǎn)換當(dāng)進入某一狀態(tài)時,執(zhí)行相應(yīng)活動entry/動作④退出轉(zhuǎn)換當(dāng)離開某一狀態(tài)時,執(zhí)行相應(yīng)活動exit/動作⑤自轉(zhuǎn)換一種特殊的外部轉(zhuǎn)換,起始狀態(tài)和終止?fàn)顟B(tài)為同一狀態(tài)同①21自轉(zhuǎn)換內(nèi)部轉(zhuǎn)換退出轉(zhuǎn)換進入轉(zhuǎn)換228.2.5判定與復(fù)合轉(zhuǎn)換判定用空心小菱形表示。工作流在此處按監(jiān)護條件的取值而發(fā)生分支,各個分支組成復(fù)合轉(zhuǎn)換。23它的變體:可以看成是兩個轉(zhuǎn)換24鏈?zhǔn)椒种Вㄦ準(zhǔn)綇?fù)合轉(zhuǎn)換)25非鏈?zhǔn)椒种Вǚ擎準(zhǔn)綇?fù)合轉(zhuǎn)換)可以看成是多個轉(zhuǎn)換(如果把事件[監(jiān)護條件]/動作看做是轉(zhuǎn)換的簽名的話)268.2.6狀態(tài)嵌套和歷史狀態(tài)1.狀態(tài)嵌套

狀態(tài)分為筒單狀態(tài)(SimpleState)和組成狀態(tài)(CompositeState)。簡單狀態(tài)是在語義上不可分解的、對象保持一定屬性值的狀況,簡單狀態(tài)不包含其他狀態(tài);組成(復(fù)合)狀態(tài)是內(nèi)部嵌套子狀態(tài)的狀態(tài),在組成狀態(tài)的嵌套狀態(tài)圖部分包含的就是此狀態(tài)的子狀態(tài)。27(一)跟復(fù)合狀態(tài)關(guān)聯(lián)的轉(zhuǎn)換可以直接關(guān)聯(lián)子狀態(tài)復(fù)合狀態(tài)轉(zhuǎn)換的表達形式28(二)關(guān)聯(lián)外圍框的轉(zhuǎn)換從復(fù)合狀態(tài)外圍框出來的轉(zhuǎn)換若復(fù)合狀態(tài)內(nèi)有終點狀態(tài),則表示該出轉(zhuǎn)換是從終點狀態(tài)出來的若復(fù)合狀態(tài)內(nèi)無終點狀態(tài),則表示該出轉(zhuǎn)換可以從該復(fù)合狀態(tài)任意狀態(tài)出來指向復(fù)合狀態(tài)外圍框的轉(zhuǎn)換:直接指向外圍框表示指向該復(fù)合狀態(tài)的開始狀態(tài)兩者都可以對出入點命名確定,或用事件簽名約定(此時應(yīng)該認為該事件簽名對應(yīng)的出入口點是唯一確定的)29復(fù)合狀態(tài)表示法兩種表示方法:一種是子圖和父圖合在一塊,叫嵌套區(qū)域表示法另一種是子圖和父圖分開表示,叫分解指示符法第二種方法要注意高層狀態(tài)圖的出入口數(shù)和子圖的出入口數(shù)要平衡30(1)如果一個復(fù)合狀態(tài)只有一個入口點或出口點新圖例31若不使用則為了明確其復(fù)合狀態(tài)的身份,可以如此引用:32(2)如果一個復(fù)合狀態(tài)有多個入口點或出口點,若高層圖和子圖畫一塊,轉(zhuǎn)換可直接和子圖的狀態(tài)關(guān)聯(lián)若高層圖和子圖分離,要對出入口點命名處理。如圖:33Rose里面可用事件簽名區(qū)分出入口點342.歷史狀態(tài)組成狀態(tài)可能包含歷史狀態(tài)(HistoryState),歷史狀態(tài)本身是個偽狀態(tài),用來說明組成狀態(tài)曾經(jīng)有的子狀態(tài)。一般情況下,當(dāng)狀態(tài)機通過轉(zhuǎn)換進入組成狀態(tài)嵌套的子狀態(tài)時,被嵌套的子狀態(tài)要從子初始狀態(tài)進行。但是如果一個被繼承的轉(zhuǎn)換引起從復(fù)合狀態(tài)的自動退出,狀態(tài)會記住當(dāng)強制性退出發(fā)生的時候處于活動的狀態(tài)。這種情況下就可以直接進入上次離開組成狀態(tài)時的最后一個子狀態(tài),而不必從它的子初始狀態(tài)開始執(zhí)行歷史狀態(tài)代表上次離開組成狀態(tài)時的最后一個活動子狀態(tài),它用一個包含字母H的小圓圈表示。H35圖中的含義是:當(dāng)從狀態(tài)“結(jié)賬”和“顯示購物車”返回子狀態(tài)“顯示索引信息”時,將進入的是離開時的歷史狀態(tài)。也就是說,轉(zhuǎn)到購物

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

再回到“瀏覽目錄”的

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

是不變的,仍然保留

原來的信息。368.3并發(fā)狀態(tài)圖(不做要求)用同步棒表示Rose里面,狀態(tài)圖默認沒有分叉匯合,要在工具條上自定義添加37教材8.4的說明?。?!分區(qū),可以有自己的區(qū)名38軟考試題:UML的狀態(tài)圖展示了一個特定對象的所有可能狀態(tài),以及由于各種事件的發(fā)生而引起的狀態(tài)間的轉(zhuǎn)移(transition)。如果一個并發(fā)的狀態(tài)由m個并發(fā)的子狀態(tài)圖組成,那么該并發(fā)狀態(tài)在某時刻的狀態(tài)由()個子狀態(tài)圖中各取一個狀態(tài)組合而成。

A.任意一

B.任意兩

C.每一

D.任意n(n≤m)398.4狀態(tài)圖設(shè)計實例408.5繪制狀態(tài)機圖繪制狀態(tài)機圖的理想步驟是:尋找主要的狀態(tài),確定狀態(tài)之間的轉(zhuǎn)換,細化狀態(tài)內(nèi)的活動與轉(zhuǎn)換,用復(fù)合狀態(tài)來展開細節(jié)41以航班機票預(yù)訂系統(tǒng)為例:尋找主要狀態(tài):在剛確定飛機計劃時,顯然是沒有任何預(yù)訂的,并且在有人預(yù)訂機票之前都將處于這種“無預(yù)訂”狀態(tài)對訂座而言顯然有“部分預(yù)訂”和“預(yù)訂完”兩種狀態(tài)而當(dāng)航班快要起飛時,顯然要“預(yù)訂關(guān)閉”總結(jié)一下,主要有四種狀態(tài):無預(yù)訂、部分預(yù)訂、預(yù)訂完以及預(yù)訂關(guān)閉42確定狀態(tài)間轉(zhuǎn)換源目標(biāo)無預(yù)訂部分預(yù)訂預(yù)訂完預(yù)訂關(guān)閉無預(yù)訂預(yù)訂()不直接轉(zhuǎn)換關(guān)閉()部分預(yù)訂退訂(),使預(yù)訂人=0預(yù)訂(),無空座關(guān)閉()預(yù)訂完不直接轉(zhuǎn)換退訂()關(guān)閉()預(yù)訂關(guān)閉無轉(zhuǎn)換無轉(zhuǎn)換無轉(zhuǎn)換43細化狀態(tài)內(nèi)的活動與轉(zhuǎn)換44使用復(fù)合狀態(tài)45本章小結(jié)首先介紹了“狀態(tài)”的概念和UML表示法,然后引入了狀態(tài)機的概念通過三個例子逐一說明簡單狀態(tài)機圖、包含復(fù)雜轉(zhuǎn)換的狀態(tài)機圖以及包含復(fù)合狀態(tài)的狀態(tài)機圖的閱讀方法,緊接著通過一個航班機票預(yù)訂系統(tǒng)來闡述了狀態(tài)圖的繪制過程:確定狀態(tài),分析狀態(tài)間的轉(zhuǎn)換,細化活動與內(nèi)部轉(zhuǎn)化,通過復(fù)合狀態(tài)來組織簡明地點出狀態(tài)圖的兩大功能:對對

象的生命周期建模以及對反應(yīng)型對象

的行為建模46為什么要建模狀態(tài)圖

對象可能會有不同的狀態(tài),某些行為依賴于這些狀態(tài)。例如,按下開關(guān)按鈕時,電燈將改變當(dāng)前的狀態(tài)(由關(guān)變開或由開變關(guān)),因此:需要記錄對象當(dāng)前的狀態(tài)發(fā)生了某種事件才會引起狀態(tài)間的轉(zhuǎn)移由一個狀態(tài)轉(zhuǎn)到另

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論