溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

UML序列圖中消息和約束概念的示例分析

發(fā)布時(shí)間:2022-01-05 15:22:31 來(lái)源:億速云 閱讀:413 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下UML序列圖中消息和約束概念的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

消息

為了可讀性,UML序列圖的***個(gè)消息總是從頂端開始,并且一般位于圖的左邊。然后繼發(fā)的消息加入圖中,稍微比前面的消息低些。
為了顯示一個(gè)對(duì)象(例如,生命線)傳遞一個(gè)消息給另外一個(gè)對(duì)象,你畫一條線指向接收對(duì)象,包括一個(gè)實(shí)心箭頭(如果是一個(gè)同步調(diào)用操作)或一個(gè)棍形箭頭(如果是一個(gè)異步訊號(hào))。消息/方法名字放置在帶箭頭的線上面。正在被傳遞給接收對(duì)象的消息,表示接收對(duì)象的類實(shí)現(xiàn)的一個(gè)操作/方法。在圖4的例子中,analyst對(duì)象調(diào)用ReportingSystem類的一個(gè)實(shí)例的系統(tǒng)對(duì)象。analyst對(duì)象在調(diào)用系統(tǒng)對(duì)象的getAvailableReports方法。系統(tǒng)對(duì)象然后調(diào)用secSystem對(duì)象上的、包括參數(shù)userId的getSecurityClearance方法,secSystem的類的類型是SecuritySystem。2

UML序列圖中消息和約束概念的示例分析

圖4:一個(gè)在對(duì)象之間傳遞消息的實(shí)例

除了僅僅顯示UML序列圖上的消息調(diào)用外,圖4中的圖還包括返回消息。這些返回消息是可選擇的;一個(gè)返回消息畫作一個(gè)帶開放箭頭的虛線,向后指向來(lái)源的生命線,在這條虛線上面,你放置操作的返回值。在圖4中,當(dāng)getSecurityClearance方法被調(diào)用時(shí),secSystem對(duì)象返回userClearance給系統(tǒng)對(duì)象。當(dāng)getAvailableReports方法被調(diào)用時(shí),系統(tǒng)對(duì)象返回availableReports。
此外,返回消息是UML序列圖的一個(gè)可選擇部分。返回消息的使用依賴建模的具體/抽象程度。如果需要較好的具體化,返回消息是有用的;否則,主動(dòng)消息就足夠了。我個(gè)人喜歡,無(wú)論什么時(shí)候返回一個(gè)值,都包括一個(gè)返回消息,因?yàn)槲野l(fā)現(xiàn)額外的細(xì)節(jié)使一個(gè)UML序列圖變得更容易閱讀。

當(dāng)UML序列圖建模時(shí),有時(shí)候,一個(gè)對(duì)象將會(huì)需要傳遞一個(gè)消息給它本身。一個(gè)對(duì)象何時(shí)稱它本身?一個(gè)純化論者會(huì)爭(zhēng)辯一個(gè)對(duì)象應(yīng)該永不傳遞一個(gè)消息給它本身。然而,為傳遞一個(gè)消息給它本身的對(duì)象建模,在一些情境中可能是有用的。舉例來(lái)說(shuō),圖5是圖4的一個(gè)改良版本。圖5版本顯示調(diào)用它的determineAvailableReports方法的系統(tǒng)對(duì)象。通過(guò)表示系統(tǒng)傳遞消息“determineAvailableReports”給它本身,模型把注意力集中到過(guò)程的事實(shí)上,而不是系統(tǒng)對(duì)象。
為了要畫一個(gè)調(diào)用本身的對(duì)象,如你平時(shí)所作的,畫一條消息,但是不是連接它到另外的一個(gè)對(duì)象,而是你把消息連接回對(duì)象本身。

UML序列圖中消息和約束概念的示例分析

圖5:系統(tǒng)對(duì)象調(diào)用它的determineAvailableReports方法

圖5中的消息實(shí)例顯示同步消息;然而,在UML序列圖中,你也能為異步消息建模。一個(gè)異步消息和一個(gè)同步的畫法類似,但是消息畫的線帶一個(gè)棍形矛頭,如圖6所示。

UML序列圖中消息和約束概念的示例分析

圖6:表示傳遞到實(shí)體2的異步消息的UML序列圖片段

約束

當(dāng)為對(duì)象的交互建模時(shí),有時(shí)候,必須滿足一個(gè)條件,消息才會(huì)傳遞給對(duì)象。約束在UML圖各處中,用于控制流。在這里,我將會(huì)討論UML1.x及UML2.0兩者的約束。在UML1.x中,一個(gè)約束只可能被分配到一個(gè)單一消息。UML1.x中,為了在一個(gè)UML序列圖上畫一個(gè)約束,你把約束元件放在約束的消息線上,消息名字之前。圖7顯示UML序列圖的一個(gè)片段,消息addStudent方法上有一個(gè)約束。

UML序列圖中消息和約束概念的示例分析

圖7:UML1.xUML序列圖的一個(gè)片段,其中addStudent消息有一個(gè)約束

在圖7中,約束是文本“[pastDueBalance=0]”。通過(guò)這個(gè)消息上的約束,如果應(yīng)收帳系統(tǒng)返回一個(gè)零點(diǎn)的逾期平衡,addStudent消息才將會(huì)被傳遞。約束的符號(hào)很簡(jiǎn)單;格式是:
[BooleanTest]
舉例來(lái)說(shuō),
[pastDueBalance=0]
組合碎片(變體方案,選擇項(xiàng),和循環(huán))
然而,在大多數(shù)的UML序列圖中,UML1.x“in-line”約束不足以處理一個(gè)建模序列的必需邏輯。這個(gè)功能缺失是UML1.x的一個(gè)問(wèn)題。UML2已經(jīng)通過(guò)去掉“in-line”約束,增加一個(gè)叫做組合碎片的符號(hào)元件,解決了這一個(gè)問(wèn)題。一個(gè)組合碎片用來(lái)把一套消息組合在一起,在一個(gè)UML序列圖中顯示條件分支。UML2規(guī)范指明了組合碎片的11種交互類型。

以上是“UML序列圖中消息和約束概念的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

uml
AI