第10章:UML系統(tǒng)分析與設計-狀態(tài)圖_第1頁
第10章:UML系統(tǒng)分析與設計-狀態(tài)圖_第2頁
第10章:UML系統(tǒng)分析與設計-狀態(tài)圖_第3頁
第10章:UML系統(tǒng)分析與設計-狀態(tài)圖_第4頁
第10章:UML系統(tǒng)分析與設計-狀態(tài)圖_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 UML系統(tǒng)分析與設計系統(tǒng)分析與設計n狀態(tài)圖的概念狀態(tài)圖的概念n構成狀態(tài)圖的元素構成狀態(tài)圖的元素n狀態(tài)圖的組成狀態(tài)圖的組成n創(chuàng)建狀態(tài)圖創(chuàng)建狀態(tài)圖n創(chuàng)建狀態(tài)圖實例分析創(chuàng)建狀態(tài)圖實例分析n狀態(tài)圖由、和5部分組成: 1. 狀態(tài)指的是對象在其生命周期中的一種狀況狀態(tài)指的是對象在其生命周期中的一種狀況,處于某個特定狀態(tài)中的對象必然會滿足某些條件、執(zhí)行某些動作或者是等待某些事件。一個狀態(tài)的生命周期是一個有限的時間階段。 2. 轉換指的是兩個不同狀態(tài)之間的一種關系轉換指的是兩個不同狀態(tài)之間的一種關系,表明對象將在第一個狀態(tài)中執(zhí)行一定的動作,并且在滿足某個特定條件下由某個事件觸發(fā)進入第二個狀態(tài)。 3. 事件指

2、的是發(fā)生在時間和空間上的對狀態(tài)機來講有意義的那些事情事件指的是發(fā)生在時間和空間上的對狀態(tài)機來講有意義的那些事情。事件通常會引起狀態(tài)的變遷,促使狀態(tài)機從一種狀態(tài)切換到另一種狀態(tài),如信號、對象額度創(chuàng)建和銷毀等。 4. 活動指的是狀態(tài)機中進行的非原子操作活動指的是狀態(tài)機中進行的非原子操作。 5. 動作指的是狀態(tài)機中可以執(zhí)行的那些原子操作動作指的是狀態(tài)機中可以執(zhí)行的那些原子操作,所謂原子操作指的是它們在運行的過程中不能被其他消息所中斷,必須一直執(zhí)行下去,最終導致狀態(tài)的變更或者返回一個值。n狀態(tài)用于對實體在其生命周期中的各種狀況進行建模,一個實體總是在有限的一段時間內保持一個狀態(tài)。狀態(tài)由一個帶圓角的矩形

3、表示,狀態(tài)的描述應該包括:名稱、入口和出口動作、內部轉換和嵌套狀態(tài)。 在UML的狀態(tài)建模機制中,轉換用帶箭頭的直線表示,一端連接源狀態(tài),箭頭指向目標狀態(tài)。轉換還可以標注與此轉換相關的選項,如事件、監(jiān)護條件和動作等,如果轉換上沒有標注觸發(fā)轉換的事件,則表示此轉換自動進行。n每個狀態(tài)圖都應該有一個初始狀態(tài),它代表狀態(tài)圖的起始位置。初始狀態(tài)是一個偽狀態(tài)(一個和普通狀態(tài)有連接的假狀態(tài)),對象不可能保持在初始狀態(tài),必須要有一個輸出的無觸發(fā)轉換(沒有事件觸發(fā)器的轉換)。通常初始狀態(tài)上的轉換是無監(jiān)護條件的,并且初始狀態(tài)只能作為轉換的源,而不能作為轉換的目標。n一個狀態(tài)圖只能有一個初始狀態(tài),用一個實心的圓表示

4、。 n終止狀態(tài)是一個狀態(tài)圖的終點,一個狀態(tài)圖可以擁有一個或者多個終止狀態(tài)。n對象可以保持在終止狀態(tài),但是終止狀態(tài)不可能有任何形式的觸發(fā)轉換,它的目的就是為了激發(fā)封裝狀態(tài)上的完成轉換。n活動圖和狀態(tài)圖中都有需要根據給定條件進行判斷,然后根據不同的判斷結果進行不同的轉換情況。n實際就是工作流在此處按監(jiān)護條件的取值發(fā)生分支,在UML中判定用空心菱形表示。 (1)狀態(tài)圖清晰的描述了狀態(tài)之間的轉換順序,通過狀態(tài)的轉換順序也就可以清晰的看出事件的執(zhí)行順序。如果沒有狀態(tài)圖我們就不可避免的要使用大量的文字來描述外部事件的合法順序。 (2)清晰的事件順序有利于程序員在開發(fā)程序時避免出現事件錯序的情況。 (3)狀

5、態(tài)圖清晰的描述了狀態(tài)轉換時所必須的觸發(fā)事件、監(jiān)護條件和動作等影響轉換的因素,有利于程序員避免程序中非法事件的進入。 (4)狀態(tài)圖通過判定可以更好的描述工作流因為不同的條件發(fā)生的分支。n狀態(tài)名:在實際使用中,狀態(tài)名通常是直觀、易懂、能充分表達語義的名詞短語,其中每個單詞的首字母要大寫。n內部活動:狀態(tài)可以包含描述為表達式的內部活動。當狀態(tài)進入時,活動在進入動作完成后就開始。如果活動結束,狀態(tài)就完成,然后一個從這個狀態(tài)出發(fā)的轉換被觸發(fā)。n內部轉換:狀態(tài)可能包含一系列的內部轉換,內部轉換因為只有源狀態(tài)而沒有目標狀態(tài),所以內部轉換的結果并不改變狀態(tài)本身。如果對象的事件在對象正處在擁有轉換的狀態(tài)時發(fā)生,

6、那內部轉換上的動作也被執(zhí)行。n入口和出口動作:狀態(tài)可能具有入口和出口動作。這些動作的目的是封裝這個狀態(tài),這樣就可以不必知道狀態(tài)的內部狀態(tài)而在外部使用它。入口動作和出口動作原則上依附于進入和出去的轉換,但是將它們聲明為特殊的動作可以使狀態(tài)的定義不依賴狀態(tài)的轉換,因此起到封裝的作用。n歷史狀態(tài):組成狀態(tài)可能包含歷史狀態(tài)(History stete)。 n轉換用于表示一個狀態(tài)機的兩個狀態(tài)之間的一種關系,即一個在某初始狀態(tài)的對象通過執(zhí)行指定的動作并符合一定的條件下進入第二種狀態(tài)。n在這個狀態(tài)的變化中,轉換被稱作激發(fā)。在激發(fā)之前的狀態(tài)叫做源狀態(tài),在激發(fā)之后的狀態(tài)叫做目標狀態(tài)。簡單轉換只有一個源狀態(tài)和一個

7、目標狀態(tài)。復雜轉換有不止一個源狀態(tài)和(或)有不止一個目標狀態(tài)。n外部轉換是一種改變狀態(tài)的轉換,也是最普通最常見的一種轉換。在UML中,它用從源狀態(tài)到目標狀態(tài)的帶箭頭的線段表示,其他屬性以文字串附加在箭頭旁。n內部轉換只有源狀態(tài),沒有目標狀態(tài),不會激發(fā)入口和出口動作,因此內部轉換激發(fā)的結果不改變本來的狀態(tài)。如果一個內部轉換帶有動作,它也要被執(zhí)行。內部轉換常用于對不改變狀態(tài)的插入動作建立模型。要注意的是內部轉換的激發(fā)可能會掩蓋使用相同事件的外部轉換。n內部轉換的表示法與入口動作和出口動作的表示法很相似。他們的區(qū)別主要在于入口和出口動作使用了保留字“entry”和“exit”,其它部分兩者的表示法相

8、同。 n完成轉換沒有明確標明觸發(fā)器事件的轉換是由狀態(tài)中活動的完成引起的。完成轉換也可以帶一個監(jiān)護條件,這個監(jiān)護條件在狀態(tài)中的活動完成時被賦值,而不是活動完成后被賦值。n轉換可能具有一個監(jiān)護條件,監(jiān)護條件是一個布爾表達式,它是觸發(fā)轉換必須滿足的條件。當一個觸發(fā)器事件被觸發(fā)時,監(jiān)護條件被賦值。如果表達式的值為真,轉換可以激發(fā);如果表達式的值為假,轉換不能激發(fā);如果沒有轉換適合激發(fā),事件會被忽略,這種情況并非錯誤。如果轉換沒有監(jiān)護條件,監(jiān)護條件就被認為是真,而且一旦觸發(fā)器事件發(fā)生,轉換就激活。n從一個狀態(tài)引出的多個轉換可以有同樣的觸發(fā)器事件。若此事件發(fā)生,所有監(jiān)護條件都被測試,測試的結果如果有超過一

9、個的值為真,也只有一個轉換會激發(fā)。如果沒有給定優(yōu)先權,則選擇哪個轉換來激發(fā)是不確定的。n觸發(fā)器事件就是能夠引起狀態(tài)轉換的事件。如果此事件有參數,這些參數可以被轉換所用,也可以被監(jiān)護條件和動作的表達式所用。觸發(fā)器事件可以是信號、調用和時間段等。n對應與觸發(fā)器事件,沒有明確的觸發(fā)器事件的轉換稱作結束轉換(或無觸發(fā)器轉換),是在結束時被狀態(tài)中的任一內部活動隱式觸發(fā)的。n動作(action)通常是一個簡短的計算處理過程或一組可執(zhí)行語句。動作也可以是一個動作序列,即一系列簡單的動作。動作可以給另一個對象發(fā)送消息、調用一個操作、設置返回值、創(chuàng)建和銷毀對象。n動作是原子性的,所以動作是不可中斷的動作是原子性

10、的,所以動作是不可中斷的,動作和動作序列的執(zhí)行不會被同時發(fā)生的其他動作影響或終止。動作的執(zhí)行時間非常短,所以動作的執(zhí)行過程不能再插入其他事件。如果在動作的執(zhí)行期間接收到事件,那么這些事件都會被保存,直到動作結束,這時事件一般已經得到值。n判定用來表示一個事件依據不同的監(jiān)護條件有不同的影響。在實際建模的過程中,如果遇到需要使用判定的情況,通常用監(jiān)護條件來覆蓋每種可能,使得一個事件的發(fā)生能保證觸發(fā)一個轉換。n判定在活動圖和狀態(tài)圖中都有很重要的作用。轉換路徑因為判定而分為多個分支,可以將一個分支的輸出部分與另外一個分支的輸入部分連接而組成一棵樹,樹的每個路徑代表一個不同的轉換。樹為建模提供了很大的方

11、便。n在活動圖中,判定可以覆蓋所有的可能,保證一些轉換被激發(fā)。否則,活動圖就會因為輸出轉換不再重新激發(fā)而被凍結。 同步條是為了說明并發(fā)工作流的分支與匯合。狀態(tài)圖和活動圖中都可能用到同步。在UML中,同步用一條線段來表示。n在狀態(tài)機中,一個事件的出現可以觸發(fā)狀態(tài)的改變在狀態(tài)機中,一個事件的出現可以觸發(fā)狀態(tài)的改變。它發(fā)生在時間和空間上的一點,沒有持續(xù)時間。如接受到從一個對象到另一個對象的調用或信號、某些值的改變或一個時間段的終結。n事件可以分成明確或隱含的幾種,主要包括:信號事件、調用事件、改變事件和時間事件等。n如果一個組成狀態(tài)的多個子狀態(tài)之間是互斥的,不能同時存在的,這種組成狀態(tài)稱為順序組成狀

12、態(tài)。n一個順序組成狀態(tài)最多可以有一個初始狀態(tài)和一個終態(tài),同時也最多可以由一個淺(shallow)歷史狀態(tài)和一個深(deep)歷史狀態(tài)。n在一個組成狀態(tài)中,可能有兩個或者多個并發(fā)的子狀態(tài)機,我們稱這樣的組成狀態(tài)為并發(fā)組成狀態(tài)。每個并發(fā)子狀態(tài)還可以進一步分解為順序組成狀態(tài)。n一個并發(fā)組成狀態(tài)可能沒有初始狀態(tài),終態(tài),或者歷史狀態(tài)。但是嵌套在它們里的任何順序組成狀態(tài)可包含這些偽狀態(tài)。 在Rational Rose中,可以為每個類創(chuàng)建一個或者多個狀態(tài)圖,類的轉換和狀態(tài)都可以在狀態(tài)圖中體現。首先,展開“Logic View”菜單項,然后在“Logic View”圖標上單擊鼠標右鍵,在彈出的菜單中選擇“Ne

13、w”下的“Statechart Diagram”選項建立新的狀態(tài)圖。 n初始狀態(tài)和終止狀態(tài)是狀態(tài)圖中的兩個特殊狀態(tài)。初始狀態(tài)代表著狀態(tài)圖的起點,終止狀態(tài)代表著狀態(tài)圖的終點。對象不可能保持在初始狀態(tài),但是可以保持在終止狀態(tài)。n初始狀態(tài)在狀態(tài)圖中用實心圓表示,終止狀態(tài)在狀態(tài)圖中用含有實心圓的空心圓表示。鼠標左鍵點擊狀態(tài)圖工具欄中的對應圖標,然后在繪制區(qū)域要繪制的地方單擊鼠標左鍵就可以創(chuàng)建初始狀態(tài)。終止狀態(tài)的創(chuàng)建方法和初始狀態(tài)相同。 n首先用鼠標左鍵單擊狀態(tài)圖工具欄中對應圖標,然后在繪制區(qū)域要創(chuàng)建狀態(tài)的地方單擊鼠標左鍵。 n創(chuàng)建新的狀態(tài)后,我們可以修改狀態(tài)的屬性信息。雙擊狀態(tài)圖標,在彈出的對話框“G

14、eneral”選項卡里進行如名稱“Name”和文檔說明“Documentation”等屬性的設置。 n轉換是兩個狀態(tài)之間的一種關系,代表了一種狀態(tài)到另一種狀態(tài)的過度,在UML中轉換用一條帶箭頭的直線表示。n要增加轉換,首先用鼠標左鍵單擊狀態(tài)工具欄中的圖標,然后再用鼠標左鍵單擊轉換的源狀態(tài),接著向目標狀態(tài)拖動一條直線。 一個事件可以觸發(fā)狀態(tài)的轉換。要增加事件,先雙擊轉換圖標,在出現的對話框的“General”選項卡里增加事件, 接下來,在“Event”選項中添加觸發(fā)轉換的事件,在“Argument”選項中添加事件的參數,還可以在“Documentation”選項中添加對事件的描述。 n監(jiān)護條件是一個布爾表達式,它控制轉換是否能夠發(fā)生。n要添加監(jiān)護條件,先雙擊轉換的圖標,選擇出現的對話框中的“Detail”選項卡的“Guard Condition”選項,然后填入監(jiān)護條件。可以參考添加動作的方法添加監(jiān)護條件。n要創(chuàng)建狀態(tài)圖,首先要標識出哪些實體需要使用狀態(tài)圖進一步建模。雖然我們可以為每一個類、操作、包或用例創(chuàng)建狀態(tài)圖,但是這樣做勢必浪費很多的精力。n從另一個角度看,而不必用于具有復雜行為的實體。使用活動圖可能會更加適合那些有復雜行為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論