第08章 狀態(tài)圖和活動(dòng)圖_第1頁(yè)
第08章 狀態(tài)圖和活動(dòng)圖_第2頁(yè)
第08章 狀態(tài)圖和活動(dòng)圖_第3頁(yè)
第08章 狀態(tài)圖和活動(dòng)圖_第4頁(yè)
第08章 狀態(tài)圖和活動(dòng)圖_第5頁(yè)
已閱讀5頁(yè),還剩91頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第8章章 狀態(tài)圖和活動(dòng)圖狀態(tài)圖和活動(dòng)圖面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML28.1 什么是狀態(tài)圖什么是狀態(tài)圖狀態(tài)定義為對(duì)象行為在某一個(gè)時(shí)刻的快照或者轉(zhuǎn)折點(diǎn)。例狀態(tài)定義為對(duì)象行為在某一個(gè)時(shí)刻的快照或者轉(zhuǎn)折點(diǎn)。例如,計(jì)算機(jī)的狀態(tài)可以定義為開(kāi)機(jī)、啟動(dòng)、工作中、空閑、如,計(jì)算機(jī)的狀態(tài)可以定義為開(kāi)機(jī)、啟動(dòng)、工作中、空閑、關(guān)機(jī)和離線等。關(guān)機(jī)和離線等。UML中的狀態(tài)圖中的狀態(tài)圖(Statechart diagram)用于描述一個(gè)對(duì)象在其生用于描述一個(gè)對(duì)象在其生存周期間的動(dòng)態(tài)行為存周期間的動(dòng)態(tài)行為, 表現(xiàn)一個(gè)對(duì)象所經(jīng)歷的狀態(tài)序列表現(xiàn)一個(gè)對(duì)象所經(jīng)歷的狀態(tài)序列, 引引起狀態(tài)轉(zhuǎn)移的事件起狀態(tài)轉(zhuǎn)移的

2、事件(event), 以及因狀態(tài)轉(zhuǎn)移而伴隨的動(dòng)作以及因狀態(tài)轉(zhuǎn)移而伴隨的動(dòng)作(action).狀態(tài)圖在檢查、調(diào)試和描述類的動(dòng)態(tài)行為時(shí)非常有狀態(tài)圖在檢查、調(diào)試和描述類的動(dòng)態(tài)行為時(shí)非常有用用.面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML38.1 什么是狀態(tài)圖什么是狀態(tài)圖 狀態(tài)圖除了可以用于描述對(duì)象接收事件觸發(fā)時(shí)的行為狀態(tài)狀態(tài)圖除了可以用于描述對(duì)象接收事件觸發(fā)時(shí)的行為狀態(tài)外,它還可以用于許多其他情況。例如,狀態(tài)圖可以用來(lái)說(shuō)明外,它還可以用于許多其他情況。例如,狀態(tài)圖可以用來(lái)說(shuō)明基于用戶輸入的屏幕狀態(tài)改變,也可以用來(lái)說(shuō)明復(fù)雜用例的狀基于用戶輸入的屏幕狀態(tài)改變,也可以用來(lái)說(shuō)明復(fù)雜用例的狀態(tài)進(jìn)展情況

3、??山顟B(tài)圖的對(duì)象有:態(tài)進(jìn)展情況??山顟B(tài)圖的對(duì)象有:類類用例用例子系統(tǒng)子系統(tǒng)整個(gè)系統(tǒng)整個(gè)系統(tǒng)面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML48.1 什么是狀態(tài)圖什么是狀態(tài)圖起始狀態(tài)起始狀態(tài)終止?fàn)顟B(tài)終止?fàn)顟B(tài)狀態(tài)狀態(tài)事件事件在狀態(tài)圖中在狀態(tài)圖中, ,動(dòng)作可以與狀態(tài)有關(guān)動(dòng)作可以與狀態(tài)有關(guān), ,也可以與轉(zhuǎn)移有關(guān)也可以與轉(zhuǎn)移有關(guān). .- - 與狀態(tài)有關(guān)時(shí)與狀態(tài)有關(guān)時(shí), ,對(duì)象進(jìn)行某狀態(tài)時(shí)觸發(fā)某一動(dòng)作對(duì)象進(jìn)行某狀態(tài)時(shí)觸發(fā)某一動(dòng)作. .- - 與轉(zhuǎn)移有關(guān)時(shí)與轉(zhuǎn)移有關(guān)時(shí), ,對(duì)象在不同狀態(tài)間轉(zhuǎn)移時(shí)對(duì)象在不同狀態(tài)間轉(zhuǎn)移時(shí), ,觸發(fā)相應(yīng)動(dòng)作觸發(fā)相應(yīng)動(dòng)作. .面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&

4、;UML58.1 什么是狀態(tài)圖什么是狀態(tài)圖 在一般系統(tǒng)中,不需對(duì)每個(gè)類創(chuàng)建狀態(tài)圖。當(dāng)一個(gè)類實(shí)例在一般系統(tǒng)中,不需對(duì)每個(gè)類創(chuàng)建狀態(tài)圖。當(dāng)一個(gè)類實(shí)例(對(duì)象)有多種狀態(tài),每種狀態(tài)中的行為表現(xiàn)又不相同,則可(對(duì)象)有多種狀態(tài),每種狀態(tài)中的行為表現(xiàn)又不相同,則可創(chuàng)建狀態(tài)圖。例如,銀行帳戶可以有幾種不同的狀態(tài),可以打創(chuàng)建狀態(tài)圖。例如,銀行帳戶可以有幾種不同的狀態(tài),可以打開(kāi)、關(guān)閉或透支。在這些不同狀態(tài)下,帳戶的處理功能是不同開(kāi)、關(guān)閉或透支。在這些不同狀態(tài)下,帳戶的處理功能是不同的。的。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML68.1 什么是狀態(tài)圖什么是狀態(tài)圖l 屬性擁有較少的可能取值屬性擁有較少

5、的可能取值l 屬性在這些值之間的轉(zhuǎn)移有一定的限制屬性在這些值之間的轉(zhuǎn)移有一定的限制狀態(tài)圖描述的對(duì)象往往有多個(gè)屬性狀態(tài)圖描述的對(duì)象往往有多個(gè)屬性, 應(yīng)該在具有如下應(yīng)該在具有如下特性的屬性上建模特性的屬性上建模:如如: 類類SellableItem中有中有2個(gè)屬性個(gè)屬性: salePrice和和status, 其中其中: salePrice類型為類型為Money, 取值范圍為正實(shí)數(shù)取值范圍為正實(shí)數(shù); status類型為枚舉類型為枚舉(Received, InInspection, Accepted, Rejected)則應(yīng)根據(jù)屬性則應(yīng)根據(jù)屬性status建立狀態(tài)圖建立狀態(tài)圖.面向?qū)ο蠓治雠c設(shè)計(jì)面向

6、對(duì)象分析與設(shè)計(jì)&UML78.2.1 狀態(tài)狀態(tài)送貨處理狀態(tài)圖面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML88.2 狀態(tài)圖的基本概念狀態(tài)圖的基本概念l 狀態(tài)狀態(tài), statel 組合狀態(tài)組合狀態(tài), composite statel 子狀態(tài)子狀態(tài), sub statel 歷史狀態(tài)歷史狀態(tài), history statel 轉(zhuǎn)移轉(zhuǎn)移, transitionl 事件事件, eventl 動(dòng)作動(dòng)作, action面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML98.2.1 狀態(tài)狀態(tài)狀態(tài)是在對(duì)象的生命期中的某外條件或狀況狀態(tài)是在對(duì)象的生命期中的某外條件或狀況, 在此期間在此期間對(duì)象將滿足某

7、些條件、執(zhí)行某些活動(dòng)或等待某些事件對(duì)象將滿足某些條件、執(zhí)行某些活動(dòng)或等待某些事件.狀態(tài)的組成部分狀態(tài)的組成部分: 狀態(tài)名、進(jìn)入狀態(tài)名、進(jìn)入/退出動(dòng)作、內(nèi)部轉(zhuǎn)移、退出動(dòng)作、內(nèi)部轉(zhuǎn)移、子狀態(tài)、延遲事件子狀態(tài)、延遲事件.狀態(tài)的類型狀態(tài)的類型: 初態(tài)、終態(tài)、中間狀態(tài)、組合狀態(tài)、歷初態(tài)、終態(tài)、中間狀態(tài)、組合狀態(tài)、歷史狀態(tài)等史狀態(tài)等.初態(tài)初態(tài)終態(tài)終態(tài)中間狀態(tài)中間狀態(tài)面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML108.2.1 狀態(tài)狀態(tài)狀態(tài)名狀態(tài)名入口動(dòng)作入口動(dòng)作, 進(jìn)入該狀進(jìn)入該狀態(tài)時(shí)執(zhí)行該動(dòng)作態(tài)時(shí)執(zhí)行該動(dòng)作.動(dòng)作動(dòng)作,處于該狀態(tài)處于該狀態(tài)時(shí)執(zhí)行的動(dòng)作時(shí)執(zhí)行的動(dòng)作.事件動(dòng)作事件動(dòng)作,該狀態(tài)中出現(xiàn)該狀

8、態(tài)中出現(xiàn)特定事件時(shí)執(zhí)行的動(dòng)作特定事件時(shí)執(zhí)行的動(dòng)作.退出動(dòng)作退出動(dòng)作, 當(dāng)離開(kāi)該狀態(tài)當(dāng)離開(kāi)該狀態(tài)時(shí)執(zhí)行該動(dòng)作時(shí)執(zhí)行該動(dòng)作.延遲響應(yīng)事件延遲響應(yīng)事件, 在該狀態(tài)出現(xiàn)該事件時(shí)在該狀態(tài)出現(xiàn)該事件時(shí), 不在本不在本狀態(tài)響應(yīng)狀態(tài)響應(yīng),而是延遲到其他狀態(tài)響應(yīng)而是延遲到其他狀態(tài)響應(yīng).面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML118.2.1 狀態(tài)狀態(tài)1.1.狀態(tài)狀態(tài) 狀態(tài)圖中共有狀態(tài)圖中共有3 3種獨(dú)立的狀態(tài)標(biāo)記符,如下圖所示種獨(dú)立的狀態(tài)標(biāo)記符,如下圖所示面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML128.2.1 狀態(tài)狀態(tài) 基本狀態(tài)顯示為圓角基本狀態(tài)顯示為圓角矩形矩形。狀態(tài)的名稱放在矩形。狀態(tài)

9、的名稱放在矩形中。這種標(biāo)記符代表模型中滿足條件的一個(gè)點(diǎn)。例如,中。這種標(biāo)記符代表模型中滿足條件的一個(gè)點(diǎn)。例如,診斷機(jī)的狀態(tài)示例可能包含開(kāi)、關(guān)、診斷和空閑等。診斷機(jī)的狀態(tài)示例可能包含開(kāi)、關(guān)、診斷和空閑等。標(biāo)準(zhǔn)狀態(tài)的名稱指示滿足了什么條件,如下圖所示。標(biāo)準(zhǔn)狀態(tài)的名稱指示滿足了什么條件,如下圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML138.2.1 狀態(tài)狀態(tài) 開(kāi)始狀態(tài)和結(jié)束狀態(tài)標(biāo)記符是指示模型的開(kāi)始和結(jié)束狀態(tài)開(kāi)始狀態(tài)和結(jié)束狀態(tài)標(biāo)記符是指示模型的開(kāi)始和結(jié)束狀態(tài)的特殊標(biāo)記符。模型中的的特殊標(biāo)記符。模型中的開(kāi)始狀態(tài)開(kāi)始狀態(tài)是一個(gè)實(shí)心點(diǎn)。是一個(gè)實(shí)心點(diǎn)。結(jié)束狀態(tài)結(jié)束狀態(tài)是是帶有圓圈的實(shí)心點(diǎn)。帶

10、有圓圈的實(shí)心點(diǎn)。模型不必模型不必同時(shí)具有同時(shí)具有開(kāi)始和結(jié)束狀態(tài)開(kāi)始和結(jié)束狀態(tài),因?yàn)椋驗(yàn)槟P涂梢钥偸沁\(yùn)行,從不停止。模型可以總是運(yùn)行,從不停止。 狀態(tài)圖中可以包含狀態(tài)圖中可以包含0 0到多個(gè)到多個(gè)開(kāi)始狀態(tài)。狀態(tài)圖中也可以包含開(kāi)始狀態(tài)。狀態(tài)圖中也可以包含多個(gè)多個(gè)結(jié)束狀態(tài)結(jié)束狀態(tài),每一個(gè)都表示一個(gè)模型能夠終止的點(diǎn)。,每一個(gè)都表示一個(gè)模型能夠終止的點(diǎn)。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML148.2.1 狀態(tài)狀態(tài) 狀態(tài)細(xì)節(jié)狀態(tài)細(xì)節(jié)是指當(dāng)對(duì)象處于特定狀態(tài)時(shí),可能要進(jìn)行一些活動(dòng),是指當(dāng)對(duì)象處于特定狀態(tài)時(shí),可能要進(jìn)行一些活動(dòng),例如生成報(bào)表、進(jìn)行計(jì)算或向另一對(duì)象發(fā)送事件。例如生成報(bào)表、進(jìn)行計(jì)算

11、或向另一對(duì)象發(fā)送事件。 為了進(jìn)一步描述對(duì)象在特定狀態(tài)下的一些活動(dòng),可加入細(xì)節(jié)為了進(jìn)一步描述對(duì)象在特定狀態(tài)下的一些活動(dòng),可加入細(xì)節(jié)活動(dòng)、進(jìn)入、退出、事件和狀態(tài)歷史信息?;顒?dòng)、進(jìn)入、退出、事件和狀態(tài)歷史信息。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML158.2.2 組合狀態(tài)和子狀態(tài)組合狀態(tài)和子狀態(tài)一個(gè)對(duì)象可以通過(guò)同步操作同一個(gè)對(duì)象可以通過(guò)同步操作同時(shí)擁有多個(gè)狀態(tài)。有時(shí),對(duì)象時(shí)擁有多個(gè)狀態(tài)。有時(shí),對(duì)象還可以擁有層次結(jié)構(gòu)的狀態(tài)。還可以擁有層次結(jié)構(gòu)的狀態(tài)。當(dāng)單個(gè)狀態(tài)具有獨(dú)有的附加的當(dāng)單個(gè)狀態(tài)具有獨(dú)有的附加的子狀態(tài)時(shí),可以在狀態(tài)圖中使子狀態(tài)時(shí),可以在狀態(tài)圖中使用層次結(jié)構(gòu)的狀態(tài)。用層次結(jié)構(gòu)的狀態(tài)。

12、子狀態(tài)之間的子狀態(tài)之間的 and and 關(guān)系關(guān)系, , 組合組合狀態(tài)中某時(shí)刻可以同時(shí)到達(dá)多狀態(tài)中某時(shí)刻可以同時(shí)到達(dá)多個(gè)子狀態(tài)個(gè)子狀態(tài). .面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML168.2.2 組合狀態(tài)和子狀態(tài)組合狀態(tài)和子狀態(tài)嵌套在另一個(gè)狀態(tài)中的狀態(tài)稱為子狀態(tài)嵌套在另一個(gè)狀態(tài)中的狀態(tài)稱為子狀態(tài);包含子狀態(tài)的狀態(tài)稱為組合狀態(tài)包含子狀態(tài)的狀態(tài)稱為組合狀態(tài).組合狀態(tài)組合狀態(tài)子狀態(tài)子狀態(tài)子狀態(tài)也可以有初態(tài)和終態(tài)子狀態(tài)也可以有初態(tài)和終態(tài)面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML178.2.2 組合狀態(tài)和子狀態(tài)組合狀態(tài)和子狀態(tài)收錄機(jī)狀態(tài)圖面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&

13、;UML188.2.2 組合狀態(tài)和子狀態(tài)組合狀態(tài)和子狀態(tài)子狀態(tài)之間的子狀態(tài)之間的 or 關(guān)系關(guān)系, 任意時(shí)刻只能到達(dá)一個(gè)子狀態(tài)任意時(shí)刻只能到達(dá)一個(gè)子狀態(tài).面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML198.2.2 組合狀態(tài)和子狀態(tài)組合狀態(tài)和子狀態(tài) 并發(fā)子狀態(tài)并發(fā)子狀態(tài) 在一個(gè)狀態(tài)在一個(gè)狀態(tài)中可能多個(gè)并發(fā)中可能多個(gè)并發(fā)的子狀態(tài)。如右的子狀態(tài)。如右圖所示的訂貨對(duì)圖所示的訂貨對(duì)象狀態(tài)圖。象狀態(tài)圖。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML208.2.2 組合狀態(tài)和子狀態(tài)組合狀態(tài)和子狀態(tài) 并發(fā)子狀態(tài)并發(fā)子狀態(tài)面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML218.2.3 歷史狀

14、態(tài)歷史狀態(tài)歷史狀態(tài)是偽狀態(tài)歷史狀態(tài)是偽狀態(tài), 其目的是記住從組合狀態(tài)中退出時(shí)其目的是記住從組合狀態(tài)中退出時(shí)所處的子狀態(tài)所處的子狀態(tài), 當(dāng)再次進(jìn)入組合狀態(tài)時(shí)當(dāng)再次進(jìn)入組合狀態(tài)時(shí), 可以直接進(jìn)入可以直接進(jìn)入這個(gè)子狀態(tài)這個(gè)子狀態(tài), 而不是再?gòu)慕M合狀態(tài)的初態(tài)開(kāi)始而不是再?gòu)慕M合狀態(tài)的初態(tài)開(kāi)始.淺淺(shallow)歷史狀態(tài)歷史狀態(tài), 只記住最外層組合狀態(tài)的歷史只記住最外層組合狀態(tài)的歷史.深深(deep)歷史狀態(tài)歷史狀態(tài), 可以記住任意深度的組合狀態(tài)的歷史可以記住任意深度的組合狀態(tài)的歷史.面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML228.2.3 歷史狀態(tài)歷史狀態(tài)當(dāng)從狀態(tài)當(dāng)從狀態(tài)“結(jié)賬結(jié)賬”和和“

15、顯示購(gòu)物車顯示購(gòu)物車”返回子狀態(tài)返回子狀態(tài)“顯示顯示索引信息索引信息”時(shí),將進(jìn)入的是離開(kāi)時(shí)的歷史狀態(tài)。也就是時(shí),將進(jìn)入的是離開(kāi)時(shí)的歷史狀態(tài)。也就是說(shuō),轉(zhuǎn)到購(gòu)物說(shuō),轉(zhuǎn)到購(gòu)物車或結(jié)賬區(qū)之后,車或結(jié)賬區(qū)之后,再回到再回到“瀏覽目錄瀏覽目錄”的的頁(yè)面時(shí),其中的內(nèi)容頁(yè)面時(shí),其中的內(nèi)容是不變的,仍然保留是不變的,仍然保留原來(lái)的信息。原來(lái)的信息。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML238.2.3 歷史狀態(tài)歷史狀態(tài)面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML248.2.4 轉(zhuǎn)移轉(zhuǎn)移 轉(zhuǎn)移用來(lái)顯示從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的處理流。轉(zhuǎn)移使轉(zhuǎn)移用來(lái)顯示從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的處理流。轉(zhuǎn)移使用

16、從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的用從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的開(kāi)放箭頭開(kāi)放箭頭來(lái)標(biāo)記,如下圖所示。來(lái)標(biāo)記,如下圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML258.2.4 轉(zhuǎn)移轉(zhuǎn)移轉(zhuǎn)移是兩介狀態(tài)之間的一種關(guān)系轉(zhuǎn)移是兩介狀態(tài)之間的一種關(guān)系, 表示對(duì)象將在第一個(gè)表示對(duì)象將在第一個(gè)狀態(tài)執(zhí)行一定的動(dòng)作狀態(tài)執(zhí)行一定的動(dòng)作, 并在某個(gè)特定事件發(fā)生且滿足某并在某個(gè)特定事件發(fā)生且滿足某個(gè)特定的警戒條件時(shí)進(jìn)入第二個(gè)狀態(tài)個(gè)特定的警戒條件時(shí)進(jìn)入第二個(gè)狀態(tài).轉(zhuǎn)移的格式轉(zhuǎn)移的格式: event-name (parameters) guard-condition /action例如例如: targetAt(p) isT

17、hreat / t.addTarget(p)面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML268.2.4 轉(zhuǎn)移轉(zhuǎn)移對(duì)于一個(gè)給定的狀態(tài)對(duì)于一個(gè)給定的狀態(tài), 最終只能產(chǎn)生一個(gè)轉(zhuǎn)移最終只能產(chǎn)生一個(gè)轉(zhuǎn)移, 因此從因此從一個(gè)狀態(tài)出發(fā)的幾個(gè)轉(zhuǎn)移之間應(yīng)該是互斥的一個(gè)狀態(tài)出發(fā)的幾個(gè)轉(zhuǎn)移之間應(yīng)該是互斥的, 包括包括: 事事件不同件不同; 事件相同但警戒條件互斥事件相同但警戒條件互斥.面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML278.2.4 轉(zhuǎn)移轉(zhuǎn)移 下面的示例演示了銀行帳戶中的轉(zhuǎn)移及其有效狀態(tài),如下圖下面的示例演示了銀行帳戶中的轉(zhuǎn)移及其有效狀態(tài),如下圖所示。所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c

18、設(shè)計(jì)&UML288.2.4 轉(zhuǎn)移轉(zhuǎn)移決策點(diǎn)決策點(diǎn) 決策點(diǎn)在建模狀態(tài)圖時(shí)提供了方便,因?yàn)樗ㄟ^(guò)在中心位決策點(diǎn)在建模狀態(tài)圖時(shí)提供了方便,因?yàn)樗ㄟ^(guò)在中心位置分組轉(zhuǎn)移到各自的方向,從而提高了狀態(tài)圖的可視性,如下置分組轉(zhuǎn)移到各自的方向,從而提高了狀態(tài)圖的可視性,如下圖所示。圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML298.2.4 轉(zhuǎn)移轉(zhuǎn)移同步同步 狀態(tài)圖中使用同步條是為了說(shuō)明并發(fā)工作流的狀態(tài)圖中使用同步條是為了說(shuō)明并發(fā)工作流的分叉分叉與與聯(lián)合聯(lián)合。下圖所示為同步條的標(biāo)記符。下圖所示為同步條的標(biāo)記符。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML308.2.4 轉(zhuǎn)移轉(zhuǎn)移

19、條件條件用來(lái)描述狀態(tài)轉(zhuǎn)移的前提。用來(lái)描述狀態(tài)轉(zhuǎn)移的前提。事件事件用來(lái)指示什么觸發(fā)了轉(zhuǎn)用來(lái)指示什么觸發(fā)了轉(zhuǎn)移,移,動(dòng)作動(dòng)作用來(lái)說(shuō)明當(dāng)轉(zhuǎn)移發(fā)生時(shí)會(huì)產(chǎn)生什么情況。事件、條件用來(lái)說(shuō)明當(dāng)轉(zhuǎn)移發(fā)生時(shí)會(huì)產(chǎn)生什么情況。事件、條件和動(dòng)作是轉(zhuǎn)移的三個(gè)選項(xiàng),其定義格式見(jiàn)下圖所示。和動(dòng)作是轉(zhuǎn)移的三個(gè)選項(xiàng),其定義格式見(jiàn)下圖所示。該圖描述的信息是該圖描述的信息是“如果如果guardConditionguardCondition為為truetrue,當(dāng),當(dāng)anEventanEvent發(fā)生時(shí),將執(zhí)行發(fā)生時(shí),將執(zhí)行anActionanAction,并立即進(jìn)入狀態(tài),并立即進(jìn)入狀態(tài)B”B”事件事件條件條件動(dòng)作動(dòng)作面向?qū)ο蠓治雠c設(shè)計(jì)

20、面向?qū)ο蠓治雠c設(shè)計(jì)&UML318.2.5 事件事件 事件通常在從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的轉(zhuǎn)移路徑上直接指事件通常在從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的轉(zhuǎn)移路徑上直接指定。事件用來(lái)指示是什么導(dǎo)致了模型中狀態(tài)的改變。下圖演示定。事件用來(lái)指示是什么導(dǎo)致了模型中狀態(tài)的改變。下圖演示了電話卡事件的標(biāo)記符。了電話卡事件的標(biāo)記符。事件事件面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML328.2.5 事件事件事件是對(duì)一個(gè)在時(shí)間和空間上占有一定位置的有意義事件是對(duì)一個(gè)在時(shí)間和空間上占有一定位置的有意義的事情的詳細(xì)說(shuō)明的事情的詳細(xì)說(shuō)明.(1) 調(diào)用事件調(diào)用事件, 表示對(duì)操作的調(diào)用表示對(duì)操作的調(diào)用.問(wèn)題問(wèn)題: 調(diào)用

21、誰(shuí)的操作調(diào)用誰(shuí)的操作?面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML338.2.5 事件事件(2) 變化事件變化事件, 表示某布爾表達(dá)式值變化表示某布爾表達(dá)式值變化, 引起的事件引起的事件.注意注意: 變化事件與警戒條件區(qū)別變化事件與警戒條件區(qū)別面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML348.2.5 事件事件(3) 時(shí)間事件時(shí)間事件, 表示滿足某一時(shí)間表達(dá)式表示滿足某一時(shí)間表達(dá)式, 引起的事件引起的事件.(4) 信號(hào)事件信號(hào)事件, 表示對(duì)象接收到某信號(hào)的事件表示對(duì)象接收到某信號(hào)的事件. 信號(hào)是對(duì)象之間異步發(fā)送信號(hào)是對(duì)象之間異步發(fā)送/接收的接收的, 它們之間可以形它們之間可以形

22、成泛化關(guān)系成泛化關(guān)系. 信號(hào)事件與調(diào)用事件類似信號(hào)事件與調(diào)用事件類似, 是異步和同步的區(qū)別是異步和同步的區(qū)別.面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML358.2.6 動(dòng)作動(dòng)作動(dòng)作說(shuō)明了當(dāng)事件發(fā)生時(shí)發(fā)生了什么行為。動(dòng)作說(shuō)明了當(dāng)事件發(fā)生時(shí)發(fā)生了什么行為。EventEvent類型的動(dòng)作示例如類型的動(dòng)作示例如右圖右圖. .這個(gè)示例說(shuō)明了只這個(gè)示例說(shuō)明了只要要ResetUsersResetUsers事件傳遞事件傳遞的所有用戶都沒(méi)有打開(kāi),的所有用戶都沒(méi)有打開(kāi),他們就會(huì)被全部刪除。他們就會(huì)被全部刪除。動(dòng)作動(dòng)作面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML368.2.6 動(dòng)作動(dòng)作動(dòng)作是一個(gè)可

23、執(zhí)行的原子計(jì)算動(dòng)作是一個(gè)可執(zhí)行的原子計(jì)算. UML中沒(méi)有規(guī)定動(dòng)作的中沒(méi)有規(guī)定動(dòng)作的具體語(yǔ)法形式具體語(yǔ)法形式, 采用程序設(shè)計(jì)的語(yǔ)言語(yǔ)法即可采用程序設(shè)計(jì)的語(yǔ)言語(yǔ)法即可.兩種特殊動(dòng)作兩種特殊動(dòng)作: 進(jìn)入動(dòng)作進(jìn)入動(dòng)作: entry / action-expression 退出動(dòng)作退出動(dòng)作: exit / action-expression面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML378.2.7 條件條件 條件說(shuō)明狀態(tài)轉(zhuǎn)移必須要滿足的前提。條件一般為一個(gè)布爾條件說(shuō)明狀態(tài)轉(zhuǎn)移必須要滿足的前提。條件一般為一個(gè)布爾表達(dá)式。如下圖所示。表達(dá)式。如下圖所示。條件條件面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&

24、amp;UML388.2.8 狀態(tài)圖狀態(tài)圖- 復(fù)雜轉(zhuǎn)換復(fù)雜轉(zhuǎn)換轉(zhuǎn)換類型轉(zhuǎn)換類型描述描述語(yǔ)法語(yǔ)法外部轉(zhuǎn)換外部轉(zhuǎn)換 對(duì)事件做出響應(yīng),引起狀態(tài)變化對(duì)事件做出響應(yīng),引起狀態(tài)變化或自身轉(zhuǎn)換,同時(shí)引發(fā)一個(gè)特定或自身轉(zhuǎn)換,同時(shí)引發(fā)一個(gè)特定動(dòng)作,如果離開(kāi)或進(jìn)入狀態(tài)將引動(dòng)作,如果離開(kāi)或進(jìn)入狀態(tài)將引發(fā)進(jìn)入轉(zhuǎn)換、離開(kāi)轉(zhuǎn)換發(fā)進(jìn)入轉(zhuǎn)換、離開(kāi)轉(zhuǎn)換事件事件(參數(shù)參數(shù))監(jiān)護(hù)條件監(jiān)護(hù)條件/動(dòng)動(dòng)作作內(nèi)部轉(zhuǎn)換內(nèi)部轉(zhuǎn)換 對(duì)事件做出響應(yīng),并執(zhí)行一個(gè)特對(duì)事件做出響應(yīng),并執(zhí)行一個(gè)特定的活動(dòng),但并不引起狀態(tài)變化定的活動(dòng),但并不引起狀態(tài)變化或進(jìn)入轉(zhuǎn)換、離開(kāi)轉(zhuǎn)換或進(jìn)入轉(zhuǎn)換、離開(kāi)轉(zhuǎn)換事件事件(參數(shù)參數(shù))監(jiān)護(hù)條件監(jiān)護(hù)條件/動(dòng)動(dòng)作作進(jìn)入轉(zhuǎn)換進(jìn)入轉(zhuǎn)換

25、當(dāng)進(jìn)入某一狀態(tài)時(shí),執(zhí)行相應(yīng)活當(dāng)進(jìn)入某一狀態(tài)時(shí),執(zhí)行相應(yīng)活動(dòng)動(dòng)entry/活動(dòng)活動(dòng)退出轉(zhuǎn)換退出轉(zhuǎn)換 當(dāng)離開(kāi)某一狀態(tài)時(shí),執(zhí)行相應(yīng)活當(dāng)離開(kāi)某一狀態(tài)時(shí),執(zhí)行相應(yīng)活動(dòng)動(dòng)exit/活動(dòng)活動(dòng)面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML398.2.8 狀態(tài)圖狀態(tài)圖- 復(fù)雜轉(zhuǎn)換復(fù)雜轉(zhuǎn)換面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML408.2.8 狀態(tài)圖狀態(tài)圖- 復(fù)雜轉(zhuǎn)換復(fù)雜轉(zhuǎn)換進(jìn)入和退出轉(zhuǎn)換:當(dāng)進(jìn)入一個(gè)狀態(tài)時(shí),執(zhí)行某個(gè)動(dòng)作;進(jìn)入和退出轉(zhuǎn)換:當(dāng)進(jìn)入一個(gè)狀態(tài)時(shí),執(zhí)行某個(gè)動(dòng)作;或當(dāng)退出某個(gè)狀態(tài)時(shí),執(zhí)行什么動(dòng)作。這時(shí)就可以使用或當(dāng)退出某個(gè)狀態(tài)時(shí),執(zhí)行什么動(dòng)作。這時(shí)就可以使用進(jìn)入和退出轉(zhuǎn)換來(lái)表示進(jìn)入和退出轉(zhuǎn)

26、換來(lái)表示內(nèi)部轉(zhuǎn)換:用來(lái)處理一些不離開(kāi)該狀態(tài)的事件內(nèi)部轉(zhuǎn)換:用來(lái)處理一些不離開(kāi)該狀態(tài)的事件 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML418.3.1 狀態(tài)圖的閱讀狀態(tài)圖的閱讀最為核心的元素?zé)o外乎是兩個(gè):一個(gè)是用圓角矩形表示最為核心的元素?zé)o外乎是兩個(gè):一個(gè)是用圓角矩形表示的狀態(tài)(初態(tài)和終態(tài)例外);另一個(gè)則是在狀態(tài)之間的、的狀態(tài)(初態(tài)和終態(tài)例外);另一個(gè)則是在狀態(tài)之間的、包含一些文字描述的有向箭頭線,這些箭頭線稱為轉(zhuǎn)換包含一些文字描述的有向箭頭線,這些箭頭線稱為轉(zhuǎn)換面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML428.3.1 狀態(tài)圖的閱讀狀態(tài)圖的閱讀源狀態(tài):即受轉(zhuǎn)換影響的狀態(tài)源狀態(tài):

27、即受轉(zhuǎn)換影響的狀態(tài)目標(biāo)狀態(tài):當(dāng)轉(zhuǎn)換完成后對(duì)象的狀態(tài)目標(biāo)狀態(tài):當(dāng)轉(zhuǎn)換完成后對(duì)象的狀態(tài) 觸發(fā)事件:用來(lái)為轉(zhuǎn)換定義一個(gè)事件,包括調(diào)用、改變、觸發(fā)事件:用來(lái)為轉(zhuǎn)換定義一個(gè)事件,包括調(diào)用、改變、信號(hào)、時(shí)間四類事件信號(hào)、時(shí)間四類事件監(jiān)護(hù)條件:布爾表達(dá)式,決定是否激活轉(zhuǎn)換、監(jiān)護(hù)條件:布爾表達(dá)式,決定是否激活轉(zhuǎn)換、動(dòng)作:轉(zhuǎn)換激活時(shí)的操作動(dòng)作:轉(zhuǎn)換激活時(shí)的操作面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML438.3.1 狀態(tài)圖的閱讀狀態(tài)圖的閱讀與狀態(tài)與狀態(tài)off相關(guān)的轉(zhuǎn)換有兩個(gè),其觸發(fā)事件都是相關(guān)的轉(zhuǎn)換有兩個(gè),其觸發(fā)事件都是turnOn,只不過(guò)其監(jiān)護(hù)條件不同。如果對(duì)象收到事件只不過(guò)其監(jiān)護(hù)條件不同。如果對(duì)象

28、收到事件turnOn,那,那么將判斷壺中是否有水;如果么將判斷壺中是否有水;如果沒(méi)水沒(méi)水,則仍然處于,則仍然處于off狀狀態(tài);如果態(tài);如果有水有水則轉(zhuǎn)為則轉(zhuǎn)為on狀態(tài),并執(zhí)行狀態(tài),并執(zhí)行“燒水燒水”動(dòng)作動(dòng)作而與狀態(tài)而與狀態(tài)on相關(guān)的轉(zhuǎn)換也有兩個(gè),如果相關(guān)的轉(zhuǎn)換也有兩個(gè),如果“水開(kāi)了水開(kāi)了”就執(zhí)就執(zhí)行行turnOff,關(guān)掉開(kāi)關(guān);如果燒壞了,就進(jìn)入了終態(tài)了,關(guān)掉開(kāi)關(guān);如果燒壞了,就進(jìn)入了終態(tài)了 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML448.3.1 狀態(tài)圖狀態(tài)圖練習(xí):練習(xí): 閱讀一個(gè)電梯系統(tǒng)的狀態(tài)圖閱讀一個(gè)電梯系統(tǒng)的狀態(tài)圖步驟步驟: : 1 1)標(biāo)識(shí)出狀態(tài)。)標(biāo)識(shí)出狀態(tài)。 2 2)標(biāo)識(shí)

29、出轉(zhuǎn)移。)標(biāo)識(shí)出轉(zhuǎn)移。 3 3)標(biāo)識(shí)出事件和動(dòng)作。)標(biāo)識(shí)出事件和動(dòng)作。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML458.2.1 狀態(tài)狀態(tài)8.2.1 狀態(tài)狀態(tài)面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML468.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法狀態(tài)圖建模需要執(zhí)行以下步驟:狀態(tài)圖建模需要執(zhí)行以下步驟: 1 1)標(biāo)識(shí)出需要進(jìn)一步建模的實(shí)體。)標(biāo)識(shí)出需要進(jìn)一步建模的實(shí)體。 2 2)標(biāo)識(shí)出每一個(gè)實(shí)體的開(kāi)始狀態(tài)和結(jié)束狀態(tài)。)標(biāo)識(shí)出每一個(gè)實(shí)體的開(kāi)始狀態(tài)和結(jié)束狀態(tài)。 3 3)確定與每一個(gè)實(shí)體相關(guān)的事件。)確定與每一個(gè)實(shí)體相關(guān)的事件。 4 4)從起始狀態(tài)開(kāi)始創(chuàng)建狀態(tài)圖。)從起始狀態(tài)開(kāi)始創(chuàng)

30、建狀態(tài)圖。 5 5)如果必要?jiǎng)t創(chuàng)建組合狀態(tài)。)如果必要?jiǎng)t創(chuàng)建組合狀態(tài)。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML478.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法 1標(biāo)識(shí)出需要進(jìn)一步建模的實(shí)體 首先要標(biāo)識(shí)出哪些實(shí)體需要使用狀態(tài)圖進(jìn)一步建模。狀態(tài)圖應(yīng)該用于復(fù)雜的實(shí)體,而不必用于具有復(fù)雜行為的實(shí)體。對(duì)于有復(fù)雜行為的實(shí)體,使用活動(dòng)圖可能會(huì)更加適合。具有清晰、有序的狀態(tài)實(shí)體最適合使用狀態(tài)圖進(jìn)一步建模。后面將會(huì)建模一個(gè)Grade對(duì)象,尤其是它的保存功能。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML488.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法 2標(biāo)識(shí)出每一個(gè)實(shí)體的開(kāi)始和結(jié)束狀態(tài) 要想標(biāo)

31、識(shí)出某個(gè)實(shí)體的開(kāi)始狀態(tài),需要知道實(shí)體是如何實(shí)例化的,以及實(shí)體是如何開(kāi)始的。Grade對(duì)象在有了一個(gè)新的分?jǐn)?shù)需要保存時(shí)實(shí)例化。要想標(biāo)識(shí)出某個(gè)實(shí)體的結(jié)束狀態(tài),需要知道相反的信息:實(shí)體何時(shí)從系統(tǒng)中退出?Grade對(duì)象在完成保存數(shù)據(jù)的操作之后退出系統(tǒng),不管該操作是否成功。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML498.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法 因此,因此,Grade對(duì)象的狀態(tài)圖具有如下描述保存功對(duì)象的狀態(tài)圖具有如下描述保存功能的開(kāi)始狀態(tài)和結(jié)束狀態(tài):能的開(kāi)始狀態(tài)和結(jié)束狀態(tài): Information Entered 開(kāi)始狀態(tài)。開(kāi)始狀態(tài)。 Destroy 結(jié)束狀態(tài)。結(jié)束狀態(tài)。面

32、向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML508.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法3 3確定與每一個(gè)實(shí)體相關(guān)的事件確定與每一個(gè)實(shí)體相關(guān)的事件 事件用來(lái)最終完成實(shí)體的功能。要想確定實(shí)體的事件,需要事件用來(lái)最終完成實(shí)體的功能。要想確定實(shí)體的事件,需要知道事件的任務(wù)。對(duì)于知道事件的任務(wù)。對(duì)于GradeGrade對(duì)象,它的任務(wù)是保存分?jǐn)?shù)。進(jìn)一對(duì)象,它的任務(wù)是保存分?jǐn)?shù)。進(jìn)一步了解事件的任務(wù)之后,就可以確定步了解事件的任務(wù)之后,就可以確定GradeGrade對(duì)象的事件包括接受對(duì)象的事件包括接受數(shù)據(jù)、成功地保存數(shù)據(jù)和不成功地保存數(shù)據(jù)。數(shù)據(jù)、成功地保存數(shù)據(jù)和不成功地保存數(shù)據(jù)。 有了這些事件之后

33、,就可以為有了這些事件之后,就可以為GradeGrade對(duì)象創(chuàng)建這些事件的狀對(duì)象創(chuàng)建這些事件的狀態(tài)列表,如下所示:態(tài)列表,如下所示: Ready Ready 用于數(shù)據(jù)加載時(shí)。用于數(shù)據(jù)加載時(shí)。 Persisting Persisting 用于數(shù)據(jù)保存時(shí)。用于數(shù)據(jù)保存時(shí)。 Saved Saved 用于數(shù)據(jù)已經(jīng)保存后。用于數(shù)據(jù)已經(jīng)保存后。 Error Error 用于數(shù)據(jù)由于出錯(cuò)而未成功保存時(shí)。用于數(shù)據(jù)由于出錯(cuò)而未成功保存時(shí)。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML518.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法4 4從開(kāi)始狀態(tài)開(kāi)始創(chuàng)建從開(kāi)始狀態(tài)開(kāi)始創(chuàng)建狀態(tài)圖狀態(tài)圖 利用上述的信息,我利

34、用上述的信息,我們就可以創(chuàng)建一個(gè)簡(jiǎn)單們就可以創(chuàng)建一個(gè)簡(jiǎn)單的狀態(tài)圖來(lái)描述的狀態(tài)圖來(lái)描述GradeGrade對(duì)對(duì)象的不同狀態(tài),以及觸象的不同狀態(tài),以及觸發(fā)狀態(tài)改變的事件,如發(fā)狀態(tài)改變的事件,如下圖所示。下圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML528.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法5 5如果必要?jiǎng)t指定合成狀態(tài)如果必要?jiǎng)t指定合成狀態(tài) 創(chuàng)建狀態(tài)圖的第一步工作完成之后,可以檢查一下是否創(chuàng)建狀態(tài)圖的第一步工作完成之后,可以檢查一下是否需要通過(guò)創(chuàng)建合成狀態(tài)來(lái)進(jìn)一步修飾某些狀態(tài)。需要通過(guò)創(chuàng)建合成狀態(tài)來(lái)進(jìn)一步修飾某些狀態(tài)。 在本例中,我們認(rèn)為在本例中,我們認(rèn)為PersistingP

35、ersisting狀態(tài)過(guò)于籠統(tǒng),因此可狀態(tài)過(guò)于籠統(tǒng),因此可以為其提供子狀態(tài),其中包括以為其提供子狀態(tài),其中包括LoadLoad、UpdateUpdate和和SaveSave,或者只,或者只包括包括InsertInsert,如下圖所示。,如下圖所示。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML538.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML548.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法例:航班機(jī)票預(yù)訂系統(tǒng)例:航班機(jī)票預(yù)訂系統(tǒng)尋找主要狀態(tài):對(duì)于航班機(jī)票預(yù)訂系統(tǒng)而言,顯然包括尋找主要狀態(tài):對(duì)于航班機(jī)票預(yù)訂系統(tǒng)而言,顯然包括的狀態(tài)主要有的

36、狀態(tài)主要有 - 在剛確定飛機(jī)計(jì)劃時(shí),顯然是沒(méi)有任何預(yù)訂的,并在剛確定飛機(jī)計(jì)劃時(shí),顯然是沒(méi)有任何預(yù)訂的,并且在有人預(yù)訂機(jī)票之前都將處于這種且在有人預(yù)訂機(jī)票之前都將處于這種“無(wú)預(yù)訂無(wú)預(yù)訂”狀態(tài)狀態(tài) - 對(duì)訂座而言顯然有對(duì)訂座而言顯然有“部分預(yù)訂部分預(yù)訂”和和“預(yù)訂完預(yù)訂完”兩種兩種狀態(tài)狀態(tài) - 而當(dāng)航班快要起飛時(shí),顯然要而當(dāng)航班快要起飛時(shí),顯然要“預(yù)訂關(guān)閉預(yù)訂關(guān)閉”總結(jié)一下,主要有四種狀態(tài):無(wú)預(yù)訂、部分預(yù)訂、預(yù)訂總結(jié)一下,主要有四種狀態(tài):無(wú)預(yù)訂、部分預(yù)訂、預(yù)訂完以及預(yù)訂關(guān)閉完以及預(yù)訂關(guān)閉 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML558.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法確定狀態(tài)間

37、轉(zhuǎn)換確定狀態(tài)間轉(zhuǎn)換源目標(biāo)源目標(biāo)無(wú)預(yù)訂無(wú)預(yù)訂部分預(yù)訂部分預(yù)訂預(yù)訂完預(yù)訂完預(yù)訂關(guān)閉預(yù)訂關(guān)閉無(wú)預(yù)訂無(wú)預(yù)訂預(yù)訂預(yù)訂()不直接轉(zhuǎn)換不直接轉(zhuǎn)換關(guān)閉關(guān)閉()部分預(yù)訂部分預(yù)訂退訂退訂(),使預(yù)訂人使預(yù)訂人=0預(yù)訂預(yù)訂(),無(wú)空座無(wú)空座關(guān)閉關(guān)閉()預(yù)訂完預(yù)訂完不直接轉(zhuǎn)換不直接轉(zhuǎn)換退訂退訂()關(guān)閉關(guān)閉()預(yù)訂關(guān)閉預(yù)訂關(guān)閉無(wú)轉(zhuǎn)換無(wú)轉(zhuǎn)換無(wú)轉(zhuǎn)換無(wú)轉(zhuǎn)換無(wú)轉(zhuǎn)換無(wú)轉(zhuǎn)換面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML568.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法細(xì)化狀態(tài)內(nèi)的活動(dòng)與轉(zhuǎn)換細(xì)化狀態(tài)內(nèi)的活動(dòng)與轉(zhuǎn)換面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML578.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法使用復(fù)合狀態(tài)使用復(fù)

38、合狀態(tài)面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML588.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法練習(xí):練習(xí): 建模航班狀態(tài)圖建模航班狀態(tài)圖 創(chuàng)建一個(gè)狀態(tài)圖來(lái)描述航班如何從提出申請(qǐng)、創(chuàng)建一個(gè)狀態(tài)圖來(lái)描述航班如何從提出申請(qǐng)、制定航班計(jì)劃、售票、起飛、飛行、到著陸的狀態(tài)制定航班計(jì)劃、售票、起飛、飛行、到著陸的狀態(tài)過(guò)程。過(guò)程。練習(xí)步驟;練習(xí)步驟; 1 1)標(biāo)識(shí)出要建模的實(shí)體。)標(biāo)識(shí)出要建模的實(shí)體。 2 2)標(biāo)識(shí)出實(shí)體的狀態(tài)。)標(biāo)識(shí)出實(shí)體的狀態(tài)。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML59航班申請(qǐng)航班計(jì)劃entry/ 發(fā)布航班信息do/ 檢查當(dāng)前日期批準(zhǔn)航班計(jì)劃不允許申請(qǐng)航班還有票

39、航班票售完結(jié)束售票飛行準(zhǔn)時(shí)到達(dá)目的機(jī)場(chǎng)延時(shí)到達(dá)目的機(jī)場(chǎng)售票/退票 開(kāi)始預(yù)售 售最后一張票 起飛前30分鐘 退票 起飛前30分鐘 起飛 天氣非正常 天氣正常 降落降落面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML608.4 什么是活動(dòng)圖什么是活動(dòng)圖 活動(dòng)圖是一種用于描述系統(tǒng)行為的模型視圖,它可用活動(dòng)圖是一種用于描述系統(tǒng)行為的模型視圖,它可用來(lái)描述過(guò)程(業(yè)務(wù)過(guò)程、工作流、事件流等)中的活動(dòng)及來(lái)描述過(guò)程(業(yè)務(wù)過(guò)程、工作流、事件流等)中的活動(dòng)及其遷移。其遷移。 活動(dòng)圖的標(biāo)記符與狀態(tài)圖的標(biāo)記符非常相似,有時(shí)會(huì)活動(dòng)圖的標(biāo)記符與狀態(tài)圖的標(biāo)記符非常相似,有時(shí)會(huì)讓人混淆。其實(shí),讓人混淆。其實(shí),狀態(tài)圖狀態(tài)圖

40、用來(lái)表示用來(lái)表示單個(gè)對(duì)象單個(gè)對(duì)象的行為如何改的行為如何改變其狀態(tài)。而變其狀態(tài)。而活動(dòng)圖活動(dòng)圖是用來(lái)建模是用來(lái)建模不同區(qū)域不同區(qū)域的工作如何彼此的工作如何彼此交互。交互。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML618.4 什么是活動(dòng)圖什么是活動(dòng)圖 活動(dòng)圖能夠附加在如下建模元素中以描述該活動(dòng)圖能夠附加在如下建模元素中以描述該元素的行為。元素的行為。用例用例類類接口接口組件組件節(jié)點(diǎn)節(jié)點(diǎn)面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML628.4 活動(dòng)圖的用途活動(dòng)圖的用途活動(dòng)圖的主要應(yīng)用活動(dòng)圖的主要應(yīng)用1.1.描述用例的行為描述用例的行為 活動(dòng)圖對(duì)用例描述尤其有用,它可建模用例的活動(dòng)圖對(duì)

41、用例描述尤其有用,它可建模用例的工作流,顯示用例內(nèi)部和用例之間的路徑;它也可工作流,顯示用例內(nèi)部和用例之間的路徑;它也可以向讀者說(shuō)明需要滿足什么條件用例才會(huì)有效,以以向讀者說(shuō)明需要滿足什么條件用例才會(huì)有效,以及用例完成后系統(tǒng)保留的條件或者狀態(tài)。及用例完成后系統(tǒng)保留的條件或者狀態(tài)。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML638.4 活動(dòng)圖的用途活動(dòng)圖的用途2 2理解工作流程理解工作流程 活動(dòng)圖對(duì)理解業(yè)務(wù)處理過(guò)程十分有用??梢援嫵龌顒?dòng)圖對(duì)理解業(yè)務(wù)處理過(guò)程十分有用??梢援嫵雒枋鰳I(yè)務(wù)工作流的活動(dòng)圖與領(lǐng)域?qū)<疫M(jìn)行交流,明確描述業(yè)務(wù)工作流的活動(dòng)圖與領(lǐng)域?qū)<疫M(jìn)行交流,明確業(yè)務(wù)處理操作是如何進(jìn)行

42、的,將會(huì)有怎樣的變化。業(yè)務(wù)處理操作是如何進(jìn)行的,將會(huì)有怎樣的變化。3 3描述復(fù)雜過(guò)程的算法描述復(fù)雜過(guò)程的算法 在這種情況下使用的活動(dòng)圖不過(guò)是在這種情況下使用的活動(dòng)圖不過(guò)是UMLUML版的程序流版的程序流程圖,常規(guī)的順序、分支過(guò)程在活動(dòng)圖中都能得到充程圖,常規(guī)的順序、分支過(guò)程在活動(dòng)圖中都能得到充分的表現(xiàn)。分的表現(xiàn)。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML648.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 活動(dòng)圖保留了許多傳統(tǒng)的流活動(dòng)圖保留了許多傳統(tǒng)的流程圖的特征,它包含如下元素。程圖的特征,它包含如下元素?;顒?dòng)活動(dòng)操作操作狀態(tài)狀態(tài)轉(zhuǎn)移轉(zhuǎn)移對(duì)象流對(duì)象流分叉與分叉與聯(lián)結(jié)聯(lián)結(jié) (匯合)(匯合)決

43、策決策 (分支分支)面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML658.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 活動(dòng)活動(dòng) 活動(dòng)在活動(dòng)圖中,用來(lái)指示要完成某項(xiàng)工作的動(dòng)作活動(dòng)在活動(dòng)圖中,用來(lái)指示要完成某項(xiàng)工作的動(dòng)作或表示工作流的步驟。其或表示工作流的步驟。其UMLUML標(biāo)記符是一個(gè)帶有圓角標(biāo)記符是一個(gè)帶有圓角的矩形,如下圖所示。的矩形,如下圖所示。 在確定活動(dòng)名稱時(shí)應(yīng)該恰當(dāng)?shù)孛?,選擇準(zhǔn)確描在確定活動(dòng)名稱時(shí)應(yīng)該恰當(dāng)?shù)孛x擇準(zhǔn)確描述所發(fā)生動(dòng)作的幾個(gè)詞。例如,述所發(fā)生動(dòng)作的幾個(gè)詞。例如,Save FileSave File或者或者 Create New DocumentCreate New

44、Document就是比較恰當(dāng)?shù)幕顒?dòng)名稱,而就是比較恰當(dāng)?shù)幕顒?dòng)名稱,而RunRun或者或者Update Update 對(duì)讀者而言是不完整的名稱。對(duì)讀者而言是不完整的名稱。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML668.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念2. 操作 可以用操作在活動(dòng)中增加更多詳細(xì)的步驟??梢杂貌僮髟诨顒?dòng)中增加更多詳細(xì)的步驟。操作操作是活動(dòng)中執(zhí)是活動(dòng)中執(zhí)行的小步驟。在下列情況下發(fā)生:行的小步驟。在下列情況下發(fā)生: 進(jìn)入活動(dòng)時(shí)發(fā)生的操作,標(biāo)有進(jìn)入活動(dòng)時(shí)發(fā)生的操作,標(biāo)有entryentry字樣。字樣。 活動(dòng)進(jìn)行時(shí)發(fā)生的操作,直到離開(kāi)活動(dòng),標(biāo)有活動(dòng)進(jìn)行時(shí)發(fā)生的操作,直到離開(kāi)活

45、動(dòng),標(biāo)有dodo字樣。字樣。 離開(kāi)活動(dòng)時(shí)發(fā)生的操作,標(biāo)有離開(kāi)活動(dòng)時(shí)發(fā)生的操作,標(biāo)有exitexit字樣。字樣。 特定事件發(fā)生時(shí)的操作,標(biāo)有特定事件發(fā)生時(shí)的操作,標(biāo)有eventevent字樣和事件名。字樣和事件名。 操作是可選的,但提供的詳細(xì)信息有助于后面完成系統(tǒng)設(shè)計(jì)。操作是可選的,但提供的詳細(xì)信息有助于后面完成系統(tǒng)設(shè)計(jì)。如果包括操作,則其在活動(dòng)內(nèi)顯示,不管其屬于上面哪一類。下如果包括操作,則其在活動(dòng)內(nèi)顯示,不管其屬于上面哪一類。下面是帶操作的活動(dòng)例子。面是帶操作的活動(dòng)例子。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML678.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο?/p>

46、分析與設(shè)計(jì)&UML688.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念3. 3. 狀態(tài)狀態(tài) 狀態(tài)的標(biāo)記符與活動(dòng)類似,也是帶圓角的矩形,但狀態(tài)的狀態(tài)的標(biāo)記符與活動(dòng)類似,也是帶圓角的矩形,但狀態(tài)的圓角比較小,如下圖所示。圓角比較小,如下圖所示。 狀態(tài)通常使用一個(gè)指示系統(tǒng)當(dāng)前狀態(tài)的單詞或者短語(yǔ)來(lái)標(biāo)狀態(tài)通常使用一個(gè)指示系統(tǒng)當(dāng)前狀態(tài)的單詞或者短語(yǔ)來(lái)標(biāo)識(shí)。例如,識(shí)。例如,StoppedStopped是一個(gè)狀態(tài),而是一個(gè)狀態(tài),而stopstop則是一個(gè)活動(dòng)。則是一個(gè)活動(dòng)。 UMLUML包含兩個(gè)特殊狀態(tài),即開(kāi)始狀態(tài)和結(jié)束狀態(tài)。開(kāi)始包含兩個(gè)特殊狀態(tài),即開(kāi)始狀態(tài)和結(jié)束狀態(tài)。開(kāi)始狀態(tài)以實(shí)心黑點(diǎn)表示,結(jié)束狀態(tài)以帶有圓

47、圈的實(shí)心黑點(diǎn)表示。狀態(tài)以實(shí)心黑點(diǎn)表示,結(jié)束狀態(tài)以帶有圓圈的實(shí)心黑點(diǎn)表示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML698.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 注意:每一個(gè)活動(dòng)圖注意:每一個(gè)活動(dòng)圖只能有一個(gè)開(kāi)始狀態(tài)只能有一個(gè)開(kāi)始狀態(tài),但是可但是可以有無(wú)數(shù)個(gè)結(jié)束狀態(tài)以有無(wú)數(shù)個(gè)結(jié)束狀態(tài)。如下圖所示:。如下圖所示:與狀態(tài)圖不同與狀態(tài)圖不同面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML708.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML718.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念4 4轉(zhuǎn)移轉(zhuǎn)移 轉(zhuǎn)移用來(lái)指示一種狀態(tài)到另一個(gè)狀態(tài)的控制流。它們可

48、以顯示轉(zhuǎn)移用來(lái)指示一種狀態(tài)到另一個(gè)狀態(tài)的控制流。它們可以顯示活動(dòng)之間或者狀態(tài)之間的控制流。轉(zhuǎn)移的標(biāo)記符是帶開(kāi)放箭頭的活動(dòng)之間或者狀態(tài)之間的控制流。轉(zhuǎn)移的標(biāo)記符是帶開(kāi)放箭頭的實(shí)線,如下圖所示。實(shí)線,如下圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML728.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念綜合運(yùn)用綜合運(yùn)用 現(xiàn)在已經(jīng)學(xué)習(xí)了活動(dòng)圖的現(xiàn)在已經(jīng)學(xué)習(xí)了活動(dòng)圖的4 4種主要標(biāo)記符,下面綜合運(yùn)用種主要標(biāo)記符,下面綜合運(yùn)用這些標(biāo)記來(lái)生成一個(gè)活動(dòng)圖,如下圖所示。這些標(biāo)記來(lái)生成一個(gè)活動(dòng)圖,如下圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML738.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念5.

49、 5. 決策決策 (分支)(分支) 決策是基于判斷條件選擇控制流繼續(xù)的方向。決策的決策是基于判斷條件選擇控制流繼續(xù)的方向。決策的UMLUML符符號(hào)是一個(gè)小菱形標(biāo)記符,然后從這里再按條件控制分支轉(zhuǎn)移到號(hào)是一個(gè)小菱形標(biāo)記符,然后從這里再按條件控制分支轉(zhuǎn)移到滿足條件的活動(dòng),如下圖所示。滿足條件的活動(dòng),如下圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML748.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念例例 描述教師記錄學(xué)生成績(jī)用例的活動(dòng)圖描述教師記錄學(xué)生成績(jī)用例的活動(dòng)圖面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML758.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念學(xué)習(xí)活動(dòng)圖中的其他標(biāo)記符學(xué)習(xí)活

50、動(dòng)圖中的其他標(biāo)記符 1.1.泳道泳道 泳道是活動(dòng)圖中的區(qū)域泳道是活動(dòng)圖中的區(qū)域劃分,根據(jù)每個(gè)活動(dòng)的職責(zé)劃分,根據(jù)每個(gè)活動(dòng)的職責(zé)對(duì)所有活動(dòng)進(jìn)行劃分,每個(gè)對(duì)所有活動(dòng)進(jìn)行劃分,每個(gè)泳道代表一個(gè)責(zé)任區(qū)。泳道代表一個(gè)責(zé)任區(qū)。 泳道可以使活動(dòng)圖非常泳道可以使活動(dòng)圖非常整潔,因?yàn)樗鼈冊(cè)诤艽蟪潭日麧?,因?yàn)樗鼈冊(cè)诤艽蟪潭壬显鰪?qiáng)了活動(dòng)圖的可讀性。上增強(qiáng)了活動(dòng)圖的可讀性。泳道使用幾個(gè)大矩形框表示,泳道使用幾個(gè)大矩形框表示,如右圖所示。如右圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML768.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 下面示例顯示了一個(gè)在下面示例顯示了一個(gè)在TeacherTeacher和和W

51、eb InterfaceWeb Interface泳道之間交叉轉(zhuǎn)移控制流的活動(dòng)圖。如果沒(méi)有泳道,泳道之間交叉轉(zhuǎn)移控制流的活動(dòng)圖。如果沒(méi)有泳道,該活動(dòng)圖就無(wú)法說(shuō)明該活動(dòng)圖就無(wú)法說(shuō)明Teacher Teacher 使用了使用了LogonLogon、Choose Choose StudentStudent和和Change Student InfoChange Student Info活動(dòng),活動(dòng),Web Web InterfaceInterface使用使用Validate UserValidate User、Retrieve Student Retrieve Student InfoInfo和和Per

52、sist User InfoPersist User Info活動(dòng),如下圖所示?;顒?dòng),如下圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML778.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML788.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念2.2.分叉和聯(lián)結(jié)分叉和聯(lián)結(jié)( (匯合匯合) ) 分叉用來(lái)表示并行活動(dòng)的分支處理,聯(lián)結(jié)用來(lái)把并行活動(dòng)分叉用來(lái)表示并行活動(dòng)的分支處理,聯(lián)結(jié)用來(lái)把并行活動(dòng)的匯集到同步處理。的匯集到同步處理。 分叉分叉和聯(lián)結(jié)在和聯(lián)結(jié)在UMLUML中的表示方法相似,都用粗黑線表示。分中的表示方法相似,都用粗黑線表示。分叉叉具有一個(gè)轉(zhuǎn)

53、移入口,兩個(gè)或者多個(gè)轉(zhuǎn)移出口。分具有一個(gè)轉(zhuǎn)移入口,兩個(gè)或者多個(gè)轉(zhuǎn)移出口。分叉叉描述了單描述了單向處理控制流分成了多個(gè)控制流。聯(lián)結(jié)與此相反,聯(lián)結(jié)具有兩向處理控制流分成了多個(gè)控制流。聯(lián)結(jié)與此相反,聯(lián)結(jié)具有兩個(gè)或者多個(gè)轉(zhuǎn)移個(gè)或者多個(gè)轉(zhuǎn)移入入口,只有一個(gè)出口。聯(lián)結(jié)描述了不同的處理口,只有一個(gè)出口。聯(lián)結(jié)描述了不同的處理控制流合并到一起形成一個(gè)單向處理,如下圖所示。控制流合并到一起形成一個(gè)單向處理,如下圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML798.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 如果一個(gè)處理在其他處理之前到達(dá)了聯(lián)結(jié),它將會(huì)如果一個(gè)處理在其他處理之前到達(dá)了聯(lián)結(jié),它將會(huì)等待等待,直

54、到所有的處理都準(zhǔn)備好之后才會(huì)向聯(lián)結(jié)傳遞控制權(quán)。直到所有的處理都準(zhǔn)備好之后才會(huì)向聯(lián)結(jié)傳遞控制權(quán)。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML808.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 左例演示了分叉中的一左例演示了分叉中的一個(gè)處理時(shí)間長(zhǎng)于另一個(gè)的個(gè)處理時(shí)間長(zhǎng)于另一個(gè)的情況。當(dāng)然,這完全是由情況。當(dāng)然,這完全是由每一個(gè)處理中的活動(dòng)數(shù)假每一個(gè)處理中的活動(dòng)數(shù)假定的。由于我們不知道每定的。由于我們不知道每一個(gè)活動(dòng)有多長(zhǎng),因此不一個(gè)活動(dòng)有多長(zhǎng),因此不能保證哪一個(gè)首先完成。能保證哪一個(gè)首先完成。為此,我們?cè)谧層脩粼L問(wèn)為此,我們?cè)谧層脩粼L問(wèn)應(yīng)用程序之前插入了一個(gè)應(yīng)用程序之前插入了一個(gè)聯(lián)結(jié),以便確保兩

55、個(gè)獨(dú)立聯(lián)結(jié),以便確保兩個(gè)獨(dú)立的處理彼此連接在一起。的處理彼此連接在一起。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML818.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念3 3對(duì)象流對(duì)象流 活動(dòng)可以輸入和輸出對(duì)象,并可以修改對(duì)象狀活動(dòng)可以輸入和輸出對(duì)象,并可以修改對(duì)象狀態(tài)。我們能夠在活動(dòng)圖上用對(duì)象流表示這些。如下態(tài)。我們能夠在活動(dòng)圖上用對(duì)象流表示這些。如下圖所示。圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML828.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML838.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)

56、&UML848.7 活動(dòng)圖建?;顒?dòng)圖建模 創(chuàng)建活動(dòng)圖共有創(chuàng)建活動(dòng)圖共有5 5個(gè)任務(wù):個(gè)任務(wù): 1 1)標(biāo)識(shí)需要活動(dòng)圖的用例。)標(biāo)識(shí)需要活動(dòng)圖的用例。 2 2)建模每一個(gè)用例的主路徑。)建模每一個(gè)用例的主路徑。 3 3)建模每一個(gè)用例的從路徑。)建模每一個(gè)用例的從路徑。 4 4)添加游泳道來(lái)標(biāo)識(shí)活動(dòng)的事務(wù)分區(qū)。)添加游泳道來(lái)標(biāo)識(shí)活動(dòng)的事務(wù)分區(qū)。 5 5)改進(jìn)高層活動(dòng)并添加更多活動(dòng)到圖中。)改進(jìn)高層活動(dòng)并添加更多活動(dòng)到圖中。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML858.7 活動(dòng)圖建?;顒?dòng)圖建模1 1 標(biāo)識(shí)用例標(biāo)識(shí)用例 在建模活動(dòng)圖之前,需要首先確定要建模什么。下面的教師在建?;顒?dòng)圖之前,需要首先確定要建模什么。下面的教師更新分?jǐn)?shù)用例是一組較大用例的一部分,我們就從它開(kāi)始。如下更新分?jǐn)?shù)用例是一組較大用例的一部分,我們就從它開(kāi)始。如下圖所示。這個(gè)用例實(shí)際上使用了圖所示。這個(gè)用例實(shí)際上使用了3 3個(gè)用例。我們不僅有個(gè)用例。我們不僅有Update Update GradeGrade用例,還有用例,還有Save GradeSave Grade和和Load GradeLoad Grade用例。用例。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML868.7 活動(dòng)圖建?;顒?dòng)圖建模2 2建模主路徑建模

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論