您的位置:首页 > 产品设计 > UI/UE

EA&UML日拱一卒--序列图(Sequence Diagram)::交互和交互使用

2017-05-23 20:32 330 查看
画时序图就和写作文一样,经常会遇到一发而不可收的情况,结果就是得到一个巨大的时序图。这种情况下,作者首先会因为完成了一件大工程而感到自豪,可是一旦他把完成的时序图拿给别人看或者是需要维护的时候就开始意识到问题了,这样的时序图既难理解又难维护。

如果是写代码的话,可以通过定义函数和调用函数来解决这个问题,时序图也提供了类似的手段:交互和交互使用。

交互(interaction)

交互描述了在一个上下文中为了执行一个任务,消息在角色之间是如何交换的。交互描述了行为的模式。

----UML参考手册(第二版)

中文本身相信都能看懂,但想知道说什么却不是那么容易。让我们换一种说法。

定义一个函数除了需要函数体以外还需要函数声明。函数声明规定了调用函数是需要提供哪些信息,函数的返回值是什么。交互的作用也一样。

实例

下面以电车速度控制为例说明,首先看下面的时序图。



电车司机设定加速度上下限,目标速度以后,调用startControlPattern启动指定模式的速度控制,当目标达成或出现异常情况时,结束控制并反馈结束的原因。

这段时序图描述了速度控制是如何进行的,但如果想被其他时序图(严格讲应该是交互图)使用,还需要定义交互。这就像有了函数体,还需要函数声明一样。

定义交互

首先拖动工具箱中的【Interaction】图标到时序中。



接下来在【Interation】属性对话框中各个属性页输入必要的信息。

【General】属性页

     输入交互名SpeedControl。

【Behavior】属性页

     选择返回值的类型为FinishReason(需要事先定义数据类型)。

【Parameters】属性页

      定义max_acc,max_dec,speed一共3个参数。它们相当于函数的形参。



按下【确定】按钮并调整interation框的大小后,时序图就会变成下面这个样子。



外层方框的左上角文字为【int SpeedControl(,,)】,其中的int不是表示整数,而是interation的缩写。

交互使用

定义交互以后自然就是使用交互。

步骤

首 先将定义过Interaction的时序图拖动到使用该交互的时序图,这时会出现如下对话框,这里选【Interaction Occurrence】。在UML中,交互发生(interaction occurrence)和交互使用(interaction use)的含义是一样的。



设定方法

通过随后出现的【Interaction Occurrence】对话框中的各个属性页来进行设定。

【General】属性页

指定调用上下文中的实际名称。本例输入ConstantSpeedControl。这个名称相当于函数调用时的别名。

【Call】属性页



点 击【Behavior】项目右侧的【...】按钮,选择前面定义的SpeedControl交互以后,在【ReturnValue】项目中输入 FinishReason,在AttributeName项目中输入finish_reason。这个finish_reason相当于函数调用时用来接 受返回值的变量。

【Arguments】属性页



为Interation的每个参数指定调用上下文中的变量名。输入的内容相当于定义函数调用时的实参。

按下【确定】按钮以后,调用侧的时序图变成下面这样。



图中明确表明的实参,形参的对应关系,返回值赋值操作等信息。实参应该在使用该交互前指定,返回值可以在调用以后使用。这里省略。

总结

交互和交互使用就是时序图中的函数声明和函数调用。

以上就是今天的文章,如果它能给您带来些许收获,欢迎点赞并推荐给朋友!

阅读更多更新文章,请扫描下面二维码,关注公众号【面向对象思考】

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息