调用行为动作(CallBehaviorAction) 讲解
扫描二维码
随时随地手机看文章
我们用了两篇文章说明了CallOperationAction,本文接着这个感觉说明CallBehaviorAction。
首先还是看正式的说法,在《GB/T 28174.2-2011 统一建模语言(UML) 第2部分:上层结构》中是这样描述的:
调用行为动作(CallBehaviorAction)
CallBehaviorAction是一个动作,它直接调用一个行为,而不是调用一个行为特性而导致那个行为被调用。动作的参数值对调用的行为的参数值有效。如果调用是同步的,调用动作等待被调用行为结束且结果返回到输出引脚以后再结束;如果调用是异步的,调用动作不等待结果而直接返回。
这段文字有两点需要补充。一是行为特性而导致那个行为被调用,指的是通过调用操作触发方法,或者是通过信号触发行为的情况。二是蓝字部分,原文中没有,参考最新英文版增加上去了。
其他的部分应该比较好理解。
表示方法
以下是CallBehaviorAction在活动图中的表示。
注意右下角的小叉子。
设定方法
CallBehaviorAction的设定方法和前文讲过的CallOperationAction基本一致,这里只说明不同点。
Action类型选择CallBehavior。
CallBehaviorAction不是针对对象操作的,所以就没有用于传递操作对象的target引脚。
通 过属性对话框中的Call分类选择Behaivor的时候,虽然还是可以选择类的方法,但是只应该选择静态方法。除此之外,还可以选择 Activity,Interaction和StateMachine。Interaction在顺序图中讲过,Activity是目前正在进行的活动图 中的内容,而StateMachine会在后续文章中说明,敬请期待。
和CallOperationAction的区别
在《GB/T 28174.2-2011 统一建模语言(UML) 第2部分:上层结构》的描述中,CallBehavior的描述非常的不同,不大好理解,以下是作者独自总结的一家之言,仅供参考。
以C++举例:CallOperaitonAction调用的是类的非静态方法,操作或者是通过信号等方式触发对象的行为,而CallBehaviorAction则是调用类的静态方法或者是一般的函数。