软件建模分析与设计 学习日志(5)协作图(Collaboration)
PS:
序列图和协作图的联系与区别
联系:
序列图和协作图相似,两者在语义上等价,传达的是同一种信息。
区别:
顺序图:强调时间顺序
协作图:交互的情景和交互对象的组织关系
协作图
先阐述下一个比较笼统的定义():
协作图作为一种在给定情境中描述协作中各个对象之间的组织交互关系的空间组织结构、图形化方式
- concept
-
协作:对象间的相互作用,对象包括:在一定情境里的一组对象和用以实现某些行为的对象
-
协作图
(旧:collaboration diagram 新:communication diagram)
:表现对象协作关系的图,表示了协作中作为各类类元角色的对象所处的位置,描述了一组对象为实现某种目的而组成相互合作的对象社会 -
内容:图中主要显示了类元角色(ClassifierRoles)和关联角色(AssociationRoles)
-
为什么要使用协作图(协作图的作用)
<1> 通过描绘对象之间消息的传递情况来反映具体的使用情境的逻辑表达。一个使用情境的逻辑是用例的一部分/一条控制流
<2> 显示对象及其交互关系的空间组织结构
即,显示了交互过程中各个对象间的组织交互关系以及对象彼此间的链接(LINK),使用***确定消息以及并发线程的的顺序(所以是空间组织结构而不强调时间)
<3> 表现一个类操作的实现,
其"实现"包括
① 说明类操作使用的参数,局部变量,以及返回值等。使用协作图表现系统行为时,
② 通过消息编号反映程序的嵌套调用结构和信号传递过程
- 图元(我觉得可以叫做sign)
-
对象
ps:同一个类的对象在一个协作图中可以充当多个角色,而且没必要让某个类的所有对象都出现,以一个对象作为代表就可以
- relation
- 链(Link):两个或多个对象之间的独立连接,是关联关系的实例(这里认为是关联关系的原因是笔者认为协作图中不存在复杂的类之间的关系,用关联关系统一口径就好)
- 消息(Message):从发送者(对象)向另1/N个接收者(其他对象)发送信号(调用接收者的操作)。
<1> 通过一系列消息描述系统的动态行为
<2> 使用带有标签的箭头表示,附着在链上
<3> 消息的箭头指向接收者。
<4> 消息包括顺序号以及消息的名称
<5> 消息的名称可以是 一个方法,包含了方法名、参数表和可选的返回值表。同时消息的实现的细节也可以额外添加,比如:Synchronization和Asynchronization
4. translation between collaboration and sequence
协作图和序列图的转换 可以通过软件自带的API实现,使用方法基于笔者使用的starUML