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