自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

UML狀態(tài)圖創(chuàng)建過程中需要注意問題

開發(fā) 架構
UML建模語言有很多值得學習的地方,這里就像大家介紹一下UML狀態(tài)圖,相信通過本文圖例講解大家能夠很快掌握UML狀態(tài)圖的相關知識,歡迎大家一起來學習。

本節(jié)接著向大家介紹一下UML狀態(tài)圖方面的內容,希望通過本節(jié)學習,你對UML狀態(tài)圖的基礎知識有一定的認識,下面讓我們繼續(xù)來看一下UML狀態(tài)圖的詳細介紹吧。

為復雜的實體創(chuàng)建一個分層的UML狀態(tài)圖

  雖然這種表現(xiàn)子狀態(tài)的方法是非常好使的,不過最終的圖可能變得相當復雜--我們只要設想一下如果BeingTaught狀態(tài)也有子狀態(tài)的話,圖2會變成什么樣就知道了。一個替代的方法是創(chuàng)建一個分層的UML狀態(tài)圖。例如,圖3表示高階視圖,而圖1描述了一個細節(jié)視圖。這種方法的好處是如果需要的話,馬上就能建立一張詳圖來研究BeingTaught狀態(tài)。

圖⒊Seminar的高階狀態(tài)圖。

  ***階的狀態(tài)圖總有初始態(tài)和最終態(tài)

  一個高階的UML狀態(tài)圖,例如圖2描述的這樣,應該表示實體的完整的生命周期,包括"出生"和***的"死亡"。低階的圖未必包含初始狀態(tài)和最終狀態(tài),特別是那些建模一個實體的生命周期的"中間狀態(tài)"的圖。

  變換和動作

  變換是從一種狀態(tài)到另一種狀態(tài)的序列,他可能是通過一個事件觸發(fā)的。簡而言之就是被建模的實體的內部或外部的行為。對一個類來說,變換一般是將會導致狀態(tài)的重要改動的操作調用的結果,因此我們需要了解一點,并不是所有的方法調用都會導致變換產生的,這一點非常重要。一個動作就是某個東西,對類來說就是個操作,被建模的實體所調用的操作。

  用實現(xiàn)語言的命名規(guī)則命名軟件動作

  圖1中的動作遵循Java操作的命名規(guī)則(Vermeulenet.2000),因為系統(tǒng)使用用敘述性文字命名角色動作

  UML狀態(tài)圖可用于建模非軟件實體的生命周期,特別是UML圖上的角色。例如學生角色就可能有諸如Accepted、FullTime、PartTime、Graduated、Masters、Doctoral、和Post-Doctoral等狀態(tài),以顯示各人的不同行為。當你在建?,F(xiàn)實世界的角色時,和軟件中Student類不同的是,狀態(tài)間的變換***是使用敘述性文字來描述,例如dropseminar和payfees,而不是dropSeminar()和payFees(),因為現(xiàn)實生活中的人是做事情,而不是執(zhí)行操作。

  只有對所有的入口變換都合適時才注明入口動作

  在圖1中你能看到ClosedToEnrollment狀態(tài)的入口中操作notifyInstructor()都是經(jīng)由entry/動作標記來調用的。這暗示著每次進入狀態(tài)時都需要調用該操作,如果你不希望每次都發(fā)生,那么就把動作關聯(lián)到特定的入口變換。例如,addStudent()動作是在studentenrolled變換到OpenForEnrollment變換發(fā)生,而在到opened變換則不會發(fā)生,這是因為每次你在進入該狀態(tài)并不必增加一個學生。

  只有對所有的出口變換適合時才注明出口動作

  出口動作,用exit/標記來表示,工作方式類似于入口動作。

  只有當你想終止并再進入該狀態(tài)時才建模遞歸變換

  UML狀態(tài)圖中一個遞歸的變換是那些兩個端點都擁有相同狀態(tài)的變換。一個重要的暗示是實體從狀態(tài)出來,又回到原有的狀態(tài),因此,那些由于entry/或exit/動作標記而被調用的所有一種操作都可能被自動調用。圖1的OpenForEnrollment狀態(tài)就是這種遞歸變換的例子,因此當前班級大小就在入口處被記錄下來。#p#

  用過去式命名轉換事件

  圖1中的轉換事件,例如seminarsplit和cancelled,是使用過去式命名的,反映了這樣一個事實:變換是事件的結果--因為事件發(fā)生在變換之前,因此應該用過去式命名。

  把轉換標記放在接近源狀態(tài)的地方

  雖然圖1比較復雜,變換標記盡可能放在靠近來源的地方,例如seminarsplit和studentenrolled。Furthermore,thelabelswerejustified(leftandrightrespectively)tohelpvisuallyplacethemclosetothesourcestate.

  以轉換方向為基礎放置變換標記

  為了更易于判斷哪個標記和變換是一起的,按照如下的規(guī)則來放置變換標記:

  在變換線條上的從左到右。

  在變換線條下的從右到左。

  變換線條右邊的往下。

  變換線條左邊的往上。

  警戒點

  一個警戒點是為了穿過一個轉換而必須為真的一個條件。

  警戒點不應該重疊

  UML狀態(tài)圖離開狀態(tài)的相似變換上的警戒點必須彼此一致。舉例來說,x<0,x=0,及x>0的警戒點是一致的,而x<=0和x>=0的警戒點就不是一致的,因為他們重疊了,他并沒有明確的指出當x為0時將發(fā)生什么。在圖1中,你能看到警界點的一致性,從填寫注冊表活動出發(fā)的該學生劃線變換上的警戒點沒有重疊,決策點上的警戒點也相同。

  為可視化的定位警戒點而引入接合點。

  在圖2中你能看到從BeingTaught觸發(fā)studentdropped事件存在兩個變換,而圖3中僅有一個,變換被合并了,因此我們需要一個接合點(填滿的圓)。這種方法的好處是目前圖上的兩個警戒點更彼此接近了,更容易看出警戒點是否重疊。

  警戒點不必配套

  一個狀態(tài)的變換警戒點有可能是不完整的。例如,一個bankaccount對象可能從Open狀態(tài)變換到NeedsAuthorization狀態(tài),這時需要一個大額存款"largedeposit"的警戒點??墒?,一個帶有"smalldeposit"的警戒點的deposit變換可能并不必建模,他是被隱含的,我們遵循了AM的實踐--簡單的描述模型和僅僅包括相關的信息。

  一致的命名警戒點

  圖1包含了諸如seatavailable和noseatavailable的警戒點,兩個警戒點的描述是一致的。然而,諸如seatsleft、noseatleft、noseatsleft、noseatsavailable、seatunavailable之類的描述就是不一致,而且難于理解的。本節(jié)關于UML建模風格之UML狀態(tài)圖介紹到這里。

【編輯推薦】

  1. UML建模風格中UML狀態(tài)圖表現(xiàn)形式
  2. 在回歸測試中UML狀態(tài)圖切片的應用 
  3. UML用例圖用法實例剖析
  4. 術語匯編 UML統(tǒng)一建模語言簡介
  5. 技術分享 嵌入式建模中UML狀態(tài)圖的形式化方法
責任編輯:佚名 來源: csdn.net
相關推薦

2010-07-12 13:00:49

UML建模

2010-06-10 17:02:40

UML建模

2013-09-03 13:01:01

團隊管理團隊

2010-07-06 11:21:37

UML狀態(tài)圖

2009-12-17 10:14:04

UML建模

2010-07-09 16:30:31

UML狀態(tài)圖

2021-12-08 23:32:42

云計算云遷移數(shù)據(jù)

2009-04-23 14:30:19

UML建模

2010-07-06 12:00:23

UML活動圖

2010-07-06 16:19:56

UML圖形

2010-06-09 14:31:31

UML狀態(tài)圖

2010-06-13 15:03:25

UML實踐

2009-06-10 15:36:25

ubuntu netb開發(fā)過程

2010-06-10 13:14:48

UML狀態(tài)圖

2010-07-09 11:01:30

UML動態(tài)建模

2010-07-15 14:47:05

Perl開發(fā)

2010-07-05 12:21:36

UML行為圖

2010-06-09 15:19:20

UML狀態(tài)圖

2010-06-09 14:21:05

UML狀態(tài)圖

2010-07-09 17:21:32

UML狀態(tài)圖
點贊
收藏

51CTO技術棧公眾號