EA&UML日拱一卒--序列图(Sequence Diagram)::消息签名

来源:互联网 发布:无主之地 mac 汉化 编辑:程序博客网 时间:2024/06/06 13:09

实例说明


先看下面图形编辑软件中创建组合图形的序列图。




处理流程如下:


  1. 用户在选择组合目标图形后点击【Make group】菜单(异步调用)

  2. Framework向:DrawerView发送菜单消息

  3. :DrawView收到消息后从m_shapeSelector取得包含选中图形的selectedShape链表。

  4. :DrawView 以选中的selectedShape链表为参数调用data:DrawData的makeGroup方法,makeGroup方法将组合结果保存在 selectedShape中,并返回组合是否成功。而DrawView将是否成功保存在success变量中。

  5. :DrawViewer异步调用:Framework的Update接口重画图形(以下省略)


消息签名


我们以上述流程中的第4步为例来说明消息签名的设定方法。




Message/Parameters/Return Value


这三项我们推荐点击【Operation】按钮进入对应的类中选择或创建操作。手动输入有两个问题:一是不容易输入正确;二是不能和类同步。这里不推荐。


Argument(s)


此处填写调用操作时的实参。


Assign To


输入用于接受操作返回值的变量。如果这个变量是调用侧的数据成员,就可以直接从下拉列表中选择。


如果生命线没有关联类


因为某种原因(比如先画时序图)导致序列图中的生命线没有和类联系起来时,也不用着急,按照以下步骤后期指定即可:


  1. 选择生命线

  2. 在上下文菜单中选择【Advanced】-【Instance Classfier】启动Select 
    Classfier对话框

  3. 选择对应的类


直接赋值的表现


序列图中经常会遇到需要表达赋值操作的场景,比如在生命周期一文中出现的删除图形的时序图。




一 种做法是:在【Return Value】中输入null_ptr,同时在【Assign To】中输入/选择m_currentShape。但如果你足够细心,你会注意到在null_ptr之前有一个冒号。它出现的原因是UML中消息签名的格 式遵循如下定义(方括号代表可选项):


[attribute]=name[(argument)][:return-value]


当return-value有内容时冒号也会同时表示。怎么样,你能接(忍)受么?


还有另外一种方式,在签名对话框中的Message项目中输入null_ptr,对于后面伴随出现的括号,可以通过以下的步骤解决:


  1. 在序列图空白处双击鼠标或右键调出上下文菜单后选择【Property】项目

  2. 选择【Features】属性页

  3. 选中下图中红框中【Suppress Brackets for Operations without Parameter】选项


这样,就可以得到下面的结果,我们大一点表示。




真正的用途


其实这个设定的真正目的当消息就是表达某种信息而不是操作时,可以用来抑制消息名后面的小括号表示。


如果回头看看本文开头序列图第一步的表示,用户选择【Make Group】的操作并不是Framework的函数调用,没有后面的小括号会自然很多。


对于那些没有参数的操作,我们可以在【Arguments】文本框中输入void,这时小括号就又可以表示出来了。这种程度的代价应该是可以接受的。


【面向对象思考】推荐使用这种设定方法。


如果阅读本文能给您带来些许收获,欢迎分享给更多的朋友!

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



1 0
原创粉丝点击