亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

UML狀態圖創建過程中需要注意什么問題

發布時間:2021-12-06 13:37:43 來源:億速云 閱讀:332 作者:小新 欄目:開發技術

小編給大家分享一下UML狀態圖創建過程中需要注意什么問題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

為復雜的實體創建一個分層的UML狀態圖

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

圖⒊Seminar的高階狀態圖。

UML狀態圖創建過程中需要注意什么問題

***階的狀態圖總有初始態和最終態

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

  變換和動作

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

  用實現語言的命名規則命名軟件動作

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

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

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

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

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

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

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

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

  用過去式命名轉換事件

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

把轉換標記放在接近源狀態的地方

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

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

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

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

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

變換線條右邊的往下。

變換線條左邊的往上。

警戒點

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

警戒點不應該重疊

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

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

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

警戒點不必配套

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

一致的命名警戒點

圖1包含了諸如seatavailable和noseatavailable的警戒點,兩個警戒點的描述是一致的。然而,諸如seatsleft、noseatleft、noseatsleft、noseatsavailable、seatunavailable之類的描述就是不一致,而且難于理解的。

以上是“UML狀態圖創建過程中需要注意什么問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

uml
AI

高陵县| 贵溪市| 万宁市| 虞城县| 昭通市| 皮山县| 堆龙德庆县| 琼中| 雅安市| 庆云县| 蚌埠市| 新绛县| 吉木萨尔县| 黔西县| 乐平市| 延边| 吉首市| 包头市| 襄樊市| 化隆| 惠州市| 巴楚县| 庄河市| 涟源市| 蓬安县| 保山市| 山丹县| 石阡县| 博白县| 金寨县| 博野县| 湾仔区| 英德市| 阜南县| 德令哈市| 富源县| 荆州市| 栾城县| 资阳市| 壶关县| 绵竹市|