版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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ì) status類型為枚舉類型為枚舉(Received, InInspection, Accepted, Rejected) 則應(yīng)根據(jù)屬性則應(yīng)根據(jù)屬性status建立狀態(tài)圖建立狀態(tài)圖. 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì) 包含子狀態(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ì) 事件相同但警戒條件互斥事件相同但警戒條件互斥. 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML27 8.2.4 轉(zhuǎn)移轉(zhuǎn)移
2、下面的示例演示了銀行帳戶中的轉(zhuǎn)移及其有效狀態(tài),如下圖下面的示例演示了銀行帳戶中的轉(zhuǎn)移及其有效狀態(tài),如下圖 所示。所示。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML28 8.2.4 轉(zhuǎn)移轉(zhuǎn)移 決策點(diǎn)決策點(diǎn) 決策點(diǎn)在建模狀態(tài)圖時(shí)提供了方便,因?yàn)樗ㄟ^在中心位決策點(diǎn)在建模狀態(tài)圖時(shí)提供了方便,因?yàn)樗ㄟ^在中心位 置分組轉(zhuǎn)移到各自的方向,從而提高了狀態(tài)圖的可視性,如下置分組轉(zhuǎn)移到各自的方向,從而提高了狀態(tài)圖的可視性,如下 圖所示。圖所示。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML29 8.2.4 轉(zhuǎn)移轉(zhuǎn)移 同步同步 狀態(tài)圖中使用同步條是為了說明并發(fā)工作流的狀態(tài)圖中使用同步條是為了說明并發(fā)工作流的分
3、叉分叉與與聯(lián)合聯(lián)合。 下圖所示為同步條的標(biāo)記符。下圖所示為同步條的標(biāo)記符。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML30 8.2.4 轉(zhuǎn)移轉(zhuǎn)移 條件條件用來描述狀態(tài)轉(zhuǎn)移的前提。用來描述狀態(tài)轉(zhuǎn)移的前提。事件事件用來指示什么觸發(fā)了轉(zhuǎn)用來指示什么觸發(fā)了轉(zhuǎn) 移,移,動(dòng)作動(dòng)作用來說明當(dāng)轉(zhuǎn)移發(fā)生時(shí)會(huì)產(chǎn)生什么情況。事件、條件用來說明當(dāng)轉(zhuǎn)移發(fā)生時(shí)會(huì)產(chǎn)生什么情況。事件、條件 和動(dòng)作是轉(zhuǎn)移的三個(gè)選項(xiàng),其定義格式見下圖所示。和動(dòng)作是轉(zhuǎn)移的三個(gè)選項(xiàng),其定義格式見下圖所示。 該圖描述的信息是該圖描述的信息是“如果如果guardConditionguardCondition為為truetrue,當(dāng),當(dāng) anEvent
4、anEvent發(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ì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML31 8.2.5 事件事件 事件通常在從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的轉(zhuǎn)移路徑上直接指事件通常在從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的轉(zhuǎn)移路徑上直接指 定。事件用來指示是什么導(dǎo)致了模型中狀態(tài)的改變。下圖演示定。事件用來指示是什么導(dǎo)致了模型中狀態(tài)的改變。下圖演示 了電話卡事件的標(biāo)記符。了電話卡事件的標(biāo)記符。 事件事件 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML32 8.2.5 事件事件 事件是對(duì)一個(gè)在時(shí)間和空間上占有一定位置的有
5、意義事件是對(duì)一個(gè)在時(shí)間和空間上占有一定位置的有意義 的事情的詳細(xì)說明的事情的詳細(xì)說明. (1) 調(diào)用事件調(diào)用事件, 表示對(duì)操作的調(diào)用表示對(duì)操作的調(diào)用. 問題問題: 調(diào)用誰(shuí)的操作調(diào)用誰(shuí)的操作? 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML33 8.2.5 事件事件 (2) 變化事件變化事件, 表示某布爾表達(dá)式值變化表示某布爾表達(dá)式值變化, 引起的事件引起的事件. 注意注意: 變化事件與警戒條件區(qū)別變化事件與警戒條件區(qū)別 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML34 8.2.5 事件事件 (3) 時(shí)間事件時(shí)間事件, 表示滿足某一時(shí)間表達(dá)式表示滿足某一時(shí)間表達(dá)式, 引起的事件引起的事件. (4)
6、 信號(hào)事件信號(hào)事件, 表示對(duì)象接收到某信號(hào)的事件表示對(duì)象接收到某信號(hào)的事件. 信號(hào)是對(duì)象之間異步發(fā)送信號(hào)是對(duì)象之間異步發(fā)送/接收的接收的, 它們之間可以形它們之間可以形 成泛化關(guān)系成泛化關(guān)系. 信號(hào)事件與調(diào)用事件類似信號(hào)事件與調(diào)用事件類似, 是異步和同步的區(qū)別是異步和同步的區(qū)別. 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML35 8.2.6 動(dòng)作動(dòng)作 動(dòng)作說明了當(dāng)事件發(fā)生時(shí)發(fā)生了什么行為。動(dòng)作說明了當(dāng)事件發(fā)生時(shí)發(fā)生了什么行為。 EventEvent類型的動(dòng)作示例如類型的動(dòng)作示例如 右圖右圖. .這個(gè)示例說明了只這個(gè)示例說明了只 要要ResetUsersResetUsers事件傳遞事件傳遞 的所
7、有用戶都沒有打開,的所有用戶都沒有打開, 他們就會(huì)被全部刪除。他們就會(huì)被全部刪除。 動(dòng)作動(dòng)作 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML36 8.2.6 動(dòng)作動(dòng)作 動(dòng)作是一個(gè)可執(zhí)行的原子計(jì)算動(dòng)作是一個(gè)可執(zhí)行的原子計(jì)算. UML中沒有規(guī)定動(dòng)作的中沒有規(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ì)&UML37 8.2.7 條件條件 條件說明狀態(tài)
8、轉(zhuǎn)移必須要滿足的前提。條件一般為一個(gè)布爾條件說明狀態(tài)轉(zhuǎn)移必須要滿足的前提。條件一般為一個(gè)布爾 表達(dá)式。如下圖所示。表達(dá)式。如下圖所示。 條件條件 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML38 8.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)作,如果離開或進(jìn)入狀態(tài)將引動(dòng)作,如果離開或進(jìn)入狀態(tài)將引 發(fā)進(jìn)入轉(zhuǎn)換、離開轉(zhuǎn)換發(fā)進(jìn)入轉(zhuǎn)換、離開轉(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í)行
9、一個(gè)特對(duì)事件做出響應(yīng),并執(zhí)行一個(gè)特 定的活動(dòng),但并不引起狀態(tài)變化定的活動(dòng),但并不引起狀態(tài)變化 或進(jìn)入轉(zhuǎn)換、離開轉(zhuǎn)換或進(jìn)入轉(zhuǎn)換、離開轉(zhuǎn)換 事件事件(參數(shù)參數(shù))監(jiān)護(hù)條件監(jiān)護(hù)條件/動(dòng)動(dòng) 作作 進(jìn)入轉(zhuǎn)換進(jìn)入轉(zhuǎn)換 當(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)離開某一狀態(tài)時(shí),執(zhí)行相應(yīng)活當(dāng)離開某一狀態(tài)時(shí),執(zhí)行相應(yīng)活 動(dòng)動(dòng) exit/活動(dòng)活動(dòng) 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML39 8.2.8 狀態(tài)圖狀態(tài)圖- 復(fù)雜轉(zhuǎn)換復(fù)雜轉(zhuǎn)換 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML40 8.2.8 狀態(tài)圖狀態(tài)圖- 復(fù)雜轉(zhuǎn)換復(fù)雜轉(zhuǎn)換 進(jìn)入和退出轉(zhuǎn)換:
10、當(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)換來表示進(jìn)入和退出轉(zhuǎn)換來表示 內(nèi)部轉(zhuǎn)換:用來處理一些不離開該狀態(tài)的事件內(nèi)部轉(zhuǎn)換:用來處理一些不離開該狀態(tài)的事件 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML41 8.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)之間的、 包含一些
11、文字描述的有向箭頭線,這些箭頭線稱為轉(zhuǎn)換包含一些文字描述的有向箭頭線,這些箭頭線稱為轉(zhuǎn)換 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML42 8.3.1 狀態(tài)圖的閱讀狀態(tài)圖的閱讀 源狀態(tài):即受轉(zhuǎn)換影響的狀態(tài)源狀態(tài):即受轉(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ā)事件:用來為轉(zhuǎn)換定義一個(gè)事件,包括調(diào)用、改變、觸發(fā)事件:用來為轉(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è)
12、計(jì)&UML43 8.3.1 狀態(tài)圖的閱讀狀態(tài)圖的閱讀 與狀態(tài)與狀態(tài)off相關(guān)的轉(zhuǎn)換有兩個(gè),其觸發(fā)事件都是相關(guān)的轉(zhuǎn)換有兩個(gè),其觸發(fā)事件都是turnOn, 只不過其監(jiān)護(hù)條件不同。如果對(duì)象收到事件只不過其監(jiān)護(hù)條件不同。如果對(duì)象收到事件turnOn,那,那 么將判斷壺中是否有水;如果么將判斷壺中是否有水;如果沒水沒水,則仍然處于,則仍然處于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è),如果“水開了水開了”就執(zhí)就執(zhí) 行行turnOff,關(guān)掉開關(guān);如果燒壞了,就進(jìn)入了終態(tài)了,關(guān)掉開關(guān);如果燒
13、壞了,就進(jìn)入了終態(tài)了 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML44 8.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í)出轉(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ì)&UML45 8.2.1 狀態(tài)狀態(tài) 8.2.1 狀態(tài)狀態(tài) 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML46 8.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)一步
14、建模的實(shí)體。 2 2)標(biāo)識(shí)出每一個(gè)實(shí)體的開始狀態(tài)和結(jié)束狀態(tài)。)標(biāo)識(shí)出每一個(gè)實(shí)體的開始狀態(tài)和結(jié)束狀態(tài)。 3 3)確定與每一個(gè)實(shí)體相關(guān)的事件。)確定與每一個(gè)實(shí)體相關(guān)的事件。 4 4)從起始狀態(tài)開始創(chuàng)建狀態(tài)圖。)從起始狀態(tài)開始創(chuàng)建狀態(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ì)&UML47 8.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í)體
15、最適合使用狀態(tài)圖進(jìn)一步建模。后面 將會(huì)建模一個(gè)Grade對(duì)象,尤其是它的保存功能。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML48 8.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法 2標(biāo)識(shí)出每一個(gè)實(shí)體的開始和結(jié)束狀態(tài) 要想標(biāo)識(shí)出某個(gè)實(shí)體的開始狀態(tài),需要知道實(shí)體是如何實(shí)例 化的,以及實(shí)體是如何開始的。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ì)&UML49 8.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法 因此,因
16、此,Grade對(duì)象的狀態(tài)圖具有如下描述保存功對(duì)象的狀態(tài)圖具有如下描述保存功 能的開始狀態(tài)和結(jié)束狀態(tài):能的開始狀態(tài)和結(jié)束狀態(tài): Information Entered 開始狀態(tài)。開始狀態(tài)。 Destroy 結(jié)束狀態(tài)。結(jié)束狀態(tài)。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML50 8.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法 3 3確定與每一個(gè)實(shí)體相關(guān)的事件確定與每一個(gè)實(shí)體相關(guān)的事件 事件用來最終完成實(shí)體的功能。要想確定實(shí)體的事件,需要事件用來最終完成實(shí)體的功能。要想確定實(shí)體的事件,需要 知道事件的任務(wù)。對(duì)于知道事件的任務(wù)。對(duì)于GradeGrade對(duì)象,它的任務(wù)是保存分?jǐn)?shù)。進(jìn)一對(duì)象,它的任務(wù)是保存分
17、數(shù)。進(jìn)一 步了解事件的任務(wù)之后,就可以確定步了解事件的任務(wù)之后,就可以確定GradeGrade對(duì)象的事件包括接受對(duì)象的事件包括接受 數(shù)據(jù)、成功地保存數(shù)據(jù)和不成功地保存數(shù)據(jù)。數(shù)據(jù)、成功地保存數(shù)據(jù)和不成功地保存數(shù)據(jù)。 有了這些事件之后,就可以為有了這些事件之后,就可以為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ù)
18、由于出錯(cuò)而未成功保存時(shí)。用于數(shù)據(jù)由于出錯(cuò)而未成功保存時(shí)。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML51 8.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法 4 4從開始狀態(tài)開始創(chuàng)建從開始狀態(tài)開始創(chuàng)建 狀態(tài)圖狀態(tài)圖 利用上述的信息,我利用上述的信息,我 們就可以創(chuàng)建一個(gè)簡(jiǎn)單們就可以創(chuàng)建一個(gè)簡(jiǎn)單 的狀態(tài)圖來描述的狀態(tài)圖來描述GradeGrade對(duì)對(duì) 象的不同狀態(tài),以及觸象的不同狀態(tài),以及觸 發(fā)狀態(tài)改變的事件,如發(fā)狀態(tài)改變的事件,如 下圖所示。下圖所示。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML52 8.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法 5 5如果必要?jiǎng)t指定合成狀態(tài)如果必要?jiǎng)t指定合成狀態(tài)
19、創(chuàng)建狀態(tài)圖的第一步工作完成之后,可以檢查一下是否創(chuàng)建狀態(tài)圖的第一步工作完成之后,可以檢查一下是否 需要通過創(chuàng)建合成狀態(tài)來進(jìn)一步修飾某些狀態(tài)。需要通過創(chuàng)建合成狀態(tài)來進(jìn)一步修飾某些狀態(tài)。 在本例中,我們認(rèn)為在本例中,我們認(rèn)為PersistingPersisting狀態(tài)過于籠統(tǒng),因此可狀態(tài)過于籠統(tǒng),因此可 以為其提供子狀態(tài),其中包括以為其提供子狀態(tài),其中包括LoadLoad、UpdateUpdate和和SaveSave,或者只,或者只 包括包括InsertInsert,如下圖所示。,如下圖所示。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML53 8.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法 面向?qū)ο?/p>
20、分析與設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML54 8.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)主要有的狀態(tài)主要有 - 在剛確定飛機(jī)計(jì)劃時(shí),顯然是沒有任何預(yù)訂的,并在剛確定飛機(jī)計(jì)劃時(shí),顯然是沒有任何預(yù)訂的,并 且在有人預(yù)訂機(jī)票之前都將處于這種且在有人預(yù)訂機(jī)票之前都將處于這種“無預(yù)訂無預(yù)訂”狀態(tài)狀態(tài) - 對(duì)訂座而言顯然有對(duì)訂座而言顯然有“部分預(yù)訂部分預(yù)訂”和和“預(yù)訂完預(yù)訂完”兩種兩種 狀態(tài)狀態(tài) - 而當(dāng)航班快要起飛時(shí),顯然要而當(dāng)航班快要起飛時(shí),顯然要“預(yù)訂關(guān)閉
21、預(yù)訂關(guān)閉” 總結(jié)一下,主要有四種狀態(tài):無預(yù)訂、部分預(yù)訂、預(yù)訂總結(jié)一下,主要有四種狀態(tài):無預(yù)訂、部分預(yù)訂、預(yù)訂 完以及預(yù)訂關(guān)閉完以及預(yù)訂關(guān)閉 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML55 8.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法 確定狀態(tài)間轉(zhuǎn)換確定狀態(tài)間轉(zhuǎn)換 源目標(biāo)源目標(biāo)無預(yù)訂無預(yù)訂部分預(yù)訂部分預(yù)訂預(yù)訂完預(yù)訂完預(yù)訂關(guān)閉預(yù)訂關(guān)閉 無預(yù)訂無預(yù)訂預(yù)訂預(yù)訂()不直接轉(zhuǎn)換不直接轉(zhuǎn)換關(guān)閉關(guān)閉() 部分預(yù)訂部分預(yù)訂退訂退訂(),使預(yù)訂人使預(yù)訂人=0預(yù)訂預(yù)訂(),無空座無空座關(guān)閉關(guān)閉() 預(yù)訂完預(yù)訂完不直接轉(zhuǎn)換不直接轉(zhuǎn)換退訂退訂()關(guān)閉關(guān)閉() 預(yù)訂關(guān)閉預(yù)訂關(guān)閉無轉(zhuǎn)換無轉(zhuǎn)換無轉(zhuǎn)換無轉(zhuǎn)換無轉(zhuǎn)換無轉(zhuǎn)換 面向
22、對(duì)象分析與設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML56 8.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ì)&UML57 8.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法 使用復(fù)合狀態(tài)使用復(fù)合狀態(tài) 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML58 8.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法 練習(xí):練習(xí): 建模航班狀態(tài)圖建模航班狀態(tài)圖 創(chuàng)建一個(gè)狀態(tài)圖來描述航班如何從提出申請(qǐng)、創(chuàng)建一個(gè)狀態(tài)圖來描述航班如何從提出申請(qǐng)、 制定航班計(jì)劃、售票、起飛、飛行、到著陸的狀態(tài)制定航班計(jì)劃、售票、起飛、飛行、到著陸的狀態(tài) 過程。過程。 練習(xí)步驟;練習(xí)
23、步驟; 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) 航班還有票 航班票 售完 結(jié)束售 票 飛行 準(zhǔn)時(shí)到達(dá)目的 機(jī)場(chǎng) 延時(shí)到達(dá) 目的機(jī)場(chǎng) 售票/退票 開始預(yù)售 售最后一張票 起飛前30分鐘 退票 起飛前30分鐘 起飛 天氣非正常 天氣正常 降落 降落 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML60 8.4 什么是活動(dòng)圖什么是活動(dòng)圖 活動(dòng)圖是一種用于描述系統(tǒng)行為的模型視圖,它可用活動(dòng)圖是一種用于描
24、述系統(tǒng)行為的模型視圖,它可用 來描述過程(業(yè)務(wù)過程、工作流、事件流等)中的活動(dòng)及來描述過程(業(yè)務(wù)過程、工作流、事件流等)中的活動(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)圖用來表示用來表示單個(gè)對(duì)象單個(gè)對(duì)象的行為如何改的行為如何改 變其狀態(tài)。而變其狀態(tài)。而活動(dòng)圖活動(dòng)圖是用來建模是用來建模不同區(qū)域不同區(qū)域的工作如何彼此的工作如何彼此 交互。交互。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML61 8.4 什么是活動(dòng)圖什么是活動(dòng)圖 活動(dòng)圖能夠附加在如下建模元素中以描述該活動(dòng)圖能夠附加在
25、如下建模元素中以描述該 元素的行為。元素的行為。 用例用例 類類 接口接口 組件組件 節(jié)點(diǎn)節(jié)點(diǎn) 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML62 8.4 活動(dòng)圖的用途活動(dòng)圖的用途 活動(dòng)圖的主要應(yīng)用活動(dòng)圖的主要應(yīng)用 1.1.描述用例的行為描述用例的行為 活動(dòng)圖對(duì)用例描述尤其有用,它可建模用例的活動(dòng)圖對(duì)用例描述尤其有用,它可建模用例的 工作流,顯示用例內(nèi)部和用例之間的路徑;它也可工作流,顯示用例內(nèi)部和用例之間的路徑;它也可 以向讀者說明需要滿足什么條件用例才會(huì)有效,以以向讀者說明需要滿足什么條件用例才會(huì)有效,以 及用例完成后系統(tǒng)保留的條件或者狀態(tài)。及用例完成后系統(tǒng)保留的條件或者狀態(tài)。 面向?qū)ο蠓治?/p>
26、與設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML63 8.4 活動(dòng)圖的用途活動(dòng)圖的用途 2 2理解工作流程理解工作流程 活動(dòng)圖對(duì)理解業(yè)務(wù)處理過程十分有用。可以畫出活動(dòng)圖對(duì)理解業(yè)務(wù)處理過程十分有用??梢援嫵?描述業(yè)務(wù)工作流的活動(dòng)圖與領(lǐng)域?qū)<疫M(jìn)行交流,明確描述業(yè)務(wù)工作流的活動(dòng)圖與領(lǐng)域?qū)<疫M(jìn)行交流,明確 業(yè)務(wù)處理操作是如何進(jìn)行的,將會(huì)有怎樣的變化。業(yè)務(wù)處理操作是如何進(jìn)行的,將會(huì)有怎樣的變化。 3 3描述復(fù)雜過程的算法描述復(fù)雜過程的算法 在這種情況下使用的活動(dòng)圖不過是在這種情況下使用的活動(dòng)圖不過是UMLUML版的程序流版的程序流 程圖,常規(guī)的順序、分支過程在活動(dòng)圖中都能得到充程圖,常規(guī)的順序、分支過程在活動(dòng)圖中都能得
27、到充 分的表現(xiàn)。分的表現(xiàn)。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML64 8.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é) (匯合)(匯合) 決策決策 (分支分支) 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML65 8.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 1.1. 活動(dòng)活動(dòng) 活動(dòng)在活動(dòng)圖中,用來指示要完成某項(xiàng)工作的動(dòng)作活動(dòng)在活動(dòng)圖中,用來指示要完成某項(xiàng)工作的動(dòng)作 或表示工作流的步驟。其或表示工作流的步驟。其UMLU
28、ML標(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 Document就是比較恰當(dāng)?shù)幕顒?dòng)名稱,而就是比較恰當(dāng)?shù)幕顒?dòng)名稱,而 RunRun或者或者Update Update 對(duì)讀者而言是不完整的名稱。對(duì)讀者而言是不完整的名稱。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML66 8.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念
29、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ā)生的操作,直到離開活動(dòng),標(biāo)有活動(dòng)進(jìn)行時(shí)發(fā)生的操作,直到離開活動(dòng),標(biāo)有dodo字樣。字樣。 離開活動(dòng)時(shí)發(fā)生的操作,標(biāo)有離開活動(dòng)時(shí)發(fā)生的操作,標(biāo)有exitexit字樣。字樣。 特定事件發(fā)生時(shí)的操作,標(biāo)有特定事件發(fā)生時(shí)的操作,標(biāo)有eventevent字樣和事件名。字樣和事件名。 操作是可選的,但提供的詳細(xì)信息有助于后面完成系統(tǒng)
30、設(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ì)&UML67 8.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML68 8.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è)指示
31、系統(tǒng)當(dāng)前狀態(tài)的單詞或者短語(yǔ)來標(biāo)狀態(tài)通常使用一個(gè)指示系統(tǒng)當(dāng)前狀態(tài)的單詞或者短語(yǔ)來標(biāo) 識(shí)。例如,識(shí)。例如,StoppedStopped是一個(gè)狀態(tài),而是一個(gè)狀態(tài),而stopstop則是一個(gè)活動(dòng)。則是一個(gè)活動(dòng)。 UMLUML包含兩個(gè)特殊狀態(tài),即開始狀態(tài)和結(jié)束狀態(tài)。開始包含兩個(gè)特殊狀態(tài),即開始狀態(tài)和結(jié)束狀態(tài)。開始 狀態(tài)以實(shí)心黑點(diǎn)表示,結(jié)束狀態(tài)以帶有圓圈的實(shí)心黑點(diǎn)表示。狀態(tài)以實(shí)心黑點(diǎn)表示,結(jié)束狀態(tài)以帶有圓圈的實(shí)心黑點(diǎn)表示。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML69 8.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 注意:每一個(gè)活動(dòng)圖注意:每一個(gè)活動(dòng)圖只能有一個(gè)開始狀態(tài)只能有一個(gè)開始狀態(tài),但是可但是可 以有
32、無數(shù)個(gè)結(jié)束狀態(tài)以有無數(shù)個(gè)結(jié)束狀態(tài)。如下圖所示:。如下圖所示: 與狀態(tài)圖不同與狀態(tài)圖不同 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML70 8.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML71 8.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 4 4轉(zhuǎn)移轉(zhuǎn)移 轉(zhuǎn)移用來指示一種狀態(tài)到另一個(gè)狀態(tài)的控制流。它們可以顯示轉(zhuǎn)移用來指示一種狀態(tài)到另一個(gè)狀態(tài)的控制流。它們可以顯示 活動(dòng)之間或者狀態(tài)之間的控制流。轉(zhuǎn)移的標(biāo)記符是帶開放箭頭的活動(dòng)之間或者狀態(tài)之間的控制流。轉(zhuǎn)移的標(biāo)記符是帶開放箭頭的 實(shí)線,如下圖所示。實(shí)線,如下圖所示。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML72
33、8.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)記來生成一個(gè)活動(dòng)圖,如下圖所示。這些標(biāo)記來生成一個(gè)活動(dòng)圖,如下圖所示。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML73 8.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 5. 5. 決策決策 (分支)(分支) 決策是基于判斷條件選擇控制流繼續(xù)的方向。決策的決策是基于判斷條件選擇控制流繼續(xù)的方向。決策的UMLUML符符 號(hào)是一個(gè)小菱形標(biāo)記符,然后從這里再按條件控制分支轉(zhuǎn)移到號(hào)是一個(gè)小菱形標(biāo)記符,然后從這里再按條件控制分支轉(zhuǎn)移到 滿足條
34、件的活動(dòng),如下圖所示。滿足條件的活動(dòng),如下圖所示。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML74 8.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 例例 描述教師記錄學(xué)生成績(jī)用例的活動(dòng)圖描述教師記錄學(xué)生成績(jī)用例的活動(dòng)圖 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML75 8.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 學(xué)習(xí)活動(dòng)圖中的其他標(biāo)記符學(xué)習(xí)活動(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)圖非常
35、 整潔,因?yàn)樗鼈冊(cè)诤艽蟪潭日麧崳驗(yàn)樗鼈冊(cè)诤艽蟪潭?上增強(qiáng)了活動(dòng)圖的可讀性。上增強(qiáng)了活動(dòng)圖的可讀性。 泳道使用幾個(gè)大矩形框表示,泳道使用幾個(gè)大矩形框表示, 如右圖所示。如右圖所示。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML76 8.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 下面示例顯示了一個(gè)在下面示例顯示了一個(gè)在TeacherTeacher和和Web InterfaceWeb Interface 泳道之間交叉轉(zhuǎn)移控制流的活動(dòng)圖。如果沒有泳道,泳道之間交叉轉(zhuǎn)移控制流的活動(dòng)圖。如果沒有泳道, 該活動(dòng)圖就無法說明該活動(dòng)圖就無法說明Teacher Teacher 使用了使用了LogonLogon、Ch
36、oose Choose StudentStudent和和Change Student InfoChange Student Info活動(dòng),活動(dòng),Web Web InterfaceInterface使用使用Validate UserValidate User、Retrieve Student Retrieve Student InfoInfo和和 Persist User InfoPersist User Info活動(dòng),如下圖所示?;顒?dòng),如下圖所示。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML77 8.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML78 8.
37、5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 2.2.分叉和聯(lián)結(jié)分叉和聯(lián)結(jié)( (匯合匯合) ) 分叉用來表示并行活動(dòng)的分支處理,聯(lián)結(jié)用來把并行活動(dòng)分叉用來表示并行活動(dòng)的分支處理,聯(lián)結(jié)用來把并行活動(dòng) 的匯集到同步處理。的匯集到同步處理。 分叉分叉和聯(lián)結(jié)在和聯(lián)結(jié)在UMLUML中的表示方法相似,都用粗黑線表示。分中的表示方法相似,都用粗黑線表示。分 叉叉具有一個(gè)轉(zhuǎn)移入口,兩個(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)移入入口,只有一
38、個(gè)出口。聯(lián)結(jié)描述了不同的處理口,只有一個(gè)出口。聯(lián)結(jié)描述了不同的處理 控制流合并到一起形成一個(gè)單向處理,如下圖所示??刂屏骱喜⒌揭黄鹦纬梢粋€(gè)單向處理,如下圖所示。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML79 8.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 如果一個(gè)處理在其他處理之前到達(dá)了聯(lián)結(jié),它將會(huì)如果一個(gè)處理在其他處理之前到達(dá)了聯(lián)結(jié),它將會(huì)等待等待, 直到所有的處理都準(zhǔn)備好之后才會(huì)向聯(lián)結(jié)傳遞控制權(quán)。直到所有的處理都準(zhǔn)備好之后才會(huì)向聯(lián)結(jié)傳遞控制權(quán)。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML80 8.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 左例演示了分叉中的一左例演示了分叉中的一 個(gè)處理時(shí)間長(zhǎng)于
39、另一個(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問為此,我們?cè)谧層脩粼L問 應(yīng)用程序之前插入了一個(gè)應(yīng)用程序之前插入了一個(gè) 聯(lián)結(jié),以便確保兩個(gè)獨(dú)立聯(lián)結(jié),以便確保兩個(gè)獨(dú)立 的處理彼此連接在一起。的處理彼此連接在一起。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML81 8.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 3 3對(duì)象流對(duì)象流 活動(dòng)可以輸入和輸出對(duì)象,并可以修改對(duì)象狀活
40、動(dòng)可以輸入和輸出對(duì)象,并可以修改對(duì)象狀 態(tài)。我們能夠在活動(dòng)圖上用對(duì)象流表示這些。如下態(tài)。我們能夠在活動(dòng)圖上用對(duì)象流表示這些。如下 圖所示。圖所示。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML82 8.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML83 8.5 活動(dòng)圖的基本概念活動(dòng)圖的基本概念 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML84 8.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è)用
41、例的從路徑。)建模每一個(gè)用例的從路徑。 4 4)添加游泳道來標(biāo)識(shí)活動(dòng)的事務(wù)分區(qū)。)添加游泳道來標(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ì)&UML85 8.7 活動(dòng)圖建?;顒?dòng)圖建模 1 1 標(biāo)識(shí)用例標(biāo)識(shí)用例 在建模活動(dòng)圖之前,需要首先確定要建模什么。下面的教師在建?;顒?dòng)圖之前,需要首先確定要建模什么。下面的教師 更新分?jǐn)?shù)用例是一組較大用例的一部分,我們就從它開始。如下更新分?jǐn)?shù)用例是一組較大用例的一部分,我們就從它開始。如下 圖所示。這個(gè)用例實(shí)際上使用了圖所示。這個(gè)用例實(shí)際上使用了3 3個(gè)用例。我們不僅
42、有個(gè)用例。我們不僅有Update Update GradeGrade用例,還有用例,還有Save GradeSave Grade和和Load GradeLoad Grade用例。用例。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML86 8.7 活動(dòng)圖建?;顒?dòng)圖建模 2 2建模主路徑建模主路徑 在開始創(chuàng)建用例的活動(dòng)圖時(shí),往往先建立一條明顯的路徑在開始創(chuàng)建用例的活動(dòng)圖時(shí),往往先建立一條明顯的路徑 執(zhí)行工作流,然后從該路徑進(jìn)行擴(kuò)展,如下圖所示。執(zhí)行工作流,然后從該路徑進(jìn)行擴(kuò)展,如下圖所示。 該路徑僅考慮用例的正?;顒?dòng)路徑(登錄、選擇學(xué)生、加該路徑僅考慮用例的正?;顒?dòng)路徑(登錄、選擇學(xué)生、加 載他們的
43、分?jǐn)?shù),修改分?jǐn)?shù),保存修改結(jié)果等活動(dòng)過程),載他們的分?jǐn)?shù),修改分?jǐn)?shù),保存修改結(jié)果等活動(dòng)過程), 沒沒 有考慮任何錯(cuò)誤和判斷的路徑。有考慮任何錯(cuò)誤和判斷的路徑。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML87 8.7 活動(dòng)圖建模活動(dòng)圖建模 3 3建模從路徑建模從路徑 考慮用例其他可能的工作流情況。如處理錯(cuò)誤,考慮用例其他可能的工作流情況。如處理錯(cuò)誤, 或許是執(zhí)行其他活動(dòng)?;蛟S是執(zhí)行其他活動(dòng)。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML88 8.7 活動(dòng)圖建?;顒?dòng)圖建模 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML89 8.7 活動(dòng)圖建?;顒?dòng)圖建模 4 4添加泳道添加泳道 泳道對(duì)于提高活動(dòng)圖的可讀性非常有益,在本
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(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至2031年中國(guó)油浴加熱器行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國(guó)木層板架行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國(guó)帶肋鋼筋套筒冷擠壓連接技術(shù)行業(yè)投資前景及策略咨詢研究報(bào)告
- 水污染源解析與溯源技術(shù)-深度研究
- 時(shí)隙資源優(yōu)化配置-深度研究
- 2025年銀行個(gè)人住房貸款抵押合同資產(chǎn)保全與處置方案
- 2025年度裝修公司員工安全免責(zé)及賠償協(xié)議
- 2025年度鋼結(jié)構(gòu)工程勞務(wù)分包合同合同變更與調(diào)整程序
- 2025年度美甲店美容院加盟店開業(yè)支持合同
- 2025年度溫室大棚農(nóng)業(yè)保險(xiǎn)代理服務(wù)承包合同
- 基礎(chǔ)構(gòu)成設(shè)計(jì)全套教學(xué)課件
- 復(fù)工復(fù)產(chǎn)消防安全培訓(xùn)
- 城市道路交通安全評(píng)價(jià)標(biāo)準(zhǔn) DG-TJ08-2407-2022
- 統(tǒng)編版高中政治選擇性必修2《法律與生活》知識(shí)點(diǎn)復(fù)習(xí)提綱詳細(xì)版
- 急腹癥的診斷思路
- 培訓(xùn)機(jī)構(gòu)安全隱患排查記錄(帶附件)
- 2024小說推文行業(yè)白皮書
- 研究性成果及創(chuàng)新性成果怎么寫(通用6篇)
- 特殊感染手術(shù)管理考試試題及答案
- 旅館治安管理制度及突發(fā)事件應(yīng)急方案三篇
- 土地增值稅清算底稿中稅協(xié)版
評(píng)論
0/150
提交評(píng)論