我正在查看与所附快照类似的序列图,对象A在同一激活条上实例化了3个动作,并且对象B也通过相同的激活条收到了
。所以我可以说这三个功能是一个接一个地执行吗?由于它们是实心箭头,所以我不确定我的理解是正确的。
请告知,谢谢。
答案 0 :(得分:1)
我能说这三个功能一个接一个地执行吗?由于它们是实心箭头
箭头指示同步消息,因此第二条消息不能在功能A 执行结束之前发送,第一条消息不能在功能B执行结束之前发送对象A 生命线上的和 ExecutionSpecification 不能在执行 C 函数结束之前结束。
对象A在同一激活条上实例化了3个动作
所有这三个消息都可以在对象
的生命线上从相同的 ExecutionSpecification 开始对象B通过相同的激活栏收到的3个动作...
这是无效的, ExecutionSpecification 表示一个动作/行为的执行,因此在 Object B <>的生命线上需要三个 ExecutionSpecification / em>,您不能只有一个。
有效图可以是:
或还显示回报:
(function_c
返回时不会立即调用它们function_b
,对 object a 的执行在引入延迟之前执行了“某些操作”,并且在执行延迟之后进行了“某些操作”) )
根据您的评论:
根据要求,这3个功能应由objectB同时执行。那意味着我应该使用线形箭头而不是实心箭头?如果功能是同时执行的,我可以在objectB上使用相同的ExecutionSpecification吗?
如果使用异步调用(打开的箭头),则不会返回任何消息,因此 object a 无法知道执行何时结束,因此可以立即发送下一条消息。
这3个功能应该由对象b 同时执行的事实是另一回事,异步调用可以由接收者依次执行,而接收者执行并发执行的事实却不是暗示发起呼叫,但是是的,您可以使用发起呼叫。
您仍然必须在对象 b 上使用3个 ExecutionSpecification ,要显示并发执行,只需使用组合片段“ par” 。 >
例如: