調(diào)用行為動(dòng)作(CallBehaviorAction) 講解
掃描二維碼
隨時(shí)隨地手機(jī)看文章
我們用了兩篇文章說明了CallOperationAction,本文接著這個(gè)感覺說明CallBehaviorAction。
首先還是看正式的說法,在《GB/T 28174.2-2011 統(tǒng)一建模語言(UML) 第2部分:上層結(jié)構(gòu)》中是這樣描述的:
調(diào)用行為動(dòng)作(CallBehaviorAction)
CallBehaviorAction是一個(gè)動(dòng)作,它直接調(diào)用一個(gè)行為,而不是調(diào)用一個(gè)行為特性而導(dǎo)致那個(gè)行為被調(diào)用。動(dòng)作的參數(shù)值對調(diào)用的行為的參數(shù)值有效。如果調(diào)用是同步的,調(diào)用動(dòng)作等待被調(diào)用行為結(jié)束且結(jié)果返回到輸出引腳以后再結(jié)束;如果調(diào)用是異步的,調(diào)用動(dòng)作不等待結(jié)果而直接返回。
這段文字有兩點(diǎn)需要補(bǔ)充。一是行為特性而導(dǎo)致那個(gè)行為被調(diào)用,指的是通過調(diào)用操作觸發(fā)方法,或者是通過信號(hào)觸發(fā)行為的情況。二是藍(lán)字部分,原文中沒有,參考最新英文版增加上去了。
其他的部分應(yīng)該比較好理解。
表示方法
以下是CallBehaviorAction在活動(dòng)圖中的表示。
注意右下角的小叉子。
設(shè)定方法
CallBehaviorAction的設(shè)定方法和前文講過的CallOperationAction基本一致,這里只說明不同點(diǎn)。
Action類型選擇CallBehavior。
CallBehaviorAction不是針對對象操作的,所以就沒有用于傳遞操作對象的target引腳。
通 過屬性對話框中的Call分類選擇Behaivor的時(shí)候,雖然還是可以選擇類的方法,但是只應(yīng)該選擇靜態(tài)方法。除此之外,還可以選擇 Activity,Interaction和StateMachine。Interaction在順序圖中講過,Activity是目前正在進(jìn)行的活動(dòng)圖 中的內(nèi)容,而StateMachine會(huì)在后續(xù)文章中說明,敬請期待。
和CallOperationAction的區(qū)別
在《GB/T 28174.2-2011 統(tǒng)一建模語言(UML) 第2部分:上層結(jié)構(gòu)》的描述中,CallBehavior的描述非常的不同,不大好理解,以下是作者獨(dú)自總結(jié)的一家之言,僅供參考。
以C++舉例:CallOperaitonAction調(diào)用的是類的非靜態(tài)方法,操作或者是通過信號(hào)等方式觸發(fā)對象的行為,而CallBehaviorAction則是調(diào)用類的靜態(tài)方法或者是一般的函數(shù)。