版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第7章狀態(tài)圖和活動圖
7.1概述狀態(tài)機(jī)Statechart用于描述一個對象在其生存期間的動態(tài)行為,表現(xiàn)對象響應(yīng)事件所經(jīng)歷的狀態(tài)序列以及伴隨的動作。狀態(tài)機(jī)是用于描述狀態(tài)與狀態(tài)轉(zhuǎn)換的。狀態(tài)圖〔StatechartDiagram〕狀態(tài)圖主要用于描述一個對象在其生存期間的動態(tài)行為,表現(xiàn)一個對象所經(jīng)歷的狀態(tài)序列,引起狀態(tài)轉(zhuǎn)移的事件(event),以及因狀態(tài)轉(zhuǎn)移而伴隨的動作(action)。一個狀態(tài)機(jī)可以被一個狀態(tài)圖描述,對于一個比較復(fù)雜的狀態(tài)機(jī),也可用多張狀態(tài)圖來表示。描述一個門的狀態(tài)圖狀態(tài)圖是為系統(tǒng)的動態(tài)行為建模,是系統(tǒng)分析的常用工具,因為系統(tǒng)中對象狀態(tài)的變化比較容易發(fā)現(xiàn)和理解。圖7.1圖書館書籍的狀態(tài)圖一本圖書對象從它的起始點(diǎn)開始,首先是“新書〞狀態(tài)〔newbook〕,然后是“可以借閱〞〔available〕的狀態(tài),如果有讀者將書借走,那么該書的狀態(tài)為“已借出〞狀態(tài)〔borrowed〕,如果圖書被歸還圖書館,圖書的狀態(tài)又變?yōu)椤翱梢越栝啫暊顟B(tài)。圖書館如果放棄該圖書對象的收藏,那么圖書對象處于“刪除〞狀態(tài)〔delete〕,最后到達(dá)“終止〞狀態(tài)。7.1.1狀態(tài)圖的組成狀態(tài)state轉(zhuǎn)換/遷移transition(1)狀態(tài)圖中的事物記賬接到訂單7.1.2狀態(tài)〔state〕什么是狀態(tài)?狀態(tài)是指在對象的生命期中滿足某些條件、執(zhí)行某些活動或等待某些事件時的一個條件或狀況。下面一些例子形象地說明了對象和狀態(tài)?!?〕支票〔對象〕已付〔狀態(tài)〕。〔2〕汽車〔對象〕已啟動〔狀態(tài)〕?!?〕小王〔對象〕睡著了〔狀態(tài)〕。〔4〕小紅〔對象〕未婚〔狀態(tài)〕。對象在任何時候都會處于某種狀態(tài)中,所有對象都有狀態(tài)對象所處的狀態(tài)決定了它如何響應(yīng)所檢測到的事件或所接收的消息。清醒-〔被批評〕-生氣醉酒-〔被批評〕-無反響通常,事件使對象從一個狀態(tài)轉(zhuǎn)向另一個狀態(tài)〔即狀態(tài)的轉(zhuǎn)換〕CDPlayer需要stop狀態(tài)嗎?7.1.2狀態(tài)狀態(tài)的類型:初態(tài)終態(tài)中間狀態(tài)組合狀態(tài)歷史狀態(tài)1.初態(tài)和終態(tài)初態(tài)〔startstate〕顯示狀態(tài)圖中狀態(tài)機(jī)執(zhí)行的開始一個狀態(tài)機(jī)只能有一個初態(tài),因為每一個執(zhí)行都是從相同的地方開始的。如果一個狀態(tài)機(jī)用多張狀態(tài)圖描述,那么多張圖用一個初態(tài)。嵌套狀態(tài)中可以使用新的初態(tài)終態(tài)〔endstate〕表示最后的或者終端狀態(tài);終態(tài)數(shù)目可以不確定,也可以沒有。2.中間狀態(tài)中間狀態(tài)的組成〔除初態(tài)終態(tài)外,最常見的狀態(tài)〕狀態(tài)名〔name〕是可以把該狀態(tài)和其他狀態(tài)區(qū)分開的字符串;狀態(tài)也可能是匿名的,即沒有名稱。在一個狀態(tài)中允許有多個動作。1.入口動作〔entryaction〕,用來指定進(jìn)入狀態(tài)時發(fā)生的動作。語法形式:entry/動作名2.出口動作〔exitaction〕,用來指定離開該狀態(tài)時發(fā)生的動作。語法形式:exit/動作名注意:由于入口動作和出口動作是隱式地激活,因此它們既沒有參數(shù)也沒有守衛(wèi)條件。與狀態(tài)相關(guān)的動作3.內(nèi)部轉(zhuǎn)移〔internaltransition〕---用于標(biāo)記內(nèi)部活動,用來指定處于該狀態(tài)時執(zhí)行的動作。不導(dǎo)致狀態(tài)改變的轉(zhuǎn)換,不會執(zhí)行entry和exit動作語法形式:do/動作名內(nèi)部轉(zhuǎn)移不會改變對象的狀態(tài),內(nèi)部轉(zhuǎn)移在入口動作執(zhí)行完畢后開始執(zhí)行。4.還可以添加其他事件和動作
event用來指定當(dāng)特定事件觸發(fā)時發(fā)生指定動作,但此事件不會激發(fā)狀態(tài)的改變,屬于內(nèi)部活動。
延遲事件〔deferredevent〕是指在該狀態(tài)下暫不處理,但將推遲到該對象的另一個狀態(tài)下排隊處理的事件語法形式為延遲事件/defer子狀態(tài)〔substate〕
--嵌套在另外一個狀態(tài)中的狀態(tài)例如:空調(diào):停止、運(yùn)行狀態(tài),運(yùn)行狀態(tài)中可嵌套制冷、制熱、除濕等子狀態(tài)名字域轉(zhuǎn)換域,可選當(dāng)轉(zhuǎn)入該狀態(tài)時,做開燈動作當(dāng)轉(zhuǎn)出該狀態(tài)時,做關(guān)燈動作當(dāng)處于該狀態(tài)時,燈閃爍5次當(dāng)電源關(guān)閉事件發(fā)生時,用自備電源當(dāng)selfTest事件發(fā)生時,對象將延遲響應(yīng),到別的狀態(tài)中再處理,用defer這個特定動作表示延遲內(nèi)部轉(zhuǎn)換do活動是只在狀態(tài)內(nèi)出現(xiàn)的活動,不能附加到轉(zhuǎn)換上。2.中間狀態(tài)舉例3.組合/嵌套狀態(tài)含有子狀態(tài)的狀態(tài)被稱為組合或嵌套狀態(tài)為何不在組合中加初態(tài)、終態(tài)?可以將任一子狀態(tài)作初態(tài)去掉運(yùn)行這個大的狀態(tài)行嗎?行,但效果不好隱藏子狀態(tài),簡化模型復(fù)雜度,增強(qiáng)清晰性組合狀態(tài)可以使用“與〞關(guān)系分解為并發(fā)子狀態(tài),或者通過“或〞關(guān)系分解為互相排斥的順序子狀態(tài)。組合狀態(tài)的一個入轉(zhuǎn)換代表對其嵌套子狀態(tài)區(qū)域內(nèi)的初始狀態(tài)的入轉(zhuǎn)換。3.組合/嵌套狀態(tài)兩種表示方法順序子狀態(tài)如果一個組合狀態(tài)的子狀態(tài)對應(yīng)的對象在其生命期內(nèi)的任何時刻都只能處于一個子狀態(tài),即多個子狀態(tài)之間是互斥的,不能同時存在,這種子狀態(tài)稱為順序子狀態(tài)。并發(fā)子狀態(tài)有時組合狀態(tài)有兩個或者多個并發(fā)的子狀態(tài)機(jī),此時稱組合狀態(tài)的子狀態(tài)為并發(fā)子狀態(tài)。3.組合/嵌套狀態(tài)順序子狀態(tài)圖----IC卡的使用順序子狀態(tài)與并發(fā)子狀態(tài)的區(qū)別在于后者在同一層次給出兩個或多個順序子狀態(tài),對象處于同一層次中來自每個并發(fā)子狀態(tài)的一個時序狀態(tài)中。當(dāng)離開一個組合狀態(tài)重新進(jìn)入此狀態(tài)時,不希望從它的初始狀態(tài)開始執(zhí)行,而是希望直接進(jìn)入上次離開組合狀態(tài)時的最后一個子狀態(tài),這種情況下就要用到歷史狀態(tài)。歷史狀態(tài)代表上次離開組合狀態(tài)時的最后一個活動子狀態(tài),它用一個包含字母“H〞的小圓圈表示。每當(dāng)轉(zhuǎn)換到組合狀態(tài)的歷史狀態(tài)時,對象便恢復(fù)到上次離開該組合狀態(tài)時的最后一個活動子狀態(tài),并執(zhí)行入口動作。4.歷史狀態(tài)〔Historystate〕MP3播放器對象的狀態(tài)圖4.歷史狀態(tài)〔Historystate〕7.1.4轉(zhuǎn)換〔Transition〕轉(zhuǎn)換是兩個狀態(tài)間的一種關(guān)系,表示當(dāng)一個特定事件發(fā)生或者某些條件得到滿足時,一個源狀態(tài)下的對象在完成一定的動作后將發(fā)生狀態(tài)轉(zhuǎn)變,轉(zhuǎn)向另目標(biāo)狀態(tài)。每個轉(zhuǎn)換只允許有一個事件觸發(fā),一個事件只允許有一個動作是由一種狀態(tài)到另一種狀態(tài)的遷移。這種轉(zhuǎn)移由被建模實體內(nèi)部事件或外部事件觸發(fā)。對一個類來說,轉(zhuǎn)移通常是調(diào)用了一個可以引起狀態(tài)發(fā)生重要變化的操作的結(jié)果。轉(zhuǎn)換的五要素:源狀態(tài)目標(biāo)狀態(tài)觸發(fā)事件如果箭頭上不帶任何事件名,叫無觸發(fā)轉(zhuǎn)移〔完成轉(zhuǎn)移〕,當(dāng)與源狀態(tài)相關(guān)的活動完成時就會自動觸發(fā)。監(jiān)護(hù)條件動作在用電磁爐燒開水的過程中,水的狀態(tài)由源狀態(tài)“Off〞〔不沸騰〕轉(zhuǎn)換為目標(biāo)狀態(tài)的“On〞〔沸騰〕時,水壺中“有水〞就是其監(jiān)護(hù)條件,開啟電源開關(guān)“turnOn〞是其觸發(fā)事件,進(jìn)行“燒水〞是狀態(tài)轉(zhuǎn)換的動作。7.1.4轉(zhuǎn)換〔Transition〕注意:監(jiān)護(hù)條件:是用方括號括起來的布爾表達(dá)式,它放在事件的后面。如果監(jiān)護(hù)條件和事件放在一起使用,那么當(dāng)且僅當(dāng)事件發(fā)生且監(jiān)護(hù)條件為真時,轉(zhuǎn)移發(fā)生;如果只有監(jiān)護(hù)條件,只要監(jiān)護(hù)條件為真就發(fā)生轉(zhuǎn)移。從相同的狀態(tài)出來的、事件相同的幾個轉(zhuǎn)移之間的條件應(yīng)該時互斥的。動作〔Action)可執(zhí)行的行為。不可中斷,其執(zhí)行時間可忽略不計當(dāng)轉(zhuǎn)換被引發(fā)時,它對應(yīng)的動作被執(zhí)行。它一般是一個簡短的處理過程。兩種特殊動作〔只要進(jìn)入或離開該狀態(tài)一定會執(zhí)行該動作〕入口動作〔entry〕進(jìn)入某一狀態(tài)時執(zhí)行的動作出口動作〔exit〕退出某一狀態(tài)時執(zhí)行的動作7.1.4轉(zhuǎn)換---動作動作可以與狀態(tài)相關(guān),也可以與轉(zhuǎn)移相關(guān):如果動作與狀態(tài)相關(guān),那么對象在進(jìn)入一個狀態(tài)時將觸發(fā)此動作,而不管是從哪個狀態(tài)轉(zhuǎn)入這個狀態(tài)的。如果動作與轉(zhuǎn)移相關(guān),當(dāng)對象在不同的狀態(tài)轉(zhuǎn)移時,將觸發(fā)相應(yīng)的動作。
轉(zhuǎn)換的種類
1外部轉(zhuǎn)換2內(nèi)部轉(zhuǎn)換3自轉(zhuǎn)換4復(fù)合轉(zhuǎn)換1.外部轉(zhuǎn)換外部轉(zhuǎn)換是一種改變對象狀態(tài)的轉(zhuǎn)換,是最常見的一種轉(zhuǎn)換。對事件做出響應(yīng),引起狀態(tài)轉(zhuǎn)換或自身轉(zhuǎn)換,同時執(zhí)行一個特定的動作,如果離開或進(jìn)入狀態(tài),將引起入口動作和出口動作的執(zhí)行外部轉(zhuǎn)換用從源狀態(tài)到目標(biāo)狀態(tài)的箭頭表示。語法:事件(參數(shù))[監(jiān)護(hù)條件]/動作2.自轉(zhuǎn)換當(dāng)事件發(fā)生時,導(dǎo)致狀態(tài)中斷,使對象退出當(dāng)前狀態(tài),然后又重新回到該狀態(tài)。自轉(zhuǎn)換在作用時首先將當(dāng)前狀態(tài)下的活動終止,然后執(zhí)行該狀態(tài)的出口動作,接著執(zhí)行引起轉(zhuǎn)移事件的相關(guān)動作,緊接著返回該狀態(tài),開始執(zhí)行該狀態(tài)的入口動作和其他操作。3.內(nèi)部轉(zhuǎn)換內(nèi)部轉(zhuǎn)換有一個源狀態(tài)但是沒有目標(biāo)狀態(tài),它轉(zhuǎn)換后的狀態(tài)仍舊是它本身。對事件做出響應(yīng),并執(zhí)行一個特定的動作,但不引起狀態(tài)的改變或不引起入口動作或出口動作的執(zhí)行內(nèi)部轉(zhuǎn)換的激發(fā)規(guī)那么和外部轉(zhuǎn)換的激發(fā)規(guī)那么相同。如果一個內(nèi)部轉(zhuǎn)換帶有動作,動作也要被執(zhí)行,但是由于沒有狀態(tài)改變發(fā)生,因此不需要執(zhí)行入口和出口動作。語法:事件(參數(shù))[監(jiān)護(hù)條件]/動作內(nèi)部轉(zhuǎn)換和自轉(zhuǎn)換〔完成轉(zhuǎn)換〕不同:自轉(zhuǎn)換是離開本狀態(tài)后重新進(jìn)入該狀態(tài),它會激發(fā)狀態(tài)的入口動作和出口動作的執(zhí)行。內(nèi)部轉(zhuǎn)換自始至終都不離開本狀態(tài),所以沒有出口或入口事件,也就不執(zhí)行入口和出口動作。4.復(fù)合轉(zhuǎn)換復(fù)合轉(zhuǎn)換由簡單轉(zhuǎn)換組成,這些簡單轉(zhuǎn)換通過分支判定、分叉或接合組合在一起。除了兩個分支的判定,還有多條件的分支判定。多條件的分支判定有分為鏈?zhǔn)降暮头擎準(zhǔn)降姆种А?復(fù)合轉(zhuǎn)換鏈?zhǔn)椒种В悍擎準(zhǔn)椒种В好钟蜣D(zhuǎn)換域,可選當(dāng)轉(zhuǎn)入該狀態(tài)時,做開燈動作當(dāng)轉(zhuǎn)出該狀態(tài)時,做關(guān)燈動作當(dāng)處于該狀態(tài)時,燈閃爍5次當(dāng)電源關(guān)閉事件發(fā)生時,用自備電源當(dāng)selfTest事件發(fā)生時,對象將延遲響應(yīng),到別的狀態(tài)中再處理,用defer這個特定動作表示延遲內(nèi)部轉(zhuǎn)換do活動是只在狀態(tài)內(nèi)出現(xiàn)的活動,不能附加到轉(zhuǎn)換上。外部轉(zhuǎn)換,自轉(zhuǎn)換也是外部轉(zhuǎn)換外部轉(zhuǎn)換判定〔決策點(diǎn)〕判定在狀態(tài)圖中的位置:工作流在此處按監(jiān)護(hù)條件的取值而發(fā)生分支。判定用空心小菱形表示。判定它在建模狀態(tài)機(jī)圖時提供了方便,因為它通過在中心位置分組轉(zhuǎn)移到各自的方向,從而提高了狀態(tài)機(jī)圖的可視性。因為監(jiān)護(hù)條件為布爾表達(dá)式,所以通常條件下的判定只有一個入轉(zhuǎn)換和兩個出轉(zhuǎn)換。根據(jù)監(jiān)護(hù)條件的真假可以觸發(fā)不同的分支轉(zhuǎn)換。同步狀態(tài)使用同步條可以顯示并發(fā)轉(zhuǎn)移。并發(fā)轉(zhuǎn)移表示一個同步將一個控制劃分為并發(fā)的線程。狀態(tài)機(jī)圖中使用到同步條是為了說明某些狀態(tài)在哪里需要跟上或者等待其他狀態(tài)。狀態(tài)機(jī)圖中同步條是一條黑色的粗線,圖顯示了使用了同步條的狀態(tài)機(jī)圖。例題,一個汽車的狀態(tài)有前進(jìn)、后退、低速、高速。7.1.5事件Event是對一個時間和空間上占有一定位置的有意義的事情的規(guī)格說明。事件觸發(fā)狀態(tài)的轉(zhuǎn)換四類主要事件信號事件調(diào)用事件變化事件時間事件信號signer事件所謂信號,是指由一個對象異步地發(fā)送,并由另外一個對象接收的一個已命名的對象。信號事件表示對象接收到某個信號。信號間可以有泛化,信號可以是其他信號的子信號,它們繼承父信號的屬性,并可以觸發(fā)包含信號類型的轉(zhuǎn)換。7.1.5事件Event接收到input信號這一事件發(fā)生調(diào)用call事件表示一個操作的調(diào)度。請求調(diào)用另一個對象的操作當(dāng)對象調(diào)用另一對象的操作時,控制就從發(fā)送者傳送到接收者,該事件觸發(fā)轉(zhuǎn)換,完成操作后,接收者轉(zhuǎn)換到一個新的狀態(tài),控制返還給發(fā)送者。信號是一個異步事件,而調(diào)用事件一般是同步的。變化change事件如果一個布爾表達(dá)式中的變量發(fā)生變化,使得該表達(dá)式的值相應(yīng)變化,從而滿足條件,那么這種事件叫變化事件。用關(guān)鍵字When,后面跟布爾表達(dá)式When(temperature>120)/alerm()變化事件的意圖是要頻繁測試表達(dá)式,只要表達(dá)式由假變?yōu)檎妫录蜁l(fā)生。注意:變化事件與監(jiān)護(hù)條件的不同。監(jiān)護(hù)條件是轉(zhuǎn)移說明的一局部,只有所相關(guān)的事件出現(xiàn)后計算一次這個條件,如果值時false,那么不進(jìn)行轉(zhuǎn)移,以后也不再重新計算這個監(jiān)護(hù)條件,除非事件又重新出現(xiàn)。變化事件表示的是一個要被不斷測試的事件。時間〔time〕事件時間事件是指在絕對時間或在某個時間間隔內(nèi)發(fā)生的事情所引起的事件。例如到達(dá)某一時間或經(jīng)過了某一時間段。用關(guān)鍵字When或After表示。(1)狀態(tài)圖中包含以下狀態(tài)初始狀態(tài)Available狀態(tài)Locked狀態(tài)Sold狀態(tài)(2)狀態(tài)間的轉(zhuǎn)移初始狀態(tài)Available狀態(tài)票被預(yù)訂(lock):AvailableLocked預(yù)定后付款(buy):LockedSold預(yù)定解除(unlock):LockedAvailable預(yù)定過期(timeout):LockedAvailable直接購置(assignedto):AvailableSold換其它票(exchang),該票重有效:SoldAvailable7.1.6狀態(tài)圖的例子登陸要求提交個人社會保險號(SSN)和密碼(PIN)經(jīng)驗證有效后登陸成功。登陸過程包括以下狀態(tài):初態(tài)(Initialstate)獲取社會保險號狀態(tài)(GettingSSN)獲取密碼狀態(tài)(GettingPIN)驗證狀態(tài)(Validating)拒絕狀態(tài)(Rejecting)終態(tài)
(Finalstate)出發(fā)狀態(tài)動作到達(dá)狀態(tài)Initialstate移動鼠標(biāo)到SSNGettingSSNGettingSSN鍵入非tab鍵,顯示鍵入內(nèi)容GettingSSN鍵入tab鍵,或移動鼠標(biāo)到BINGettingPIN提交ValidatingGettingPIN鍵入非shift-tab鍵,顯示“*”GettingPIN鍵入shift-tab鍵,或移動鼠標(biāo)到SSNGettingSSN提交ValidatingValidating驗證提交信息有效,狀態(tài)轉(zhuǎn)移Finalstate驗證提交信息無效,顯示錯誤信息RejectingRejecting退出Finalstate重試,清除無效的SSN,PINGettingSSN狀態(tài)轉(zhuǎn)移的過程有兩個不同的終態(tài)
(2)網(wǎng)上銀行登陸系統(tǒng)練習(xí)分析下面的狀態(tài)圖,答復(fù)以下問題下降狀態(tài)在第一層上升狀態(tài)向第一層下降空閑狀態(tài)上升到達(dá)到達(dá)上升超時下降到達(dá)第一層(1)以下那些圖形元素是對狀態(tài)的描述?
(a)超時 (b)到達(dá) (c)在第一層(2)空閑狀態(tài)
超時后轉(zhuǎn)移到____狀態(tài)
(a)向第一層下降 (b)上升狀態(tài)(c)終態(tài)答案
(1)(c) (2)(a)7.1.6狀態(tài)圖7.1.7狀態(tài)圖建模步驟尋找主要的狀態(tài)確定狀態(tài)之間的轉(zhuǎn)換細(xì)化狀態(tài)內(nèi)的活動與轉(zhuǎn)換用組合/嵌套狀態(tài)來展開細(xì)節(jié)7.1.7狀態(tài)圖建模細(xì)化狀態(tài)內(nèi)的活動與轉(zhuǎn)換使用復(fù)合狀態(tài)7.1.7狀態(tài)圖訂單處理系統(tǒng)7.1.7狀態(tài)圖狀態(tài)圖與交互圖的區(qū)別交互圖不顯示對象所有可能的動態(tài)行為,只顯示特定交互場景〔一個具體的用例〕中對象的行為。狀態(tài)圖可以顯示對象所有的動態(tài)行為。筆有完整和折斷兩種狀態(tài),是由誰折斷?只能由交互圖看出使用狀態(tài)圖對系統(tǒng)反響型對象建模時,應(yīng)遵循如下策略:⑴選擇狀態(tài)機(jī)的語境〔即建模對象〕,不管它是類、用例或是整個系統(tǒng);⑵選擇這個對象的初態(tài)和終態(tài)。為了指導(dǎo)模型的剩余局部,可能要分別地說明初態(tài)和終態(tài)的前置條件和后置條件;⑶考慮對象可能在其中存在一段時間的條件,以決定該對象所在的穩(wěn)定狀態(tài)。從這個對象的高層狀態(tài)開始,然后考慮它的可能的子狀態(tài);⑷在對象的整個生命周期中,決定穩(wěn)定狀態(tài)的有意義的順序;⑸決定可能觸發(fā)從狀態(tài)到狀態(tài)的轉(zhuǎn)換的事件。將這些事件建模為觸發(fā)者,它觸發(fā)從一個合法狀態(tài)序列到另一個合法狀態(tài)序列的轉(zhuǎn)換;⑹把動作附加到這些轉(zhuǎn)換上,并且附加到這些狀態(tài)上;⑺考慮通過使用子狀態(tài)、分支、集合和歷史狀態(tài),來簡化狀態(tài)圖;⑻核實所有的狀態(tài)都是在事件的某種組合下可達(dá)的;⑼核實不存在死角狀態(tài),即不存在那種不能轉(zhuǎn)換出來的狀態(tài);⑽通過手工或通過使用工具跟蹤狀態(tài)機(jī),核對所期望的事件序列以及它們的響應(yīng)。撥打工作的行為建模首先,確定主要的狀態(tài),在這里開機(jī)時,處于空閑狀態(tài),當(dāng)用戶撥號呼叫某人時,話機(jī)進(jìn)入撥號狀態(tài)。如果呼叫成功那么接通,處于通話狀態(tài),如果呼叫不成功,撥號失敗,這時話機(jī)重新回到空閑狀態(tài)。話機(jī)在空閑狀態(tài)被呼叫,進(jìn)入響鈴狀態(tài)。如果用戶摘機(jī)接聽,話機(jī)處于通話狀態(tài)。完成通話掛機(jī)后話機(jī)回到空閑狀態(tài)。如果用戶沒有摘機(jī)那么話機(jī)處于繼續(xù)響鈴狀態(tài)。如果用戶拒絕來電,話機(jī)回到空閑狀態(tài)。因此,撥打的過程可以總結(jié)出4個狀態(tài),即空閑、撥號、通話和響鈴。練習(xí)電水壺:on和off兩個狀態(tài),初態(tài)off,燒壞那么轉(zhuǎn)換到終態(tài)。trunOn事件發(fā)生時,判斷水壺是否有水,假設(shè)沒有水,那么仍處于off狀態(tài),假設(shè)有水,那么turnOn事件引起燒水活動,使?fàn)顟B(tài)從off轉(zhuǎn)入on,水開,那么從on轉(zhuǎn)入off狀態(tài)練習(xí)進(jìn)程就緒運(yùn)行阻塞三個狀態(tài)初態(tài)就緒;程序運(yùn)行結(jié)束后終態(tài)就緒狀態(tài)獲得CPU時間片轉(zhuǎn)為運(yùn)行態(tài);運(yùn)行態(tài)時間片用完轉(zhuǎn)為就緒態(tài);運(yùn)行態(tài)不滿足所需資源轉(zhuǎn)為阻塞態(tài),阻塞態(tài)假設(shè)資源滿足那么回到就緒態(tài)練習(xí)圖書館管理系統(tǒng)中的還書業(yè)務(wù)還書業(yè)務(wù)的動態(tài)行為是由:空閑〔idle〕、圖書查找〔finding〕、還書〔reversion〕、失敗〔Failure〕、歸還成功〔Success〕5種狀態(tài)及激活相互轉(zhuǎn)換的事件。請根據(jù)分析運(yùn)用UML繪制還書的狀態(tài)圖。7.2活動圖(ActivityDiagram)用于描述活動流程的圖形稱為活動圖。描述系統(tǒng)的動態(tài)行為?!顒訄D適合描述在沒有外部事件觸發(fā)的情況下的系統(tǒng)內(nèi)部的邏輯執(zhí)行過程;否那么,狀態(tài)圖更容易描述。和結(jié)構(gòu)化方法中的工具-程序流程圖-作用根本一致。是一種特殊的狀態(tài)圖。與狀態(tài)圖的區(qū)別活動圖著重表現(xiàn)從一個活動到另一個活動的控制流,是內(nèi)部處理驅(qū)動的流程;狀態(tài)圖著重描述從一個狀態(tài)到另一個狀態(tài)的流程,主要有外部事件的參與。7.2活動圖活動圖可以用作以下目的:描述一個操作執(zhí)行過程中所完成的工作〔動作〕,這是活動圖最常見的用途。描述對象內(nèi)部的工作。顯示如何執(zhí)行一組相關(guān)的動作,以及這些動作如何影響它們周圍的對象。顯示用例的實例如何執(zhí)行動作以及如何改變對象狀態(tài)。說明一次業(yè)務(wù)流程中的人〔參與者〕和對象是如何工作的。7.2.1活動圖的組成1.活動圖中的事物狀態(tài)(State)活動狀態(tài)和動作狀態(tài)起點(diǎn)(InitialState)活動圖的開始終點(diǎn)(FinalState)活動圖的終點(diǎn)對象流(ObjectFlowState)活動之間的交換的信息發(fā)送信號(signalSending)活動過程中發(fā)送事件,觸發(fā)另一活動流程接收信號(SignalReceipt)活動過程中接收事件,接收到信號的活動流程開始執(zhí)行泳道(SwimLane)活動的負(fù)責(zé)者遷移(transition)活動的完成與新活動的開始分支(junctionpoint)根據(jù)條件,控制執(zhí)行方向分叉(fork)以下的活動可并發(fā)執(zhí)行結(jié)合(join)以上的并發(fā)活動再此結(jié)合2.活動圖中的關(guān)系(1)執(zhí)行setuporder(2)根據(jù)order的類型是執(zhí)行不同的分支:
singleorder:執(zhí)行assignseat、chargecreditcardsubscription:同時執(zhí)行assignseats、debitaccount或
awardbonus獎金singleorder與subscription兩步可同時進(jìn)行(3)最后mailpacket。7.2.2活動圖實例1.一般的活動圖本活動圖描述一個處理訂單的用例執(zhí)行過程存款活動圖1.狀態(tài)〔State〕狀態(tài)是指在對象的生命周期中滿足某些條件、執(zhí)行某些活動或等待某些事件時的一個條件或狀況?;顒訄D中的狀態(tài)包括動作狀態(tài)和活動狀態(tài)。動作狀態(tài)對象的動作狀態(tài)是活動圖中最小單位的構(gòu)造塊,表示原子動作。動作狀態(tài)有三個特性:原子性;不可中斷性:瞬時性:活動狀態(tài)〔ActiveState)表示的是可以分割的動作特點(diǎn)是:它可以被分解成假設(shè)干活動狀態(tài)或動作狀態(tài),它能夠被中斷,占有有限的時間?;顒訝顟B(tài)可以理解為一個組合,它的控制流由其他活動狀態(tài)或動作狀態(tài)組成。動作狀態(tài)和活動狀態(tài)使用帶圓端的方框表示活動圖中也有初態(tài)和終態(tài)初態(tài)表示一個工作流程的開始,用實心圓點(diǎn)來表示終態(tài)表示了一個活動圖的最后和終結(jié)狀態(tài),用實心圓點(diǎn)外加一個小圓圈來表示轉(zhuǎn)換〔transition〕轉(zhuǎn)換是兩個狀態(tài)間的一種關(guān)系,表示對象將在當(dāng)前狀態(tài)中執(zhí)行動作,并在某個特定事件發(fā)生或某個特定的條件滿足時進(jìn)入后繼狀態(tài)。分支(Branch)分支用于描述基于某個條件的可選擇路徑。一個分支可以有一個進(jìn)入轉(zhuǎn)換和兩個或多個輸出轉(zhuǎn)換在每條輸出轉(zhuǎn)換上都有監(jiān)護(hù)條件表達(dá)式保護(hù),當(dāng)且僅當(dāng)監(jiān)護(hù)條件表達(dá)式為真時,該輸出路徑才有效。在所有輸出轉(zhuǎn)換中,其監(jiān)護(hù)條件不能重疊,而且它們應(yīng)該覆蓋所有的可能性。分支在圖形上用菱形表示分叉〔fork〕和集合〔join〕在UML中使用分叉和集合表示并行發(fā)生的事件流分叉表示把一個單獨(dú)的控制流分成兩個或多個并發(fā)的控制流。一個分叉可以有一個進(jìn)入轉(zhuǎn)移和兩個或多個輸出轉(zhuǎn)移,每一個轉(zhuǎn)移表示一個獨(dú)立的控制流。集合表示兩個或多個并發(fā)控制流的同步發(fā)生,一個集合可以有兩個或多個進(jìn)入轉(zhuǎn)移和一個輸出轉(zhuǎn)移。分叉和集合在圖形上都使用同步條來表示,同步條通常用一條粗的水平線表示圖7.16顯示了分叉和集合的圖示。例如:描述打活動中的并發(fā)事件泳道〔swimlane〕用活動圖描述客戶在商店中購置物品的過程。7.2.9對象流〔objectstream〕對象流是動作狀態(tài)或活動狀態(tài)與對象間的依賴關(guān)系。用活動圖描述某個對象時,可以把所涉及的對象放置在活動圖上,并用一個依賴將這些對象連接到對它們進(jìn)行創(chuàng)立、撤銷和修改的活動轉(zhuǎn)移上。這種包括依賴關(guān)系和對象的應(yīng)用被稱為對象流。在UML中,使用矩形表示對象,對象和動作之間使用帶箭頭的虛線連接,帶箭頭的虛線表示對象流。工具欄-customize…7.2.9對象流對象流可用于對以下關(guān)系建模:動作狀態(tài)對對象的使用以及動作狀態(tài)對對象的影響。對象流中的對象有以下特點(diǎn):⑴一個對象可以由多個動作操作。⑵一個動作輸出的對象可以作為另一個動作輸入的對象。⑶在活動圖中,同一個對象可以屢次出現(xiàn),它的每一次出現(xiàn)說明該對象正處于對象生存期的不同時間點(diǎn)。7.2.9對象流如果箭頭是從動作狀態(tài)出發(fā)指向?qū)ο螅敲幢硎緞幼鲗ο笫┘恿艘欢ǖ挠绊?。施加的影響包括?chuàng)立、修改和撤銷等。如果箭頭從對象指向動作狀態(tài),那么表示該動作使用對象流所指向的對象。狀態(tài)圖中的對象用矩形表示,矩形內(nèi)是該對象的名稱,名稱下的方括號說明對象此時的狀態(tài)。以下圖顯示了一個支付賬單的對象流。在對一個系統(tǒng)建模時,通常有兩種使用活動圖的方式:為工作流建模為對象的操作建模⑴為工作流建模對工作流建模強(qiáng)調(diào)與系統(tǒng)進(jìn)行交互的對象所觀察到的活動。工作流一般處于系統(tǒng)的邊界,用于可視化、詳述、構(gòu)造和文檔化開發(fā)系統(tǒng)所涉及的業(yè)務(wù)流程。用于業(yè)務(wù)建模的時候,每一條泳道表示一個職責(zé)單位,該圖能夠有效地表達(dá)出所有職責(zé)單位之間的工作職責(zé),業(yè)務(wù)范圍及之間的交互關(guān)系、信息流程。⑵為對象的操作建模在這種情況下活動圖本質(zhì)上就是流程圖,它描述系統(tǒng)的活動、判定點(diǎn)和分支等局部。因此,在UML中,可以把活動圖作為流程圖來使用,用于對系統(tǒng)的操作建模。每一個對象占據(jù)一個泳道,而活動那么是該對象的成員方法。使用活動圖對系統(tǒng)建模的步驟1、確定活動圖所關(guān)注的業(yè)務(wù)流程。2、確定該業(yè)務(wù)流程中的業(yè)務(wù)對象。3、確定該工作流的起始狀態(tài)和終止?fàn)顟B(tài)。4、從該工作流的起始狀態(tài)開始,說明隨著時間發(fā)生的動作和活動,并在活動圖中把它們表示成活動狀態(tài)或動作狀態(tài)。5、將復(fù)雜的動作,或?qū)掖纬霈F(xiàn)的動作集合歸并到一個活動狀態(tài),并對每個這樣的活動狀態(tài)提供一個可展開的單獨(dú)的活動圖。6、找出連接這些活動和動作狀態(tài)的轉(zhuǎn)移。如果工作流中涉及重要的對象,那么也把它們參加到活動圖中。實例"新增讀者"用例屬于讀者信息管理中的一個功能,主要用于在系統(tǒng)中增加新的讀者信息,其具體的辦理流程是:〔1〕"讀者"填寫申請表,并交給"圖書管理員";〔2〕"圖書管理員"將申請表中的信息通過錄入界面,輸入到圖書管理系統(tǒng);〔3〕系統(tǒng)中的"業(yè)務(wù)邏輯"組件將判斷輸入的信息是否合法;〔4〕如果不合法那么轉(zhuǎn)入步驟〔5〕,否那么轉(zhuǎn)入步驟〔6〕;〔5〕顯示"添加錯誤信息",轉(zhuǎn)到〔8〕;〔6〕在“數(shù)據(jù)庫〞添加相信的用戶信息;〔7〕顯示"添加成功信息";〔8〕結(jié)束。7.2
活動圖活動被按職責(zé)分配到用線分開的不同區(qū)域(泳道):CustomerSalesStockroom倉庫(1)顧客要求效勞,Sales負(fù)責(zé)接收定單,并提交到Stockroom(2)Stockroom處理定單,與此同時,Customer付款,并由Sales處Deliverorder至Customer。2.帶泳道的活動圖本例為一個按活動職責(zé)(帶泳道)組織的處理訂單用例的活動圖(模型中的活動按職責(zé)組織)。狀態(tài)圖與活動圖的區(qū)別狀態(tài)圖只建模一個對象的行為,活動圖可以建模多個對象的活動活動圖中也允許建模特定活動中對象的某個狀態(tài)7.
活動圖7.5活動圖練習(xí)
1.請選擇下面所列的活動圖的事物中,表示信號的是(),表示對象流的是()。
ABCD
2.關(guān)于右面的活動圖,下面的說法中正確的選項是()。AaPrinter:Printer是信號。B操作開始從“刪除報文框〞活動開始。C在“創(chuàng)立PS文件〞和〞刪除報文框〞活動中發(fā)送“print(file)〞信號。D信號發(fā)送的方向是從左到右。習(xí)題答案
1C,B2C1〕使用RationalRose創(chuàng)立狀態(tài)圖右擊browser框中的CourseOffering類,彈出快捷菜單;選擇New——StatechartDiagrams項;輸入狀態(tài)圖的名字“CourseOfferingStates〞。2〕創(chuàng)立狀態(tài)(States)在工具條中選擇State圖標(biāo);在狀態(tài)圖中單擊要放置狀態(tài)的位置;輸入狀態(tài)的名字。(如出錯,可用Rename命令更改)3〕創(chuàng)立狀態(tài)轉(zhuǎn)換在工具條中選擇StateTransitions圖標(biāo);單擊起始狀態(tài),并拖至下一個狀態(tài);輸入狀態(tài)轉(zhuǎn)換的名字。(如出錯,可用Rename命令更改)4〕細(xì)化狀態(tài)圖4-1.增加狀態(tài)轉(zhuǎn)換的細(xì)節(jié)局部4-2增加狀態(tài)的Actions局部1)雙擊某個狀態(tài),翻開規(guī)格設(shè)定框;2)選擇Actions標(biāo)簽頁;3)右擊Actions框中的任一位置,彈出快捷菜單;4)選擇Insert項,將創(chuàng)立一個類型為entry的action;5)雙擊這個action,彈出action的規(guī)格設(shè)定框;雙擊4-2.增加狀態(tài)的Actions局部6)在when框中設(shè)定相應(yīng)的類型;7)在type框中設(shè)定:action或者sendevent(用^表示);8)輸入action的名字,或event的信息;9)點(diǎn)按OK按扭。狀態(tài)圖完成活動圖(建
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版綠色建筑房地產(chǎn)轉(zhuǎn)讓合同補(bǔ)充協(xié)議3篇
- 二零二五年教育培訓(xùn)機(jī)構(gòu)教師聘用合同書3篇
- 二零二五年度特色農(nóng)產(chǎn)品黃牛養(yǎng)殖購銷合同3篇
- 二零二五年融資租賃合同規(guī)范本2篇
- 二零二五版?zhèn)€人房產(chǎn)抵押借款擔(dān)保合同3篇
- 二零二五年度食堂廚房設(shè)計咨詢與服務(wù)合同2篇
- 二零二五版LOGO知識產(chǎn)權(quán)授權(quán)與品牌戰(zhàn)略規(guī)劃合同3篇
- 二零二五版糧食進(jìn)出口貿(mào)易代理合同示范文本3篇
- 二零二五版服務(wù)器租賃與數(shù)據(jù)同步服務(wù)合同3篇
- 二零二五年度高速鐵路建設(shè)用聚乙烯管材管件采購合同3篇
- 2025年度土地經(jīng)營權(quán)流轉(zhuǎn)合同補(bǔ)充條款范本
- 南通市2025屆高三第一次調(diào)研測試(一模)地理試卷(含答案 )
- Python試題庫(附參考答案)
- 聚酯合成副反應(yīng)介紹
- DB37-T 1342-2021平原水庫工程設(shè)計規(guī)范
- 電除顫教學(xué)課件
- 廣東省藥品電子交易平臺結(jié)算門戶系統(tǒng)會員操作手冊
- DB32T 3960-2020 抗水性自修復(fù)穩(wěn)定土基層施工技術(shù)規(guī)范
- 大斷面隧道設(shè)計技術(shù)基本原理
- 41某31層框架結(jié)構(gòu)住宅預(yù)算書工程概算表
- 成都市國土資源局關(guān)于加強(qiáng)國有建設(shè)用地土地用途變更和
評論
0/150
提交評論