第六章狀態(tài)圖和活動(dòng)圖_第1頁(yè)
第六章狀態(tài)圖和活動(dòng)圖_第2頁(yè)
第六章狀態(tài)圖和活動(dòng)圖_第3頁(yè)
第六章狀態(tài)圖和活動(dòng)圖_第4頁(yè)
第六章狀態(tài)圖和活動(dòng)圖_第5頁(yè)
已閱讀5頁(yè),還剩70頁(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、1/336第6章 狀態(tài)圖,活動(dòng)圖東北大學(xué)信息科學(xué)與工程學(xué)院東北大學(xué)信息科學(xué)與工程學(xué)院 楊雷楊雷2主要內(nèi)容 狀態(tài)圖狀態(tài)圖 活動(dòng)圖活動(dòng)圖 3狀態(tài)圖 狀態(tài)機(jī)狀態(tài)機(jī):一個(gè)極度確切的描述是它是一個(gè)有向圖形,由一組節(jié)點(diǎn)和一組相應(yīng)的轉(zhuǎn)移函數(shù)組成。狀態(tài)機(jī)是一個(gè)狀態(tài)和裝換的圖,它說(shuō)明對(duì)象在它的生命期中響應(yīng)事件所經(jīng)歷的狀態(tài)序列以及它對(duì)那些事件的響應(yīng)。 狀態(tài)圖狀態(tài)圖 :狀態(tài)圖實(shí)際上是一種由狀態(tài)、變遷、事件和活動(dòng)組成的狀態(tài)機(jī)。狀態(tài)圖描述從狀態(tài)到狀態(tài)的控制流,常用于系統(tǒng)的動(dòng)態(tài)特性建模。 4狀態(tài)圖的用途 UML的狀態(tài)圖主要用于:建立一個(gè)對(duì)象在其生存期間的動(dòng)態(tài)行為表現(xiàn)一個(gè)對(duì)象所經(jīng)歷的狀態(tài)序列引起狀態(tài)轉(zhuǎn)移的事件以及因狀態(tài)轉(zhuǎn)移

2、而伴隨的動(dòng)作5 狀態(tài)是對(duì)象的一組屬性值,這組屬性對(duì)所發(fā)生的事件具有相同性質(zhì)的反應(yīng)。 狀態(tài)圖所描述的對(duì)象往往具有多個(gè)屬性,一般狀態(tài)圖應(yīng)該在具有以下兩個(gè)特性的基礎(chǔ)上建模: 屬性擁有很少的值; 屬性在這些值之間的轉(zhuǎn)移有一定的限制。 例:類SellableItem有兩個(gè)屬性salePrice:Money和status:枚舉型。 其中salePrice的取值范圍為正實(shí)數(shù),status的取值為received, inInspection, accepted, rejected等,則應(yīng)根據(jù)屬性status建立狀態(tài)圖。6說(shuō)明: 狀態(tài)圖狀態(tài)圖是對(duì)系統(tǒng)的動(dòng)態(tài)行為建模。 狀態(tài)圖描述了一個(gè)特定對(duì)象的所有可能狀態(tài)以及由

3、于各種事件的發(fā)生而引起的狀態(tài)之間的轉(zhuǎn)移。 狀態(tài)圖是顯示狀態(tài)機(jī)的一種方式,另一種顯示狀態(tài)機(jī)的方式是活動(dòng)圖活動(dòng)圖。 Rose中,狀態(tài)圖不生成代碼,但狀態(tài)圖在檢查,調(diào)試和描述類的動(dòng)態(tài)行為時(shí)非常有用。7 狀態(tài)機(jī)圖與交互圖的區(qū)別:交互圖不顯示對(duì)象所有可能的動(dòng)態(tài)行為,只顯示特定交互(一個(gè)具體的用例)中多個(gè)對(duì)象的行為。狀態(tài)圖適合于描述跨越多個(gè)用例的單個(gè)對(duì)象的行為。8狀態(tài)圖中的基本概念 State (狀態(tài)) Transition (轉(zhuǎn)移) Event (事件) Action (動(dòng)作)9基本組成基本組成10狀態(tài)(State) 定義:定義:一個(gè)狀態(tài)是指在對(duì)象的生命期中的一個(gè)條件或狀況,在此期間對(duì)象將滿足某些條件、

4、執(zhí)行某些活動(dòng)或等待某些事件。說(shuō)明: 對(duì)象在任何時(shí)候都會(huì)處于某種狀態(tài)中,所有對(duì)象都具有狀態(tài)。 對(duì)象所處的狀態(tài)決定它如何響應(yīng)所檢測(cè)的事件或所接收的消息。 通常,事件使對(duì)象從一個(gè)狀態(tài)轉(zhuǎn)向另一個(gè)狀態(tài)。11 一個(gè)狀態(tài)有以下幾個(gè)部分: 狀態(tài)名狀態(tài)名 進(jìn)入進(jìn)入/退出動(dòng)作退出動(dòng)作(entry/exit action) 內(nèi)部轉(zhuǎn)移內(nèi)部轉(zhuǎn)移(internal transition) 不導(dǎo)致狀態(tài)改變的轉(zhuǎn)移,不會(huì)執(zhí)行不導(dǎo)致狀態(tài)改變的轉(zhuǎn)移,不會(huì)執(zhí)行entry和和exit動(dòng)作動(dòng)作 子狀態(tài)子狀態(tài) (substate) 嵌套在另外一個(gè)狀態(tài)中的狀態(tài)嵌套在另外一個(gè)狀態(tài)中的狀態(tài) 延遲事件延遲事件 (deferred event) 延

5、遲到下一狀態(tài)中處理的事件延遲到下一狀態(tài)中處理的事件狀態(tài)的構(gòu)成狀態(tài)的構(gòu)成12 狀態(tài)的類型分為:初態(tài)初態(tài) 一個(gè)狀態(tài)圖只能有一個(gè)初態(tài)一個(gè)狀態(tài)圖只能有一個(gè)初態(tài)終態(tài)終態(tài) 終態(tài)可以有一個(gè)或多個(gè),也可以沒有終態(tài)可以有一個(gè)或多個(gè),也可以沒有中間狀態(tài)中間狀態(tài)組合狀態(tài)組合狀態(tài)歷史狀態(tài)歷史狀態(tài)狀態(tài)的類型狀態(tài)的類型13組合狀態(tài) 子狀態(tài)子狀態(tài)是嵌套在另一個(gè)狀態(tài)中的狀態(tài)。 一個(gè)含有子狀態(tài)的狀態(tài)被稱作組合狀態(tài)組合狀態(tài)。14例:組合狀態(tài)和子狀態(tài)的例子。15說(shuō)明: 組合狀態(tài)中也有初始狀態(tài)和終結(jié)狀態(tài)。 從源狀態(tài)可以轉(zhuǎn)移到組合狀態(tài)本身,也可以直接轉(zhuǎn)移到組合狀態(tài)中的子狀態(tài)。 子狀態(tài)之間可分為“or”關(guān)系關(guān)系和“and”關(guān)關(guān)系系兩種。

6、“or”關(guān)系說(shuō)明在某一時(shí)刻僅可到達(dá)一個(gè)子狀態(tài),“and”關(guān)系說(shuō)明復(fù)合狀態(tài)中在某一時(shí)刻可同時(shí)到達(dá)多個(gè)子狀態(tài)。16例2:子狀態(tài)之間“and”關(guān)系的例子。例1:子狀態(tài)之間“or”關(guān)系的例子。17歷史狀態(tài)(History State) 一種偽狀態(tài),其目的是記住從組合狀態(tài)中退出時(shí)所處的子狀態(tài),當(dāng)再次進(jìn)入組合狀態(tài)時(shí),可直接進(jìn)入到這個(gè)子狀態(tài),而不是再次從組合狀態(tài)的初態(tài)開始。18歷史狀態(tài)例歷史狀態(tài)例 當(dāng)從狀態(tài)“結(jié)賬”和“顯示購(gòu)物車”返回子狀態(tài)“顯示索引信息” 時(shí),將進(jìn)入的是離開時(shí)的歷史狀態(tài)。 也就是說(shuō),轉(zhuǎn)到購(gòu)物或結(jié)賬區(qū)之后,再回到“瀏覽目錄”的頁(yè)面時(shí),其中的內(nèi)容是不變的,仍然保留原來(lái)的信息。19 H和H*的區(qū)

7、別:H只記住最外層的組合狀態(tài)的歷史。H*可記住任何深度的組合狀態(tài)的歷史。20轉(zhuǎn)移(Transition) 一個(gè)轉(zhuǎn)移轉(zhuǎn)移是兩個(gè)狀態(tài)之間的一種關(guān)系,當(dāng)指定的事件發(fā)生,指定的監(jiān)護(hù)條件得到滿足的時(shí)候,處于第一個(gè)狀態(tài)的對(duì)象執(zhí)行的指定的效果(指轉(zhuǎn)移激發(fā)時(shí)執(zhí)行的動(dòng)作或活動(dòng)),進(jìn)入第二種狀態(tài)。 轉(zhuǎn)換表示在一個(gè)對(duì)象的生命歷史中所有狀態(tài)之間可能有的路徑,以及在狀態(tài)變化時(shí)執(zhí)行的動(dòng)作。轉(zhuǎn)移說(shuō)明了處于一個(gè)狀態(tài)的對(duì)象響應(yīng)事件發(fā)生的方式。21 狀態(tài)的之間的轉(zhuǎn)移轉(zhuǎn)移通常是由事件事件觸發(fā)的,此時(shí)應(yīng)在轉(zhuǎn)移上標(biāo)出觸發(fā)轉(zhuǎn)移的事件表達(dá)式。如果轉(zhuǎn)移上未標(biāo)明事件,則表示在源狀態(tài)的內(nèi)部活動(dòng)執(zhí)行完畢后自動(dòng)觸發(fā)轉(zhuǎn)移。 Transition的格式

8、: event-signature guard-condition / action其中event-signature的格式為: event-name ( comma-separated-parameter-list )22 對(duì)于一個(gè)給定的狀態(tài),最終只能產(chǎn)生一個(gè)轉(zhuǎn)移,因此從相同的狀態(tài)出來(lái)的、事件相同的幾個(gè)轉(zhuǎn)移之間的條件應(yīng)該是互斥的。例:23Event(事件) 事件是系統(tǒng)執(zhí)行中發(fā)生的值得建模的事物。一個(gè)事件事件是對(duì)一個(gè)在時(shí)間和空間上占有一定位置的有意義的事情的規(guī)格說(shuō)明。 在狀態(tài)機(jī)中,一個(gè)事件的出現(xiàn)可以觸發(fā)狀態(tài)的轉(zhuǎn)換。 事件產(chǎn)生的原因包括:調(diào)用、滿足條件的狀態(tài)的出現(xiàn)、到達(dá)時(shí)間點(diǎn)或經(jīng)歷某一時(shí)間段、發(fā)

9、送信號(hào)等。 在UML中,事件分為四類:(1) Call event (調(diào)用事件調(diào)用事件)(2) Change event (變化事件變化事件)(3) Time event (時(shí)間事件時(shí)間事件)(4) Signal event (信號(hào)事件信號(hào)事件)24(1) 表示一個(gè)操作的調(diào)度。請(qǐng)求調(diào)用另一個(gè)表示一個(gè)操作的調(diào)度。請(qǐng)求調(diào)用另一個(gè)對(duì)象的操作。對(duì)象的操作。 Call event的語(yǔ)法格式如下:事件名事件名 ( 逗號(hào)分隔的參數(shù)列表逗號(hào)分隔的參數(shù)列表 )其中參數(shù)列表中的參數(shù)格式為:參數(shù)名:類型參數(shù)名:類型例:調(diào)用事件25(2) Change event: 如果一個(gè)布爾表達(dá)式中的變量發(fā)生變化,該布爾表達(dá)式的

10、值相應(yīng)的變化,從而滿足某些條件,則這種事件稱為變化事件。變化事件隱含了對(duì)于控制條件的不間斷測(cè)試。 Change event 用關(guān)鍵字when表示。 Change event和警戒條件(guard condition)的區(qū)別: 警戒條件只在所相關(guān)的事件出現(xiàn)后計(jì)算一次,如果值為false,則不進(jìn)行狀態(tài)轉(zhuǎn)移。 變化事件表示的是一個(gè)要不斷測(cè)試的事件變化事件26(3) Time event: 是指滿足某一時(shí)間表達(dá)式的情況的出現(xiàn)。 時(shí)間表達(dá)式可以表示絕對(duì)時(shí)間/相對(duì)時(shí)間分別用關(guān)鍵字when/after表示。例:時(shí)間事件27Signal(信號(hào)) 所謂信號(hào),是指由一個(gè)對(duì)象異步地發(fā)送、并由另外一個(gè)對(duì)象接收的一個(gè)已

11、命名的對(duì)象。 信號(hào)是作為對(duì)象之間的通信的信息塊的規(guī)范。信號(hào)是一個(gè)顯式命名的類元,其目標(biāo)是對(duì)象之間進(jìn)行顯示通訊,它有一些屬性,構(gòu)成它的信息。通過(guò)一個(gè)發(fā)送動(dòng)作,它被顯式地從一個(gè)對(duì)象發(fā)送到另一個(gè)對(duì)象。 信號(hào)事件表示對(duì)象接收到某個(gè)信號(hào)。 信號(hào)可以作為狀態(tài)機(jī)中一個(gè)狀態(tài)轉(zhuǎn)換的動(dòng)作而被發(fā)送,也可作為交互中一個(gè)的消息發(fā)送。28(4) Signal event: 表示的是對(duì)象接收到了信號(hào)這種情況,信號(hào)事件往往會(huì)觸發(fā)狀態(tài)的轉(zhuǎn)移。 Signal event的語(yǔ)法格式和Call event一樣。 信號(hào)事件是一個(gè)異步事件,調(diào)用事件一般是一個(gè)同步事件。信號(hào)事件29 信號(hào)用版型為的類圖標(biāo)表示。 信號(hào)之間可以具有泛化關(guān)系,形

12、成層次結(jié)構(gòu)。 在UML中,例外(exception)是信號(hào)的一種。 例:信號(hào)之間泛化關(guān)系的例子。30Action(動(dòng)作) 一個(gè)動(dòng)作動(dòng)作是一個(gè)可執(zhí)行的原子計(jì)算。它的執(zhí)行會(huì)導(dǎo)致系統(tǒng)狀態(tài)的改變或者值的返回。 是基本的活動(dòng)節(jié)點(diǎn),是UML能夠表達(dá)的最小計(jì)算單元。說(shuō)明: 從概念上講,動(dòng)作時(shí)瞬間的,是原子的,不可被中斷的,其執(zhí)行時(shí)間可忽略不計(jì)的。 UML并沒有規(guī)定描述action的語(yǔ)言格式,一般建模時(shí)采用實(shí)際的程序設(shè)計(jì)語(yǔ)言來(lái)描述。31 兩種特殊的動(dòng)作: entry action(進(jìn)入動(dòng)作)和exit action(退出動(dòng)作)。 Entry動(dòng)作:進(jìn)入狀態(tài)時(shí)執(zhí)行的活動(dòng),格式如下: entry /action-e

13、xpression Exit動(dòng)作:退出狀態(tài)時(shí)執(zhí)行的活動(dòng),格式如下: exit /action-expression(其中 action-expression 可以用到對(duì)象本身的屬性和輸入事件的參數(shù)) 例如; entry/setMode(onTrack) exit/setMode(offTrack)32繪制狀態(tài)圖繪制狀態(tài)圖 尋找主要的狀態(tài) 確定狀態(tài)之間的轉(zhuǎn)換 細(xì)化狀態(tài)內(nèi)的活動(dòng)與轉(zhuǎn)換 用組合狀態(tài)來(lái)展開細(xì)節(jié)33尋找主要的狀態(tài),確定之間的轉(zhuǎn)換尋找主要的狀態(tài),確定之間的轉(zhuǎn)換34細(xì)化狀態(tài)內(nèi)的活動(dòng)與轉(zhuǎn)換細(xì)化狀態(tài)內(nèi)的活動(dòng)與轉(zhuǎn)換35使用組合狀態(tài)使用組合狀態(tài)36課程注冊(cè)系統(tǒng)中的狀態(tài)圖例子37類型為Registra

14、tionController的對(duì)象的狀態(tài)圖:38訂單處理系統(tǒng)的例子訂單處理系統(tǒng)的例子39使用組合狀態(tài)使用組合狀態(tài)40狀態(tài)圖的工具支持 正向工程:根據(jù)狀態(tài)圖生成代碼。逆向向工程:理論上可行,但實(shí)際上不大可能。 所生成的代碼示例:41class MessageParser public boolean put(char c) switch (state) case Waiting: if (c = ) state = GettingBody; else token.append(c); break; case GettingBody : if (c = ;) state = Waiting; re

15、turn true; else body.append(c); return false; public StringBuffer getToken() return token;public StringBuffer getBody() return body;private final static int Waiting = 0;private final static int GettingToken = 1;private final static int GettingBody = 2;private int state = Waiting;private StringBuffer

16、 token, body;42狀態(tài)圖的應(yīng)用狀態(tài)圖的應(yīng)用 用途 對(duì)象生命周期建模 主要描述對(duì)象能夠響應(yīng)的事件,對(duì)這些事件的響應(yīng)以及過(guò)去對(duì)當(dāng)前行為的影響 對(duì)反應(yīng)型對(duì)象建模 這個(gè)對(duì)象可能處于穩(wěn)定狀態(tài),從一個(gè)狀態(tài)到另一個(gè)狀態(tài)之間的轉(zhuǎn)換所需的觸發(fā)事件,以及每個(gè)狀態(tài)改變時(shí)發(fā)生的動(dòng)作 狀態(tài)及既可以用來(lái)表示一個(gè)業(yè)務(wù)領(lǐng)域的知識(shí),也可以用來(lái)描述設(shè)計(jì)階段對(duì)象的狀態(tài)變遷43主要內(nèi)容 狀態(tài)圖狀態(tài)圖 活動(dòng)圖活動(dòng)圖 44活動(dòng)圖 (Activity Diagram) 活動(dòng)圖是任何系統(tǒng)活動(dòng)以及活動(dòng)之間數(shù)據(jù)流或判斷的可視表示。 活動(dòng)圖是一種表述過(guò)程基理、業(yè)務(wù)過(guò)程以及工作流的技術(shù)。它可以用來(lái)對(duì)業(yè)務(wù)過(guò)程、工作流建模,也可以對(duì)用例實(shí)現(xiàn)

17、甚至是程序?qū)崿F(xiàn)來(lái)建模。 活動(dòng)圖(Activity Diagram)的應(yīng)用非常廣泛,它既可用來(lái)描述操作(類的方法)的行為,也可以描述用例和對(duì)象內(nèi)部的工作過(guò)程,并可用于表示并行過(guò)程。45說(shuō)明: 活動(dòng)圖活動(dòng)圖是對(duì)系統(tǒng)的動(dòng)態(tài)行為建模的五個(gè)圖之一。 活動(dòng)圖中一個(gè)活動(dòng)結(jié)束后將立即進(jìn)入下一個(gè)活動(dòng)(在狀態(tài)圖中狀態(tài)的轉(zhuǎn)移可能需要事件的觸發(fā))。 活動(dòng)圖是狀態(tài)圖的特例。UML 2.0而言,而言,去除了這一規(guī)定。去除了這一規(guī)定。46活動(dòng)圖的例子活動(dòng)圖的例子47活動(dòng)圖中的基本概念 活動(dòng)(activity ) 轉(zhuǎn)移 (transition ) 泳道(swimlane ) 分支 (branch ) 分叉和匯合 (fork

18、and join ) 對(duì)象流 (object flow )48活動(dòng) (activity) 活動(dòng)是對(duì)行為的說(shuō)明,它描述了計(jì)算過(guò)程順序和并發(fā)的步驟?;顒?dòng)關(guān)注計(jì)算的過(guò)程而不是執(zhí)行計(jì)算的對(duì)象或涉及的數(shù)據(jù)值,盡管這些可以表示為活動(dòng)的一部分。 活動(dòng)表示某流程中的任務(wù)的執(zhí)行,可以表示某算法過(guò)程中語(yǔ)句的執(zhí)行 活動(dòng)的解釋依賴于作圖的目的和抽象層次,在概念層描述中,活動(dòng)表示要完成的一些任務(wù);在說(shuō)明層和實(shí)現(xiàn)層中,活動(dòng)表示類中的方法。 區(qū)分動(dòng)作狀態(tài)和活動(dòng)狀態(tài) 動(dòng)作狀態(tài):原子的,不能分解,沒有內(nèi)部轉(zhuǎn)移,沒有內(nèi)部活動(dòng),工作時(shí)間可忽略 活動(dòng)狀態(tài):不是原子的,可分解的,工作需要一定的時(shí)間49活動(dòng)的表示活動(dòng)的表示 活動(dòng)節(jié)點(diǎn)用圓

19、角框表示,標(biāo)注活動(dòng)名,用來(lái)表示一個(gè)活動(dòng)活動(dòng)節(jié)點(diǎn)用圓角框表示,標(biāo)注活動(dòng)名,用來(lái)表示一個(gè)活動(dòng)初始節(jié)點(diǎn)和活動(dòng)終點(diǎn)初始節(jié)點(diǎn)和活動(dòng)終點(diǎn)初態(tài)初態(tài)終態(tài)終態(tài)50轉(zhuǎn)移(transition) 當(dāng)一個(gè)活動(dòng)結(jié)束時(shí),控制流就會(huì)馬上傳遞給下一個(gè)活動(dòng)節(jié)點(diǎn),稱之為轉(zhuǎn)移。 轉(zhuǎn)移描述活動(dòng)之間的關(guān)系,描述由于隱含事件引起的活動(dòng)變遷,即轉(zhuǎn)移可以連接各活動(dòng)及特殊活動(dòng)(初態(tài)、終態(tài)、判斷、同步線)。 轉(zhuǎn)移用帶箭頭的直線表示,可標(biāo)注執(zhí)行該轉(zhuǎn)移的條件,無(wú)標(biāo)注表示順序執(zhí)行。選擇商品下訂單51分支 (branch) 對(duì)同一個(gè)觸發(fā)事件,可根據(jù)不同警戒條件轉(zhuǎn)向不同的活動(dòng),每個(gè)可能的轉(zhuǎn)移是一個(gè)分支 表示分支的兩種方法:方法1方法252分叉和匯合 (f

20、ork和join)表示系統(tǒng)或?qū)ο蟮牟l(fā)行為分叉(fork): 一個(gè)控制流被兩個(gè)或多個(gè)控制流代替 并發(fā)匯合(join): 兩個(gè)或多個(gè)控制流被一個(gè)控制流代替53說(shuō)明: 利用fork和join可以表示系統(tǒng)中或?qū)ο笾械牟l(fā)行為。例:fork和join的例子。54泳道 (Swimlane) 泳道進(jìn)一步描述完成活動(dòng)的對(duì)象,并聚合一組活動(dòng)。 活動(dòng)圖是另一種描述交互的方式,描述采取何種動(dòng)作,做什么(對(duì)象狀態(tài)改變),何時(shí)發(fā)生(動(dòng)作序列),以及在何處發(fā)生(泳道)。 泳道也是一種分組機(jī)制。 活動(dòng)圖中的區(qū)域劃分,根據(jù)活動(dòng)職責(zé)劃分 每個(gè)泳道代表一個(gè)責(zé)任區(qū) 泳道和類不是一一對(duì)應(yīng) 泳道關(guān)心的是其所代表的職責(zé) 一個(gè)泳道可能由

21、1或n個(gè)類實(shí)現(xiàn) 每個(gè)泳道都必須有一個(gè)唯一的名稱。 每個(gè)活動(dòng)節(jié)點(diǎn)、分支必須只屬于一個(gè)泳道。 轉(zhuǎn)換、分叉與匯合可以跨泳道。55 例:使用泳道的例子。56例:使用泳道的例子例:使用泳道的例子57例:用活動(dòng)圖描述Java中使用多線程的過(guò)程。58對(duì)象節(jié)點(diǎn)對(duì)象節(jié)點(diǎn)(Object Node) 活動(dòng)主要是對(duì)動(dòng)作之間的控制流和控制結(jié)構(gòu)進(jìn)行建模。它也可以對(duì)動(dòng)作之間的值流進(jìn)行建模。 對(duì)象節(jié)點(diǎn)一種活動(dòng)節(jié)點(diǎn),表示存在一個(gè)對(duì)象,它由活動(dòng)的一個(gè)動(dòng)作產(chǎn)生,并被其他動(dòng)作使用。 對(duì)象節(jié)點(diǎn)代表了一個(gè)對(duì)象值,它存在于計(jì)算過(guò)程中的某個(gè)時(shí)刻。對(duì)象可以是一個(gè)活動(dòng)節(jié)點(diǎn)的輸出,并作為其他活動(dòng)節(jié)點(diǎn)的輸入。59對(duì)象流(Object Flow) 對(duì)

22、象流是連接兩個(gè)活動(dòng)節(jié)點(diǎn)的活動(dòng)邊。這兩個(gè)活動(dòng)節(jié)點(diǎn)通常是一個(gè)可執(zhí)行節(jié)點(diǎn)和一個(gè)對(duì)象節(jié)點(diǎn)。 對(duì)象可以作為活動(dòng)的輸入或輸出, ,用虛箭頭表示。 活動(dòng)圖的對(duì)象流表示活動(dòng)和對(duì)象之間的關(guān)系 如一個(gè)活動(dòng)創(chuàng)建對(duì)象或使用對(duì)象60 對(duì)象流的例子。61對(duì)象流的例子。對(duì)象流的例子。62 “活動(dòng)圖” 比較直觀易懂;與傳統(tǒng)的流程圖十分的相近,只要能夠讀懂活動(dòng)圖,就不難畫出活動(dòng)圖 繪制時(shí)首先決定是否采用泳道:主要根據(jù)活動(dòng)圖中是否要體現(xiàn)出活動(dòng)的不同實(shí)施者 然后盡量使用分支、分叉和匯合等基本的建模元素來(lái)描述活動(dòng)控制流程 如果需要,加入對(duì)象流以及對(duì)象的狀態(tài)變化?;顒?dòng)圖的建模關(guān)鍵是表示出控制流,其它的建模元素都是圍繞這一宗旨所進(jìn)行的補(bǔ)

23、充63活動(dòng)圖的用途 為什么要在UML中引入活動(dòng)圖?在OMT, Booch, OOSE方法中沒有活動(dòng)圖的概念。 活動(dòng)圖對(duì)表示并發(fā)行為很有用?;顒?dòng)圖的應(yīng)用非常廣泛,包括:1. 對(duì)系統(tǒng)的工作流(workflow)建模,即對(duì)系統(tǒng)的業(yè)務(wù)過(guò)程建模。(Use Case分析)2. 對(duì)具體的操作建模,描述計(jì)算過(guò)程的細(xì)節(jié)。64對(duì)工作流建模:用于業(yè)務(wù)建模的時(shí)候,每一條泳道表示一個(gè)職責(zé)單位,該圖能夠有效地體現(xiàn)出所有職責(zé)單位之間的工作職責(zé),業(yè)務(wù)范圍及之間的交互關(guān)系、信息流程 建模時(shí)應(yīng)遵循以下策略:-為工作流建立一個(gè)焦點(diǎn),除非你所涉及的系統(tǒng)很小,否則不可能在一張圖中顯示出系統(tǒng)中所有的控制流-選擇對(duì)全部工作流中的一部分有高

24、層職責(zé)的業(yè)務(wù)對(duì)象,并為每個(gè)重要的業(yè)務(wù)對(duì)象創(chuàng)建一條泳道-識(shí)別工作流初始節(jié)點(diǎn)的前置條件和活動(dòng)終點(diǎn)的后置條件,這可有效地實(shí)現(xiàn)對(duì)工作流的邊界進(jìn)行建模。65-從該工作流的初始節(jié)點(diǎn)開始,說(shuō)明隨時(shí)間發(fā)生的動(dòng)作和活動(dòng),并在活動(dòng)圖中把它們表示成活動(dòng)節(jié)點(diǎn)-將復(fù)雜的活動(dòng)或多次出現(xiàn)的活動(dòng)集合歸到一個(gè)活動(dòng)節(jié)點(diǎn),并通過(guò)輔助活動(dòng)圖或子活動(dòng)圖來(lái)表示它們-找出連接這些活動(dòng)節(jié)點(diǎn)的轉(zhuǎn)換,首先從工作流的順序開始,然后考慮分支,接著再考慮分岔和匯合-如果工作流中涉及重要的對(duì)象,則也可以將它們加入到活動(dòng)圖中66對(duì)操作建模:每一個(gè)對(duì)象占據(jù)一個(gè)泳道,而活動(dòng)則是該對(duì)象的成員方法 建模時(shí)應(yīng)遵循以下策略:-收集操作所涉及的抽象概念,包括操作的參數(shù)、返回類型、所屬類的屬性以及某些鄰近的類-識(shí)別該操作的初始節(jié)點(diǎn)的前置條件和活動(dòng)終點(diǎn)的后置條件。也要識(shí)別在操作執(zhí)行過(guò)程中必須保持的信息-從該操作的初始節(jié)點(diǎn)開始,說(shuō)明隨著時(shí)間發(fā)生的活動(dòng),并在活動(dòng)圖中將它們表示為活動(dòng)節(jié)點(diǎn)-如果需要,使用分支來(lái)說(shuō)明條件語(yǔ)句及循環(huán)語(yǔ)句-僅當(dāng)這個(gè)操作屬于一個(gè)主動(dòng)類時(shí),才在必要時(shí)用

溫馨提示

  • 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論