版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第8章章 狀態(tài)圖和活動圖狀態(tài)圖和活動圖面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML28.1 什么是狀態(tài)圖什么是狀態(tài)圖狀態(tài)定義為對象行為在某一個時刻的快照或者轉(zhuǎn)折點(diǎn)。例狀態(tài)定義為對象行為在某一個時刻的快照或者轉(zhuǎn)折點(diǎn)。例如,計(jì)算機(jī)的狀態(tài)可以定義為開機(jī)、啟動、工作中、空閑、如,計(jì)算機(jī)的狀態(tài)可以定義為開機(jī)、啟動、工作中、空閑、關(guān)機(jī)和離線等。關(guān)機(jī)和離線等。UML中的狀態(tài)圖中的狀態(tài)圖(Statechart diagram)用于描述一個對象在其生用于描述一個對象在其生存周期間的動態(tài)行為存周期間的動態(tài)行為, 表現(xiàn)一個對象所經(jīng)歷的狀態(tài)序列表現(xiàn)一個對象所經(jīng)歷的狀態(tài)序列, 引引起狀態(tài)轉(zhuǎn)移的事件起狀態(tài)轉(zhuǎn)移的
2、事件(event), 以及因狀態(tài)轉(zhuǎn)移而伴隨的動作以及因狀態(tài)轉(zhuǎn)移而伴隨的動作(action).狀態(tài)圖在檢查、調(diào)試和描述類的動態(tài)行為時非常有狀態(tài)圖在檢查、調(diào)試和描述類的動態(tài)行為時非常有用用.面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML38.1 什么是狀態(tài)圖什么是狀態(tài)圖 狀態(tài)圖除了可以用于描述對象接收事件觸發(fā)時的行為狀態(tài)狀態(tài)圖除了可以用于描述對象接收事件觸發(fā)時的行為狀態(tài)外,它還可以用于許多其他情況。例如,狀態(tài)圖可以用來說明外,它還可以用于許多其他情況。例如,狀態(tài)圖可以用來說明基于用戶輸入的屏幕狀態(tài)改變,也可以用來說明復(fù)雜用例的狀基于用戶輸入的屏幕狀態(tài)改變,也可以用來說明復(fù)雜用例的狀態(tài)進(jìn)展情況
3、??山顟B(tài)圖的對象有:態(tài)進(jìn)展情況。可建模狀態(tài)圖的對象有:類類用例用例子系統(tǒng)子系統(tǒng)整個系統(tǒng)整個系統(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)圖中, ,動作可以與狀態(tài)有關(guān)動作可以與狀態(tài)有關(guān), ,也可以與轉(zhuǎn)移有關(guān)也可以與轉(zhuǎn)移有關(guān). .- - 與狀態(tài)有關(guān)時與狀態(tài)有關(guān)時, ,對象進(jìn)行某狀態(tài)時觸發(fā)某一動作對象進(jìn)行某狀態(tài)時觸發(fā)某一動作. .- - 與轉(zhuǎn)移有關(guān)時與轉(zhuǎn)移有關(guān)時, ,對象在不同狀態(tài)間轉(zhuǎn)移時對象在不同狀態(tài)間轉(zhuǎn)移時, ,觸發(fā)相應(yīng)動作觸發(fā)相應(yīng)動作. .面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&
4、;UML58.1 什么是狀態(tài)圖什么是狀態(tài)圖 在一般系統(tǒng)中,不需對每個類創(chuàng)建狀態(tài)圖。當(dāng)一個類實(shí)例在一般系統(tǒng)中,不需對每個類創(chuàng)建狀態(tài)圖。當(dāng)一個類實(shí)例(對象)有多種狀態(tài),每種狀態(tài)中的行為表現(xiàn)又不相同,則可(對象)有多種狀態(tài),每種狀態(tài)中的行為表現(xiàn)又不相同,則可創(chuàng)建狀態(tài)圖。例如,銀行帳戶可以有幾種不同的狀態(tài),可以打創(chuàng)建狀態(tài)圖。例如,銀行帳戶可以有幾種不同的狀態(tài),可以打開、關(guān)閉或透支。在這些不同狀態(tà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)圖描述的對象往往有多個屬性狀態(tài)圖描述的對象往往有多個屬性, 應(yīng)該在具有如下應(yīng)該在具有如下特性的屬性上建模特性的屬性上建模:如如: 類類SellableItem中有中有2個屬性個屬性: 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、對象分析與設(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 動作動作, action面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML98.2.1 狀態(tài)狀態(tài)狀態(tài)是在對象的生命期中的某外條件或狀況狀態(tài)是在對象的生命期中的某外條件或狀況, 在此期間在此期間對象將滿足某
7、些條件、執(zhí)行某些活動或等待某些事件對象將滿足某些條件、執(zhí)行某些活動或等待某些事件.狀態(tài)的組成部分狀態(tài)的組成部分: 狀態(tài)名、進(jìn)入狀態(tài)名、進(jìn)入/退出動作、內(nèi)部轉(zhuǎn)移、退出動作、內(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)名入口動作入口動作, 進(jìn)入該狀進(jìn)入該狀態(tài)時執(zhí)行該動作態(tài)時執(zhí)行該動作.動作動作,處于該狀態(tài)處于該狀態(tài)時執(zhí)行的動作時執(zhí)行的動作.事件動作事件動作,該狀態(tài)中出現(xiàn)該狀
8、態(tài)中出現(xiàn)特定事件時執(zhí)行的動作特定事件時執(zhí)行的動作.退出動作退出動作, 當(dāng)離開該狀態(tài)當(dāng)離開該狀態(tài)時執(zhí)行該動作時執(zhí)行該動作.延遲響應(yīng)事件延遲響應(yīng)事件, 在該狀態(tài)出現(xiàn)該事件時在該狀態(tài)出現(xiàn)該事件時, 不在本不在本狀態(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)記符代表模型中滿足條件的一個點(diǎn)。例如,中。這種標(biāo)記符代表模型中滿足條件的一個點(diǎn)。例如,診斷機(jī)的狀態(tài)示例可能包含開、關(guān)、診斷和空閑等。診斷機(jī)的狀態(tà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) 開始狀態(tài)和結(jié)束狀態(tài)標(biāo)記符是指示模型的開始和結(jié)束狀態(tài)開始狀態(tài)和結(jié)束狀態(tài)標(biāo)記符是指示模型的開始和結(jié)束狀態(tài)的特殊標(biāo)記符。模型中的的特殊標(biāo)記符。模型中的開始狀態(tài)開始狀態(tài)是一個實(shí)心點(diǎn)。是一個實(shí)心點(diǎn)。結(jié)束狀態(tài)結(jié)束狀態(tài)是是帶有圓圈的實(shí)心點(diǎn)。帶
10、有圓圈的實(shí)心點(diǎn)。模型不必模型不必同時具有同時具有開始和結(jié)束狀態(tài)開始和結(jié)束狀態(tài),因?yàn)?,因?yàn)槟P涂梢钥偸沁\(yùn)行,從不停止。模型可以總是運(yùn)行,從不停止。 狀態(tài)圖中可以包含狀態(tài)圖中可以包含0 0到多個到多個開始狀態(tài)。狀態(tài)圖中也可以包含開始狀態(tài)。狀態(tài)圖中也可以包含多個多個結(jié)束狀態(tài)結(jié)束狀態(tài),每一個都表示一個模型能夠終止的點(diǎn)。,每一個都表示一個模型能夠終止的點(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)對象處于特定狀態(tài)時,可能要進(jìn)行一些活動,是指當(dāng)對象處于特定狀態(tài)時,可能要進(jìn)行一些活動,例如生成報(bào)表、進(jìn)行計(jì)算或向另一對象發(fā)送事件。例如生成報(bào)表、進(jìn)行計(jì)算
11、或向另一對象發(fā)送事件。 為了進(jìn)一步描述對象在特定狀態(tài)下的一些活動,可加入細(xì)節(jié)為了進(jìn)一步描述對象在特定狀態(tài)下的一些活動,可加入細(xì)節(jié)活動、進(jìn)入、退出、事件和狀態(tài)歷史信息?;顒?、進(jìn)入、退出、事件和狀態(tài)歷史信息。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML158.2.2 組合狀態(tài)和子狀態(tài)組合狀態(tài)和子狀態(tài)一個對象可以通過同步操作同一個對象可以通過同步操作同時擁有多個狀態(tài)。有時,對象時擁有多個狀態(tài)。有時,對象還可以擁有層次結(jié)構(gòu)的狀態(tài)。還可以擁有層次結(jié)構(gòu)的狀態(tài)。當(dāng)單個狀態(tài)具有獨(dú)有的附加的當(dāng)單個狀態(tài)具有獨(dú)有的附加的子狀態(tài)時,可以在狀態(tài)圖中使子狀態(tài)時,可以在狀態(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)中某時刻可以同時到達(dá)多狀態(tài)中某時刻可以同時到達(dá)多個子狀態(tài)個子狀態(tài). .面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML168.2.2 組合狀態(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)子狀態(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)系, 任意時刻只能到達(dá)一個子狀態(tài)任意時刻只能到達(dá)一個子狀態(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) 在一個狀態(tài)在一個狀態(tài)中可能多個并發(fā)中可能多個并發(fā)的子狀態(tài)。如右的子狀態(tài)。如右圖所示的訂貨對圖所示的訂貨對象狀態(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)中退出時其目的是記住從組合狀態(tài)中退出時所處的子狀態(tài)所處的子狀態(tài), 當(dāng)再次進(jìn)入組合狀態(tài)時當(dāng)再次進(jìn)入組合狀態(tài)時, 可以直接進(jìn)入可以直接進(jìn)入這個子狀態(tài)這個子狀態(tài), 而不是再從組合狀態(tài)的初態(tài)開始而不是再從組合狀態(tài)的初態(tà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、顯示購物車顯示購物車”返回子狀態(tài)返回子狀態(tài)“顯示顯示索引信息索引信息”時,將進(jìn)入的是離開時的歷史狀態(tài)。也就是時,將進(jìn)入的是離開時的歷史狀態(tài)。也就是說,轉(zhuǎn)到購物說,轉(zhuǎn)到購物車或結(jié)賬區(qū)之后,車或結(jié)賬區(qū)之后,再回到再回到“瀏覽目錄瀏覽目錄”的的頁面時,其中的內(nèi)容頁面時,其中的內(nè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)移用來顯示從一個狀態(tài)到另一個狀態(tài)的處理流。轉(zhuǎn)移使轉(zhuǎn)移用來顯示從一個狀態(tài)到另一個狀態(tài)的處理流。轉(zhuǎn)移使用
16、從一個狀態(tài)到另一個狀態(tài)的用從一個狀態(tài)到另一個狀態(tài)的開放箭頭開放箭頭來標(biāo)記,如下圖所示。來標(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)系, 表示對象將在第一個表示對象將在第一個狀態(tài)執(zhí)行一定的動作狀態(tài)執(zhí)行一定的動作, 并在某個特定事件發(fā)生且滿足某并在某個特定事件發(fā)生且滿足某個特定的警戒條件時進(jìn)入第二個狀態(tài)個特定的警戒條件時進(jìn)入第二個狀態(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)移對于一個給定的狀態(tài)對于一個給定的狀態(tài), 最終只能產(chǎn)生一個轉(zhuǎn)移最終只能產(chǎn)生一個轉(zhuǎn)移, 因此從因此從一個狀態(tài)出發(fā)的幾個轉(zhuǎn)移之間應(yīng)該是互斥的一個狀態(tài)出發(fā)的幾個轉(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)圖時提供了方便,因?yàn)樗ㄟ^在中心位決策點(diǎn)在建模狀態(tài)圖時提供了方便,因?yàn)樗ㄟ^在中心位置分組轉(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)圖中使用同步條是為了說明并發(fā)工作流的狀態(tài)圖中使用同步條是為了說明并發(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、條件條件用來描述狀態(tài)轉(zhuǎn)移的前提。用來描述狀態(tài)轉(zhuǎn)移的前提。事件事件用來指示什么觸發(fā)了轉(zhuǎn)用來指示什么觸發(fā)了轉(zhuǎn)移,移,動作動作用來說明當(dāng)轉(zhuǎn)移發(fā)生時會產(chǎn)生什么情況。事件、條件用來說明當(dāng)轉(zhuǎn)移發(fā)生時會產(chǎn)生什么情況。事件、條件和動作是轉(zhuǎn)移的三個選項(xiàng),其定義格式見下圖所示。和動作是轉(zhuǎn)移的三個選項(xiàng),其定義格式見下圖所示。該圖描述的信息是該圖描述的信息是“如果如果guardConditionguardCondition為為truetrue,當(dāng),當(dāng)anEventanEvent發(fā)生時,將執(zhí)行發(fā)生時,將執(zhí)行anActionanAction,并立即進(jìn)入狀態(tài),并立即進(jìn)入狀態(tài)B”B”事件事件條件條件動作動作面向?qū)ο蠓治雠c設(shè)計(jì)
20、面向?qū)ο蠓治雠c設(shè)計(jì)&UML318.2.5 事件事件 事件通常在從一個狀態(tài)到另一個狀態(tài)的轉(zhuǎn)移路徑上直接指事件通常在從一個狀態(tài)到另一個狀態(tài)的轉(zhuǎn)移路徑上直接指定。事件用來指示是什么導(dǎo)致了模型中狀態(tài)的改變。下圖演示定。事件用來指示是什么導(dǎo)致了模型中狀態(tài)的改變。下圖演示了電話卡事件的標(biāo)記符。了電話卡事件的標(biāo)記符。事件事件面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML328.2.5 事件事件事件是對一個在時間和空間上占有一定位置的有意義事件是對一個在時間和空間上占有一定位置的有意義的事情的詳細(xì)說明的事情的詳細(xì)說明.(1) 調(diào)用事件調(diào)用事件, 表示對操作的調(diào)用表示對操作的調(diào)用.問題問題: 調(diào)用
21、誰的操作調(diào)用誰的操作?面向?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) 時間事件時間事件, 表示滿足某一時間表達(dá)式表示滿足某一時間表達(dá)式, 引起的事件引起的事件.(4) 信號事件信號事件, 表示對象接收到某信號的事件表示對象接收到某信號的事件. 信號是對象之間異步發(fā)送信號是對象之間異步發(fā)送/接收的接收的, 它們之間可以形它們之間可以形
22、成泛化關(guān)系成泛化關(guān)系. 信號事件與調(diào)用事件類似信號事件與調(diào)用事件類似, 是異步和同步的區(qū)別是異步和同步的區(qū)別.面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML358.2.6 動作動作動作說明了當(dāng)事件發(fā)生時發(fā)生了什么行為。動作說明了當(dāng)事件發(fā)生時發(fā)生了什么行為。EventEvent類型的動作示例如類型的動作示例如右圖右圖. .這個示例說明了只這個示例說明了只要要ResetUsersResetUsers事件傳遞事件傳遞的所有用戶都沒有打開,的所有用戶都沒有打開,他們就會被全部刪除。他們就會被全部刪除。動作動作面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML368.2.6 動作動作動作是一個可
23、執(zhí)行的原子計(jì)算動作是一個可執(zhí)行的原子計(jì)算. UML中沒有規(guī)定動作的中沒有規(guī)定動作的具體語法形式具體語法形式, 采用程序設(shè)計(jì)的語言語法即可采用程序設(shè)計(jì)的語言語法即可.兩種特殊動作兩種特殊動作: 進(jìn)入動作進(jìn)入動作: entry / action-expression 退出動作退出動作: exit / action-expression面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML378.2.7 條件條件 條件說明狀態(tài)轉(zhuǎn)移必須要滿足的前提。條件一般為一個布爾條件說明狀態(tài)轉(zhuǎn)移必須要滿足的前提。條件一般為一個布爾表達(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)換類型描述描述語法語法外部轉(zhuǎn)換外部轉(zhuǎn)換 對事件做出響應(yīng),引起狀態(tài)變化對事件做出響應(yīng),引起狀態(tài)變化或自身轉(zhuǎn)換,同時引發(fā)一個特定或自身轉(zhuǎn)換,同時引發(fā)一個特定動作,如果離開或進(jìn)入狀態(tài)將引動作,如果離開或進(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ù)條件/動動作作內(nèi)部轉(zhuǎn)換內(nèi)部轉(zhuǎn)換 對事件做出響應(yīng),并執(zhí)行一個特對事件做出響應(yīng),并執(zhí)行一個特定的活動,但并不引起狀態(tài)變化定的活動,但并不引起狀態(tài)變化或進(jìn)入轉(zhuǎn)換、離開轉(zhuǎn)換或進(jìn)入轉(zhuǎn)換、離開轉(zhuǎn)換事件事件(參數(shù)參數(shù))監(jiān)護(hù)條件監(jiān)護(hù)條件/動動作作進(jìn)入轉(zhuǎn)換進(jìn)入轉(zhuǎn)換
25、當(dāng)進(jìn)入某一狀態(tài)時,執(zhí)行相應(yīng)活當(dāng)進(jìn)入某一狀態(tài)時,執(zhí)行相應(yīng)活動動entry/活動活動退出轉(zhuǎn)換退出轉(zhuǎn)換 當(dāng)離開某一狀態(tài)時,執(zhí)行相應(yīng)活當(dāng)離開某一狀態(tài)時,執(zhí)行相應(yīng)活動動exit/活動活動面向?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)入一個狀態(tài)時,執(zhí)行某個動作;進(jìn)入和退出轉(zhuǎn)換:當(dāng)進(jìn)入一個狀態(tài)時,執(zhí)行某個動作;或當(dāng)退出某個狀態(tài)時,執(zhí)行什么動作。這時就可以使用或當(dāng)退出某個狀態(tài)時,執(zhí)行什么動作。這時就可以使用進(jìn)入和退出轉(zhuǎn)換來表示進(jìn)入和退出轉(zhuǎn)
26、換來表示內(nèi)部轉(zhuǎn)換:用來處理一些不離開該狀態(tài)的事件內(nèi)部轉(zhuǎn)換:用來處理一些不離開該狀態(tài)的事件 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML418.3.1 狀態(tài)圖的閱讀狀態(tài)圖的閱讀最為核心的元素?zé)o外乎是兩個:一個是用圓角矩形表示最為核心的元素?zé)o外乎是兩個:一個是用圓角矩形表示的狀態(tài)(初態(tài)和終態(tài)例外);另一個則是在狀態(tài)之間的、的狀態(tài)(初態(tài)和終態(tài)例外);另一個則是在狀態(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)換完成后對象的狀態(tài)目標(biāo)狀態(tài):當(dāng)轉(zhuǎn)換完成后對象的狀態(tài) 觸發(fā)事件:用來為轉(zhuǎn)換定義一個事件,包括調(diào)用、改變、觸發(fā)事件:用來為轉(zhuǎn)換定義一個事件,包括調(diào)用、改變、信號、時間四類事件信號、時間四類事件監(jiān)護(hù)條件:布爾表達(dá)式,決定是否激活轉(zhuǎn)換、監(jiān)護(hù)條件:布爾表達(dá)式,決定是否激活轉(zhuǎn)換、動作:轉(zhuǎn)換激活時的操作動作:轉(zhuǎn)換激活時的操作面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML438.3.1 狀態(tài)圖的閱讀狀態(tài)圖的閱讀與狀態(tài)與狀態(tài)off相關(guān)的轉(zhuǎn)換有兩個,其觸發(fā)事件都是相關(guān)的轉(zhuǎn)換有兩個,其觸發(fā)事件都是turnOn,只不過其監(jiān)護(hù)條件不同。如果對象收到事件只不過其監(jiān)護(hù)條件不同。如果對象
28、收到事件turnOn,那,那么將判斷壺中是否有水;如果么將判斷壺中是否有水;如果沒水沒水,則仍然處于,則仍然處于off狀狀態(tài);如果態(tài);如果有水有水則轉(zhuǎn)為則轉(zhuǎn)為on狀態(tài),并執(zhí)行狀態(tài),并執(zhí)行“燒水燒水”動作動作而與狀態(tài)而與狀態(tài)on相關(guān)的轉(zhuǎn)換也有兩個,如果相關(guān)的轉(zhuǎn)換也有兩個,如果“水開了水開了”就執(zhí)就執(zhí)行行turnOff,關(guān)掉開關(guān);如果燒壞了,就進(jìn)入了終態(tài)了,關(guān)掉開關(guān);如果燒壞了,就進(jìn)入了終態(tài)了 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML448.3.1 狀態(tài)圖狀態(tài)圖練習(xí):練習(xí): 閱讀一個電梯系統(tǒng)的狀態(tài)圖閱讀一個電梯系統(tǒng)的狀態(tài)圖步驟步驟: : 1 1)標(biāo)識出狀態(tài)。)標(biāo)識出狀態(tài)。 2 2)標(biāo)識
29、出轉(zhuǎn)移。)標(biāo)識出轉(zhuǎn)移。 3 3)標(biāo)識出事件和動作。)標(biāo)識出事件和動作。面向?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)識出需要進(jìn)一步建模的實(shí)體。)標(biāo)識出需要進(jìn)一步建模的實(shí)體。 2 2)標(biāo)識出每一個實(shí)體的開始狀態(tài)和結(jié)束狀態(tài)。)標(biāo)識出每一個實(shí)體的開始狀態(tài)和結(jié)束狀態(tài)。 3 3)確定與每一個實(shí)體相關(guān)的事件。)確定與每一個實(shí)體相關(guān)的事件。 4 4)從起始狀態(tài)開始創(chuàng)建狀態(tài)圖。)從起始狀態(tài)開始創(chuàng)
30、建狀態(tài)圖。 5 5)如果必要則創(chuàng)建組合狀態(tài)。)如果必要則創(chuàng)建組合狀態(tài)。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML478.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法 1標(biāo)識出需要進(jìn)一步建模的實(shí)體 首先要標(biāo)識出哪些實(shí)體需要使用狀態(tài)圖進(jìn)一步建模。狀態(tài)圖應(yīng)該用于復(fù)雜的實(shí)體,而不必用于具有復(fù)雜行為的實(shí)體。對于有復(fù)雜行為的實(shí)體,使用活動圖可能會更加適合。具有清晰、有序的狀態(tài)實(shí)體最適合使用狀態(tài)圖進(jìn)一步建模。后面將會建模一個Grade對象,尤其是它的保存功能。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML488.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法 2標(biāo)識出每一個實(shí)體的開始和結(jié)束狀態(tài) 要想標(biāo)
31、識出某個實(shí)體的開始狀態(tài),需要知道實(shí)體是如何實(shí)例化的,以及實(shí)體是如何開始的。Grade對象在有了一個新的分?jǐn)?shù)需要保存時實(shí)例化。要想標(biāo)識出某個實(shí)體的結(jié)束狀態(tài),需要知道相反的信息:實(shí)體何時從系統(tǒng)中退出?Grade對象在完成保存數(shù)據(jù)的操作之后退出系統(tǒng),不管該操作是否成功。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML498.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法 因此,因此,Grade對象的狀態(tài)圖具有如下描述保存功對象的狀態(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)。面
32、向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML508.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法3 3確定與每一個實(shí)體相關(guān)的事件確定與每一個實(shí)體相關(guān)的事件 事件用來最終完成實(shí)體的功能。要想確定實(shí)體的事件,需要事件用來最終完成實(shí)體的功能。要想確定實(shí)體的事件,需要知道事件的任務(wù)。對于知道事件的任務(wù)。對于GradeGrade對象,它的任務(wù)是保存分?jǐn)?shù)。進(jìn)一對象,它的任務(wù)是保存分?jǐn)?shù)。進(jìn)一步了解事件的任務(wù)之后,就可以確定步了解事件的任務(wù)之后,就可以確定GradeGrade對象的事件包括接受對象的事件包括接受數(shù)據(jù)、成功地保存數(shù)據(jù)和不成功地保存數(shù)據(jù)。數(shù)據(jù)、成功地保存數(shù)據(jù)和不成功地保存數(shù)據(jù)。 有了這些事件之后
33、,就可以為有了這些事件之后,就可以為GradeGrade對象創(chuàng)建這些事件的狀對象創(chuàng)建這些事件的狀態(tài)列表,如下所示:態(tài)列表,如下所示: Ready Ready 用于數(shù)據(jù)加載時。用于數(shù)據(jù)加載時。 Persisting Persisting 用于數(shù)據(jù)保存時。用于數(shù)據(jù)保存時。 Saved Saved 用于數(shù)據(jù)已經(jīng)保存后。用于數(shù)據(jù)已經(jīng)保存后。 Error Error 用于數(shù)據(jù)由于出錯而未成功保存時。用于數(shù)據(jù)由于出錯而未成功保存時。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML518.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法4 4從開始狀態(tài)開始創(chuàng)建從開始狀態(tài)開始創(chuàng)建狀態(tài)圖狀態(tài)圖 利用上述的信息,我利
34、用上述的信息,我們就可以創(chuàng)建一個簡單們就可以創(chuàng)建一個簡單的狀態(tài)圖來描述的狀態(tài)圖來描述GradeGrade對對象的不同狀態(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如果必要則指定合成狀態(tài)如果必要則指定合成狀態(tài) 創(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)為PersistingP
35、ersisting狀態(tài)過于籠統(tǒng),因此可狀態(tài)過于籠統(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):對于航班機(jī)票預(yù)訂系統(tǒng)而言,顯然包括尋找主要狀態(tài):對于航班機(jī)票預(yù)訂系統(tǒng)而言,顯然包括的狀態(tài)主要有的
36、狀態(tài)主要有 - 在剛確定飛機(jī)計(jì)劃時,顯然是沒有任何預(yù)訂的,并在剛確定飛機(jī)計(jì)劃時,顯然是沒有任何預(yù)訂的,并且在有人預(yù)訂機(jī)票之前都將處于這種且在有人預(yù)訂機(jī)票之前都將處于這種“無預(yù)訂無預(yù)訂”狀態(tài)狀態(tài) - 對訂座而言顯然有對訂座而言顯然有“部分預(yù)訂部分預(yù)訂”和和“預(yù)訂完預(yù)訂完”兩種兩種狀態(tài)狀態(tài) - 而當(dāng)航班快要起飛時,顯然要而當(dāng)航班快要起飛時,顯然要“預(yù)訂關(guān)閉預(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ì)&UML558.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法確定狀態(tài)間
37、轉(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)換面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML568.3.2 狀態(tài)圖的建模方法狀態(tài)圖的建模方法細(xì)化狀態(tài)內(nèi)的活動與轉(zhuǎn)換細(xì)化狀態(tài)內(nèi)的活動與轉(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)建一個狀態(tài)圖來描述航班如何從提出申請、創(chuàng)建一個狀態(tài)圖來描述航班如何從提出申請、制定航班計(jì)劃、售票、起飛、飛行、到著陸的狀態(tài)制定航班計(jì)劃、售票、起飛、飛行、到著陸的狀態(tài)過程。過程。練習(xí)步驟;練習(xí)步驟; 1 1)標(biāo)識出要建模的實(shí)體。)標(biāo)識出要建模的實(shí)體。 2 2)標(biāo)識出實(shí)體的狀態(tài)。)標(biāo)識出實(shí)體的狀態(tài)。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML59航班申請航班計(jì)劃entry/ 發(fā)布航班信息do/ 檢查當(dāng)前日期批準(zhǔn)航班計(jì)劃不允許申請航班還有票
39、航班票售完結(jié)束售票飛行準(zhǔn)時到達(dá)目的機(jī)場延時到達(dá)目的機(jī)場售票/退票 開始預(yù)售 售最后一張票 起飛前30分鐘 退票 起飛前30分鐘 起飛 天氣非正常 天氣正常 降落降落面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML608.4 什么是活動圖什么是活動圖 活動圖是一種用于描述系統(tǒng)行為的模型視圖,它可用活動圖是一種用于描述系統(tǒng)行為的模型視圖,它可用來描述過程(業(yè)務(wù)過程、工作流、事件流等)中的活動及來描述過程(業(yè)務(wù)過程、工作流、事件流等)中的活動及其遷移。其遷移。 活動圖的標(biāo)記符與狀態(tài)圖的標(biāo)記符非常相似,有時會活動圖的標(biāo)記符與狀態(tài)圖的標(biāo)記符非常相似,有時會讓人混淆。其實(shí),讓人混淆。其實(shí),狀態(tài)圖狀態(tài)圖
40、用來表示用來表示單個對象單個對象的行為如何改的行為如何改變其狀態(tài)。而變其狀態(tài)。而活動圖活動圖是用來建模是用來建模不同區(qū)域不同區(qū)域的工作如何彼此的工作如何彼此交互。交互。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML618.4 什么是活動圖什么是活動圖 活動圖能夠附加在如下建模元素中以描述該活動圖能夠附加在如下建模元素中以描述該元素的行為。元素的行為。用例用例類類接口接口組件組件節(jié)點(diǎn)節(jié)點(diǎn)面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML628.4 活動圖的用途活動圖的用途活動圖的主要應(yīng)用活動圖的主要應(yīng)用1.1.描述用例的行為描述用例的行為 活動圖對用例描述尤其有用,它可建模用例的活動圖對
41、用例描述尤其有用,它可建模用例的工作流,顯示用例內(nèi)部和用例之間的路徑;它也可工作流,顯示用例內(nèi)部和用例之間的路徑;它也可以向讀者說明需要滿足什么條件用例才會有效,以以向讀者說明需要滿足什么條件用例才會有效,以及用例完成后系統(tǒng)保留的條件或者狀態(tài)。及用例完成后系統(tǒng)保留的條件或者狀態(tài)。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML638.4 活動圖的用途活動圖的用途2 2理解工作流程理解工作流程 活動圖對理解業(yè)務(wù)處理過程十分有用??梢援嫵龌顒訄D對理解業(yè)務(wù)處理過程十分有用??梢援嫵雒枋鰳I(yè)務(wù)工作流的活動圖與領(lǐng)域?qū)<疫M(jìn)行交流,明確描述業(yè)務(wù)工作流的活動圖與領(lǐng)域?qū)<疫M(jìn)行交流,明確業(yè)務(wù)處理操作是如何進(jìn)行
42、的,將會有怎樣的變化。業(yè)務(wù)處理操作是如何進(jìn)行的,將會有怎樣的變化。3 3描述復(fù)雜過程的算法描述復(fù)雜過程的算法 在這種情況下使用的活動圖不過是在這種情況下使用的活動圖不過是UMLUML版的程序流版的程序流程圖,常規(guī)的順序、分支過程在活動圖中都能得到充程圖,常規(guī)的順序、分支過程在活動圖中都能得到充分的表現(xiàn)。分的表現(xiàn)。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML648.5 活動圖的基本概念活動圖的基本概念 活動圖保留了許多傳統(tǒng)的流活動圖保留了許多傳統(tǒng)的流程圖的特征,它包含如下元素。程圖的特征,它包含如下元素?;顒踊顒硬僮鞑僮鳡顟B(tài)狀態(tài)轉(zhuǎn)移轉(zhuǎn)移對象流對象流分叉與分叉與聯(lián)結(jié)聯(lián)結(jié) (匯合)(匯合)決
43、策決策 (分支分支)面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML658.5 活動圖的基本概念活動圖的基本概念 活動活動 活動在活動圖中,用來指示要完成某項(xiàng)工作的動作活動在活動圖中,用來指示要完成某項(xiàng)工作的動作或表示工作流的步驟。其或表示工作流的步驟。其UMLUML標(biāo)記符是一個帶有圓角標(biāo)記符是一個帶有圓角的矩形,如下圖所示。的矩形,如下圖所示。 在確定活動名稱時應(yīng)該恰當(dāng)?shù)孛?,選擇準(zhǔn)確描在確定活動名稱時應(yīng)該恰當(dāng)?shù)孛?,選擇準(zhǔn)確描述所發(fā)生動作的幾個詞。例如,述所發(fā)生動作的幾個詞。例如,Save FileSave File或者或者 Create New DocumentCreate New
44、Document就是比較恰當(dāng)?shù)幕顒用Q,而就是比較恰當(dāng)?shù)幕顒用Q,而RunRun或者或者Update Update 對讀者而言是不完整的名稱。對讀者而言是不完整的名稱。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML668.5 活動圖的基本概念活動圖的基本概念2. 操作 可以用操作在活動中增加更多詳細(xì)的步驟??梢杂貌僮髟诨顒又性黾痈嘣敿?xì)的步驟。操作操作是活動中執(zhí)是活動中執(zhí)行的小步驟。在下列情況下發(fā)生:行的小步驟。在下列情況下發(fā)生: 進(jìn)入活動時發(fā)生的操作,標(biāo)有進(jìn)入活動時發(fā)生的操作,標(biāo)有entryentry字樣。字樣。 活動進(jìn)行時發(fā)生的操作,直到離開活動,標(biāo)有活動進(jìn)行時發(fā)生的操作,直到離開活
45、動,標(biāo)有dodo字樣。字樣。 離開活動時發(fā)生的操作,標(biāo)有離開活動時發(fā)生的操作,標(biāo)有exitexit字樣。字樣。 特定事件發(fā)生時的操作,標(biāo)有特定事件發(fā)生時的操作,標(biāo)有eventevent字樣和事件名。字樣和事件名。 操作是可選的,但提供的詳細(xì)信息有助于后面完成系統(tǒng)設(shè)計(jì)。操作是可選的,但提供的詳細(xì)信息有助于后面完成系統(tǒng)設(shè)計(jì)。如果包括操作,則其在活動內(nèi)顯示,不管其屬于上面哪一類。下如果包括操作,則其在活動內(nèi)顯示,不管其屬于上面哪一類。下面是帶操作的活動例子。面是帶操作的活動例子。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML678.5 活動圖的基本概念活動圖的基本概念面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο?/p>
46、分析與設(shè)計(jì)&UML688.5 活動圖的基本概念活動圖的基本概念3. 3. 狀態(tài)狀態(tài) 狀態(tài)的標(biāo)記符與活動類似,也是帶圓角的矩形,但狀態(tài)的狀態(tài)的標(biāo)記符與活動類似,也是帶圓角的矩形,但狀態(tài)的圓角比較小,如下圖所示。圓角比較小,如下圖所示。 狀態(tài)通常使用一個指示系統(tǒng)當(dāng)前狀態(tài)的單詞或者短語來標(biāo)狀態(tài)通常使用一個指示系統(tǒng)當(dāng)前狀態(tài)的單詞或者短語來標(biāo)識。例如,識。例如,StoppedStopped是一個狀態(tài),而是一個狀態(tài),而stopstop則是一個活動。則是一個活動。 UMLUML包含兩個特殊狀態(tài),即開始狀態(tài)和結(jié)束狀態(tài)。開始包含兩個特殊狀態(tài),即開始狀態(tài)和結(jié)束狀態(tà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 活動圖的基本概念活動圖的基本概念 注意:每一個活動圖注意:每一個活動圖只能有一個開始狀態(tài)只能有一個開始狀態(tài),但是可但是可以有無數(shù)個結(jié)束狀態(tài)以有無數(shù)個結(jié)束狀態(tài)。如下圖所示:。如下圖所示:與狀態(tài)圖不同與狀態(tài)圖不同面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML708.5 活動圖的基本概念活動圖的基本概念面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML718.5 活動圖的基本概念活動圖的基本概念4 4轉(zhuǎn)移轉(zhuǎn)移 轉(zhuǎn)移用來指示一種狀態(tài)到另一個狀態(tài)的控制流。它們可
48、以顯示轉(zhuǎn)移用來指示一種狀態(tài)到另一個狀態(tài)的控制流。它們可以顯示活動之間或者狀態(tài)之間的控制流。轉(zhuǎn)移的標(biāo)記符是帶開放箭頭的活動之間或者狀態(tài)之間的控制流。轉(zhuǎn)移的標(biāo)記符是帶開放箭頭的實(shí)線,如下圖所示。實(shí)線,如下圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML728.5 活動圖的基本概念活動圖的基本概念綜合運(yùn)用綜合運(yùn)用 現(xiàn)在已經(jīng)學(xué)習(xí)了活動圖的現(xiàn)在已經(jīng)學(xué)習(xí)了活動圖的4 4種主要標(biāo)記符,下面綜合運(yùn)用種主要標(biāo)記符,下面綜合運(yùn)用這些標(biāo)記來生成一個活動圖,如下圖所示。這些標(biāo)記來生成一個活動圖,如下圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML738.5 活動圖的基本概念活動圖的基本概念5.
49、 5. 決策決策 (分支)(分支) 決策是基于判斷條件選擇控制流繼續(xù)的方向。決策的決策是基于判斷條件選擇控制流繼續(xù)的方向。決策的UMLUML符符號是一個小菱形標(biāo)記符,然后從這里再按條件控制分支轉(zhuǎn)移到號是一個小菱形標(biāo)記符,然后從這里再按條件控制分支轉(zhuǎn)移到滿足條件的活動,如下圖所示。滿足條件的活動,如下圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML748.5 活動圖的基本概念活動圖的基本概念例例 描述教師記錄學(xué)生成績用例的活動圖描述教師記錄學(xué)生成績用例的活動圖面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML758.5 活動圖的基本概念活動圖的基本概念學(xué)習(xí)活動圖中的其他標(biāo)記符學(xué)習(xí)活
50、動圖中的其他標(biāo)記符 1.1.泳道泳道 泳道是活動圖中的區(qū)域泳道是活動圖中的區(qū)域劃分,根據(jù)每個活動的職責(zé)劃分,根據(jù)每個活動的職責(zé)對所有活動進(jìn)行劃分,每個對所有活動進(jìn)行劃分,每個泳道代表一個責(zé)任區(qū)。泳道代表一個責(zé)任區(qū)。 泳道可以使活動圖非常泳道可以使活動圖非常整潔,因?yàn)樗鼈冊诤艽蟪潭日麧崳驗(yàn)樗鼈冊诤艽蟪潭壬显鰪?qiáng)了活動圖的可讀性。上增強(qiáng)了活動圖的可讀性。泳道使用幾個大矩形框表示,泳道使用幾個大矩形框表示,如右圖所示。如右圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML768.5 活動圖的基本概念活動圖的基本概念 下面示例顯示了一個在下面示例顯示了一個在TeacherTeacher和和W
51、eb InterfaceWeb Interface泳道之間交叉轉(zhuǎn)移控制流的活動圖。如果沒有泳道,泳道之間交叉轉(zhuǎn)移控制流的活動圖。如果沒有泳道,該活動圖就無法說明該活動圖就無法說明Teacher Teacher 使用了使用了LogonLogon、Choose Choose StudentStudent和和Change Student InfoChange Student Info活動,活動,Web Web InterfaceInterface使用使用Validate UserValidate User、Retrieve Student Retrieve Student InfoInfo和和Per
52、sist User InfoPersist User Info活動,如下圖所示。活動,如下圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML778.5 活動圖的基本概念活動圖的基本概念面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML788.5 活動圖的基本概念活動圖的基本概念2.2.分叉和聯(lián)結(jié)分叉和聯(lián)結(jié)( (匯合匯合) ) 分叉用來表示并行活動的分支處理,聯(lián)結(jié)用來把并行活動分叉用來表示并行活動的分支處理,聯(lián)結(jié)用來把并行活動的匯集到同步處理。的匯集到同步處理。 分叉分叉和聯(lián)結(jié)在和聯(lián)結(jié)在UMLUML中的表示方法相似,都用粗黑線表示。分中的表示方法相似,都用粗黑線表示。分叉叉具有一個轉(zhuǎn)
53、移入口,兩個或者多個轉(zhuǎn)移出口。分具有一個轉(zhuǎn)移入口,兩個或者多個轉(zhuǎn)移出口。分叉叉描述了單描述了單向處理控制流分成了多個控制流。聯(lián)結(jié)與此相反,聯(lián)結(jié)具有兩向處理控制流分成了多個控制流。聯(lián)結(jié)與此相反,聯(lián)結(jié)具有兩個或者多個轉(zhuǎn)移個或者多個轉(zhuǎn)移入入口,只有一個出口。聯(lián)結(jié)描述了不同的處理口,只有一個出口。聯(lián)結(jié)描述了不同的處理控制流合并到一起形成一個單向處理,如下圖所示??刂屏骱喜⒌揭黄鹦纬梢粋€單向處理,如下圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML798.5 活動圖的基本概念活動圖的基本概念 如果一個處理在其他處理之前到達(dá)了聯(lián)結(jié),它將會如果一個處理在其他處理之前到達(dá)了聯(lián)結(jié),它將會等待等待,直
54、到所有的處理都準(zhǔn)備好之后才會向聯(lián)結(jié)傳遞控制權(quán)。直到所有的處理都準(zhǔn)備好之后才會向聯(lián)結(jié)傳遞控制權(quán)。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML808.5 活動圖的基本概念活動圖的基本概念 左例演示了分叉中的一左例演示了分叉中的一個處理時間長于另一個的個處理時間長于另一個的情況。當(dāng)然,這完全是由情況。當(dāng)然,這完全是由每一個處理中的活動數(shù)假每一個處理中的活動數(shù)假定的。由于我們不知道每定的。由于我們不知道每一個活動有多長,因此不一個活動有多長,因此不能保證哪一個首先完成。能保證哪一個首先完成。為此,我們在讓用戶訪問為此,我們在讓用戶訪問應(yīng)用程序之前插入了一個應(yīng)用程序之前插入了一個聯(lián)結(jié),以便確保兩
55、個獨(dú)立聯(lián)結(jié),以便確保兩個獨(dú)立的處理彼此連接在一起。的處理彼此連接在一起。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML818.5 活動圖的基本概念活動圖的基本概念3 3對象流對象流 活動可以輸入和輸出對象,并可以修改對象狀活動可以輸入和輸出對象,并可以修改對象狀態(tài)。我們能夠在活動圖上用對象流表示這些。如下態(tài)。我們能夠在活動圖上用對象流表示這些。如下圖所示。圖所示。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML828.5 活動圖的基本概念活動圖的基本概念面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML838.5 活動圖的基本概念活動圖的基本概念面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)
56、&UML848.7 活動圖建模活動圖建模 創(chuàng)建活動圖共有創(chuàng)建活動圖共有5 5個任務(wù):個任務(wù): 1 1)標(biāo)識需要活動圖的用例。)標(biāo)識需要活動圖的用例。 2 2)建模每一個用例的主路徑。)建模每一個用例的主路徑。 3 3)建模每一個用例的從路徑。)建模每一個用例的從路徑。 4 4)添加游泳道來標(biāo)識活動的事務(wù)分區(qū)。)添加游泳道來標(biāo)識活動的事務(wù)分區(qū)。 5 5)改進(jìn)高層活動并添加更多活動到圖中。)改進(jìn)高層活動并添加更多活動到圖中。 面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML858.7 活動圖建?;顒訄D建模1 1 標(biāo)識用例標(biāo)識用例 在建模活動圖之前,需要首先確定要建模什么。下面的教師在建模活動圖之前,需要首先確定要建模什么。下面的教師更新分?jǐn)?shù)用例是一組較大用例的一部分,我們就從它開始。如下更新分?jǐn)?shù)用例是一組較大用例的一部分,我們就從它開始。如下圖所示。這個用例實(shí)際上使用了圖所示。這個用例實(shí)際上使用了3 3個用例。我們不僅有個用例。我們不僅有Update Update GradeGrade用例,還有用例,還有Save GradeSave Grade和和Load GradeLoad Grade用例。用例。面向?qū)ο蠓治雠c設(shè)計(jì)面向?qū)ο蠓治雠c設(shè)計(jì)&UML868.7 活動圖建?;顒訄D建模2 2建模主路徑建模
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房屋租賃合同模板 山西
- 貸款貼息轉(zhuǎn)讓合同模板
- 租借別墅院子合同模板
- 空運(yùn)運(yùn)輸合同模板 英文
- 高空吊籃租賃合同模板
- 農(nóng)村羊肉銷售合同模板
- 車輛保險(xiǎn)銷售合同模板
- 中介代賣合同模板
- 錢財(cái)贈與協(xié)議合同模板
- 購貨合同模板肉類
- 民事起訴狀(食品安全)律師擬定版本
- 管路沿程阻力測定實(shí)驗(yàn)報(bào)告
- 幼小銜接視角下的語言教學(xué)的研究
- 城管占道挖掘施工方案
- 鋼結(jié)構(gòu)施工方案重難點(diǎn)及解決措施
- 房屋租賃交接家私清單
- 黃金分割(省一等獎)
- 山東專升本計(jì)算機(jī)-電子表格系統(tǒng)-Excel-2010課件(新版考試大綱)
- 《電子信息工程專業(yè)導(dǎo)論》復(fù)習(xí)備考核心題庫(100多題)
- 青島五四學(xué)制版四年級數(shù)學(xué)下冊《我能長多高》教案及教學(xué)反思
- 弗蘭德直交軸減速機(jī)
評論
0/150
提交評論