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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

8

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

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

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

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

內部轉換指的是不導致狀態(tài)改變的轉換。跟外部轉換形式是一樣的。內部轉換事件動作監(jiān)護條件145.延遲事件延遲事件是一種特殊的事件,它是指該事件不會觸發(fā)狀態(tài)的轉換,當對象處于該狀態(tài)時事件不會丟失,但會被延遲執(zhí)行。例如,當E-mail程序中正在發(fā)送第一封郵件時,用戶下達發(fā)送第二封郵件執(zhí)令就會被延遲,但第一封郵件發(fā)送完成后,這封郵件就會被發(fā)送。這種事件就屬于延遲事件;再如打印事件。在狀態(tài)內部用/defer表示延遲事件158.2.2初始狀態(tài)(initialstate)每個狀態(tài)圖都應該有一個初始狀態(tài),它代表狀態(tài)圖的起始位置。初始狀態(tài)是一個偽狀態(tài)(一個和普通狀態(tài)有連接的假狀態(tài)),對象不可能保持在初始狀態(tài),必須要有一個輸出的無觸發(fā)轉換(沒有事件觸發(fā)器的轉換)。通常初始狀態(tài)上的轉換是無監(jiān)護條件的并且初始狀態(tài)只能作為轉換的源,而不能作為轉換的目標在UML中一個狀態(tài)圖只能有一個初始狀態(tài),用一個實心的圓表示。168.2.3終止狀態(tài)(finalstate)終止狀態(tài)是一個狀態(tài)圖的終點一個狀態(tài)圖可以擁有0個或者多個終止狀態(tài)。對象可以保持在終止狀態(tài)但是終止狀態(tài)不可能有任何形式的觸發(fā)轉換,它的目的就是為了激發(fā)封裝狀態(tài)上的完成轉換。因此終止狀態(tài)只能作為轉換的目標而不能作為轉換的源在UML中終止狀態(tài)用一個含有實心圓的空心圓表示。17需要注意的是,對于一些特殊的狀態(tài)圖,可以沒有終止狀態(tài)如圖所示為一部電的狀態(tài)圖,在這個狀態(tài)圖中沒有終止狀態(tài)。因為不管在什么樣的情況下,電話的狀態(tài)都在“空閑”和“忙”之間轉換。188.2.4轉換和轉換的五要素源狀態(tài)(SourceState):即受轉換影響的狀態(tài)目標狀態(tài)(TargetState):當轉換完成后對象的狀態(tài)觸發(fā)事件(EventTrigger):用來為轉換定義一個事件,包括調用、改變、信號、時間四類事件監(jiān)護條件(GuardCondition):布爾表達式,決定是否激活轉換、動作(Action):轉換激活時的操作19與狀態(tài)off相關的轉換有兩個,其觸發(fā)事件都是turnOn,只不過其監(jiān)護條件不同。如果對象收到事件turnOn,那么將判斷壺中是否有水;如果[沒水],則仍然處于off狀態(tài);如果[有水]則轉為on狀態(tài),并執(zhí)行“燒水”動作而與狀態(tài)on相關的轉換也有兩個,如果“水開了”就執(zhí)行turnOff,關掉開關;如果燒壞了,就進入了終態(tài)了20轉換的分類、描述和語法轉換類型描述語法①外部轉換對事件做出響應,引起狀態(tài)變化或自身轉換,同時引發(fā)一個特定動作,如果離開或進入狀態(tài)將引發(fā)進入轉換、離開轉換事件(參數)[監(jiān)護條件]/動作②內部轉換對事件做出響應,并執(zhí)行一個特定的活動,但并不引起狀態(tài)變化或進入轉換、離開轉換同①③進入轉換當進入某一狀態(tài)時,執(zhí)行相應活動entry/動作④退出轉換當離開某一狀態(tài)時,執(zhí)行相應活動exit/動作⑤自轉換一種特殊的外部轉換,起始狀態(tài)和終止狀態(tài)為同一狀態(tài)同①21自轉換內部轉換退出轉換進入轉換228.2.5判定與復合轉換判定用空心小菱形表示。工作流在此處按監(jiān)護條件的取值而發(fā)生分支,各個分支組成復合轉換。23它的變體:可以看成是兩個轉換24鏈式分支(鏈式復合轉換)25非鏈式分支(非鏈式復合轉換)可以看成是多個轉換(如果把事件[監(jiā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);組成(復合)狀態(tài)是內部嵌套子狀態(tài)的狀態(tài),在組成狀態(tài)的嵌套狀態(tài)圖部分包含的就是此狀態(tài)的子狀態(tài)。27(一)跟復合狀態(tài)關聯的轉換可以直接關聯子狀態(tài)復合狀態(tài)轉換的表達形式28(二)關聯外圍框的轉換從復合狀態(tài)外圍框出來的轉換若復合狀態(tài)內有終點狀態(tài),則表示該出轉換是從終點狀態(tài)出來的若復合狀態(tài)內無終點狀態(tài),則表示該出轉換可以從該復合狀態(tài)任意狀態(tài)出來指向復合狀態(tài)外圍框的轉換:直接指向外圍框表示指向該復合狀態(tài)的開始狀態(tài)兩者都可以對出入點命名確定,或用事件簽名約定(此時應該認為該事件簽名對應的出入口點是唯一確定的)29復合狀態(tài)表示法兩種表示方法:一種是子圖和父圖合在一塊,叫嵌套區(qū)域表示法另一種是子圖和父圖分開表示,叫分解指示符法第二種方法要注意高層狀態(tài)圖的出入口數和子圖的出入口數要平衡30(1)如果一個復合狀態(tài)只有一個入口點或出口點新圖例31若不使用則為了明確其復合狀態(tài)的身份,可以如此引用:32(2)如果一個復合狀態(tài)有多個入口點或出口點,若高層圖和子圖畫一塊,轉換可直接和子圖的狀態(tài)關聯若高層圖和子圖分離,要對出入口點命名處理。如圖:33Rose里面可用事件簽名區(qū)分出入口點342.歷史狀態(tài)組成狀態(tài)可能包含歷史狀態(tài)(HistoryState),歷史狀態(tài)本身是個偽狀態(tài),用來說明組成狀態(tài)曾經有的子狀態(tài)。一般情況下,當狀態(tài)機通過轉換進入組成狀態(tài)嵌套的子狀態(tài)時,被嵌套的子狀態(tài)要從子初始狀態(tài)進行。但是如果一個被繼承的轉換引起從復合狀態(tài)的自動退出,狀態(tài)會記住當強制性退出發(fā)生的時候處于活動的狀態(tài)。這種情況下就可以直接進入上次離開組成狀態(tài)時的最后一個子狀態(tài),而不必從它的子初始狀態(tài)開始執(zhí)行歷史狀態(tài)代表上次離開組成狀態(tài)時的最后一個活動子狀態(tài),它用一個包含字母H的小圓圈表示。H35圖中的含義是:當從狀態(tài)“結賬”和“顯示購物車”返回子狀態(tài)“顯示索引信息”時,將進入的是離開時的歷史狀態(tài)。也就是說,轉到購物

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

再回到“瀏覽目錄”的

頁面時,其中的內容

是不變的,仍然保留

原來的信息。368.3并發(fā)狀態(tài)圖(不做要求)用同步棒表示Rose里面,狀態(tài)圖默認沒有分叉匯合,要在工具條上自定義添加37教材8.4的說明!??!分區(qū),可以有自己的區(qū)名38軟考試題:UML的狀態(tài)圖展示了一個特定對象的所有可能狀態(tài),以及由于各種事件的發(fā)生而引起的狀態(tài)間的轉移(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)圖設計實例408.5繪制狀態(tài)機圖繪制狀態(tài)機圖的理想步驟是:尋找主要的狀態(tài),確定狀態(tài)之間的轉換,細化狀態(tài)內的活動與轉換,用復合狀態(tài)來展開細節(jié)41以航班機票預訂系統(tǒng)為例:尋找主要狀態(tài):在剛確定飛機計劃時,顯然是沒有任何預訂的,并且在有人預訂機票之前都將處于這種“無預訂”狀態(tài)對訂座而言顯然有“部分預訂”和“預訂完”兩種狀態(tài)而當航班快要起飛時,顯然要“預訂關閉”總結一下,主要有四種狀態(tài):無預訂、部分預訂、預訂完以及預訂關閉42確定狀態(tài)間轉換源目標無預訂部分預訂預訂完預訂關閉無預訂預訂()不直接轉換關閉()部分預訂退訂(),使預訂人=0預訂(),無空座關閉()預訂完不直接轉換退訂()關閉()預訂關閉無轉換無轉換無轉換43細化狀態(tài)內的活動與轉換44使用復合狀態(tài)45本章小結首先介紹了“狀態(tài)”的概念和UML表示法,然后引入了狀態(tài)機的概念通過三個例子逐一說明簡單狀態(tài)機圖、包含復雜轉換的狀態(tài)機圖以及包含復合狀態(tài)的狀態(tài)機圖的閱讀方法,緊接著通過一個航班機票預訂系統(tǒng)來闡述了狀態(tài)圖的繪制過程:確定狀態(tài),分析狀態(tài)間的轉換,細化活動與內部轉化,通過復合狀態(tài)來組織簡明地點出狀態(tài)圖的兩大功能:對對

象的生命周期建模以及對反應型對象

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論