解析UML順序圖中如何直接創建對象以及返回值原則
UML順序圖是將交互關系表示為一個二維圖。縱向是時間軸,時間沿豎線向下延伸。橫向軸代表了在協作中各獨立對象的類元角色。類元角色用生命線表示。當對象存在時,角色用一條虛線表示,當對象的過程處于激活狀態時,生命線是一個雙道線。
UML順序圖中直接創建對象
在一個UML順序圖上注明對象的創建通常有兩種方法。首先,你可以用<>版型來發送一個消息,如同圖2如...中所示OrderCheckout所示的那樣。其次,你可以通過把圖中分類器位置下移,在其側面調用一個消息的方式直接的顯示創建,如你在圖1所見的theStudent和圖⒉的CreditCardPayment。直接方法的最主要的好處是它可以形象的表示出對象從無到有的邏輯。
◆為軟件消息使用操作符號。
當一個消息被發給一個軟件實現的分類器時,例如類、接口、或組件。通用的準則是使用實現語言的語法來描述消息名。例如,在圖3中,消息commit(transactionID)被發送給sourceaccount對象,它使用了類似于Java、C++、和C_#語言的語法。
◆為涉及人和組織角色的消息使用敘述性文字。
當一條消息的來源或目標人或組織的角色時,需要使用簡短的敘述性文字來描述傳達的信息、來標記消息。例如,在圖1中,被student角色發送出的消息是providesname和providesstudentnumber,它們描述了這個人在做什么。
◆推薦使用參數名稱,而不是參數類型
注意在圖3中,大多數的消息都使用參數名稱來注明參數,而不是使用類型。唯一的例外是start()消息中傳遞的UserID參數。這可以使你正確地判定該消息傳遞了什么值,有時候類型信息是不夠的。例如,消息addDeposit(amount,target,transactionID)傳達的信息要比addDeposit(Currency,Account,int)多。
UML順序圖中返回值的原則
當返回值非常明顯時就不要對返回值建模。
返回值的顯示是使用帶返回值標記的虛線箭頭,返回值是可選的。例如,圖1中返回值theStudent表示了對SecurityLogon類調用的消息的返回值,然而圖2中對order發送getTotal()消息就沒有返回值。在第一個例子中,創建一個securitylogon對象會產生一個student對象,這是不明顯的,然而向order要求一個小計的返回值是很明顯的。
只有當你需要在別處引用返回值時才對返回值建模。
如果你需要在UML順序圖的另一處(一般是作為參數傳遞給另一個消息)引用返回值,那就需要在圖中著名返回值,這樣就能清楚的表明它的出處。
◆在箭頭旁邊調整返回值。
大多數的建模者都會把返回值放在靠近箭頭地方,例如圖2中的theStudent。一般我們認為返回值的接受者將會使用返回值,因此把返回值放在靠近分類器的位置是有意義的。
◆返回值建模為方法調用的一部分。
不要使用虛線來弄亂UML順序圖,考慮在消息名上注明返回值來替代虛線。使用符號message(parameters):returnValue,圖2就使用了這種符號:reserve():AuthorizationCode。用這個方法,你只會有單條消息路線,而不會有一條消息路線和一條返回值路線。
【編輯推薦】