UML再學習

1、UML中的新元素-框架:

在 UML 2中,框架元件用於做爲許多其餘的圖元件的一個基礎,可是大多數人第一次接觸框架元件的狀況,是做爲圖的圖形化邊界。當爲圖提供圖形化邊界時,一個框架元件爲圖的標籤提供一致的位置。在 UML 圖中框架元件是可選擇的。



除了提供一個圖形化邊框以外,用於圖中的框架元件也有描述交互的重要的功能, 例如序列圖。在序列圖上一個序列接收和發送消息(又稱交互),能經過鏈接消息和框架元件邊界,創建模型(如圖 2 所見到)。




對於序列圖,圖的標籤由文字「sd」開始。當使用一個框架元件封閉一個圖時,圖的標籤須要按照如下的格式:圖類型 圖名稱。框架

UML 規範給圖類型提供特定的文本值。(舉例來講,sd表明序列圖,activity表明活動圖,use case表明用例圖)。異步


2、UML中的序列圖:

序列圖主要用於按照交互發生的一系列順序,顯示對象之間的這些交互。

在項目的需求階段,分析師能經過提供一個更加正式層次的表達,把用例帶入下一層次。那種狀況下,用例經常被細化爲一個或者更多的序列圖。

序列圖的主要用途之一,是把用例表達的需求,轉化爲進一步、更加正式層次的精細表達。用例經常被細化爲一個或者更多的序列圖。序列圖除了在設計新系統方面的用途外,它們還能用來記錄一個存在系統(稱它爲「遺產」)的對象如今如何交互。

序列圖的主要目的是定義事件序列,產生一些但願的輸出。重點不是消息自己,而是消息產生的順序;不過,大多數序列圖會表示一個系統的對象之間傳遞的什麼消息,以及它們發生的順序。圖按照水平和垂直的維度傳遞信息:垂直維度從上而下表示消息/調用發生的時間序列,並且水平維度從左到右表示消息發送到的對象實例。

1.生命線:

生命線畫做一個方格,一條虛線從上而下,經過底部邊界的中心(圖 3)。生命線名字放置在方格里。



UML 的生命線命名標準按照以下格式: 實體名:類名

生命線名稱帶下劃線。當使用下劃線時,意味着序列圖中的生命線表明一個類的特定實體,不是特定種類的實體(例如,角色)。序列圖的實例名稱有下劃線,而角色名稱沒有。

一個生命線能用來表現一個匿名的或未命名的實體。當在一個序列圖上,爲一個未命名的實例建模時,生命線的名字採用和一個命名實例相同的模式;可是生命線名字的位置留下空白,而不是提供一個例圖名字。
 oop

2.消息體:

爲了顯示一個對象(例如,生命線)傳遞一個消息給另一個對象,你畫一條線指向接收對象,包括一個實心箭頭(若是是一個同步調用操做)或一個棍形箭頭(若是是一個異步訊號)。消息/方法名字放置在帶箭頭的線上面。正在被傳遞給接收對象的消息,表示接收對象的類實現的一個操做/方法。



返回消息是可選擇的;一個返回消息畫做一個帶開放箭頭的虛線,向後指向來源的生命線,在這條虛線上面,你放置操做的返回值。爲了要畫一個調用自己的對象,如你平時所做的,畫一條消息,可是不是鏈接它到另外的一個對象,而是你把消息鏈接回對象自己。





3、UML中的約束:




約束的符號很簡單;格式是: 【Boolean Test】

4、UML中的新元素-組合碎片(變體方案、選擇項、循環):

一個組合碎片用來把一套消息組合在一塊兒,在一個序列圖中顯示條件分支。

1.變體:

變體用來指明在兩個或更多的消息序列之間的、互斥的選擇。一個變體的組合碎片元件使用框架來畫。單詞「alt」放置在框架的namebox裏。而後較大的長方形分爲 UML 2 所稱的操做元。 操做元被虛線分開。每一個操做元有一個約束進行測試,而這個約束被放置在生命線頂端的操做元的左上部。 若是操做元的約束等於「true」,而後那個操做元是要執行的操做元。


測試

圖 8做爲一個變體的組合碎片如何閱讀的例子,顯示序列從頂部開始,即bank對象獲取支票金額和賬戶結餘。此時,序列圖中的變體組合碎片接管。由於約束「[balance >= amount]」,若是餘額超過或等於金額,而後順序進行bank對象傳遞 addDebitTransaction 和 storePhotoOfCheck 消息給account對象。然而,若是餘額不是超過或等於金額,而後順序的過程就是bank傳遞addInsuffientFundFee 和 noteReturnedCheck 消息給account對象,returnCheck 消息給它自身。由於「else」約束,當餘額不大於或者等於金額時,第二個序列被調用。在變體的組合碎片中,不須要「else」約束;而若是一個操做元,在它上面沒有一個明確的約束,那麼將假定「else」約束。spa

2.選擇項:

一個選擇項用來爲簡單的「if then」表達式建模。(例如,若是架上的圈餅少於五個,那麼另外作兩打圈餅)。

選擇項組合碎片符號與變體組合碎片相似,除了它只有一個操做元而且永不能有「else」約束之外(它就是如此,沒有理由)。要畫選擇項組合,你畫一個框架。文字「opt」是被放置在框架的 namebox 裏的文本,在框架的內容區,選擇項的約束被放置在生命線頂端上的左上角。 而後選擇項的消息序列被放在框架的內容區的其他位置內。



注意:變體用於爲if then else建模,選擇項用於爲if then建模,由於只有一個分支,因此不能出現[else]

3.循環:設計

循環組合碎片表面很是相似選擇項組合碎片。你畫一個框架,在框架的 namebox 中放置文本「loop」。在框架的內容區中,一個生命線的頂部,循環約束被放置在左上角。而後循環的消息序列被放在框架內容區的其他部分中。在一個循環中,除了標準的布爾測試外,一個約束能測試二個特定的條件式。特定的約束條件式是寫做「minint = [the number]」(例如,「minint = 1」)的最小循環次數,或寫做「maxint = [the number]」(例如,「maxint = 5」)的最大循環次數。經過最小循環檢驗,循環必須運行至少指定次數,而循環執行次數不能達到約束指定的最大循環次數。

對象



-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
相關文章
相關標籤/搜索