UML图 - 时序图与协作图转换
UML图 - 时序图与协作图转换
时序图和协作图是都是交互图的一种, 他们等价的, 可以任意转换, 而不丢失信息;
-- 时序图 : 描述交互过程中的时间顺序, 没有明确表达对象间关系;
-- 协作图 : 描述了对象间的关系, 但是时间顺序必须从消息的序号中获取;
转换示例 :
-- 场景介绍 : 学生毕业管理;
-- 对象介绍 : 教务人员, 学位评价, 成绩管理, 奖惩管理, 信息打印;
-- 控制流介绍 : ① 教务人员 输入学号 进入学位评价模块, ② 学位评价模块 会向 成绩管理模块查询成绩, ③ 向奖惩管理模块 查询 奖惩记录, ④ 学位评价模块 会将结果打印到 信息打印模块, ⑤ 信息打印模块 将结果返回给教务人员;
时序图 :
协作图 :
时序图 和 协作图 对比
时序图 和 协作图 共同点 : 都是有 消息 和 类角色组成;
-- 规定责任 : 时序图 和 协作图 都规定了 消息发送对象 和 消息接收对象 的责任, 每个接收对象都有消息对应的接口, 这个接口方法由消息发送对象触发;
-- 支持消息 : 时序图 和 协作图 都支持消息;
-- 衡量工具 : 时序图 和 协作图 可以作为衡量系统耦合性的工具, 耦合性就是 系统中模型之间的依赖性, 两个模型之间的依赖关系通过查看两个模型之间的消息数量 和 类型就可以看出, 消息交互少的 耦合性高;
时序图 和 协作 不同点 :
-- 对象创建撤销侧重点 : 时序图侧重描述对象的创建 和 撤销, 新创建的对象放在对象生命线上对应的时间点, 撤销的对象在结束的地方放一个 X 表示该对象不能再继续使用; 协作图中 创建 撤销的概念不存在, 对象时始终存在的, 只能通过消息描述 或 约束 来说明对象的创建和撤销;
-- 链接侧重点 : 时序图 中的链 没有表示出来, 可以随意绘制消息, 有些逻辑交互可能不会发生; 协作图 的消息 是映射在链 上的, 消息 和 链 平行放置, 如果想要通过消息 查看 对象之间的关联 使用协作图最好;
-- 激活和去激活 : 时序图表现有激活 和 去激活, 协作图上没有时间概念的描述, 无法清晰地表示对象的激活 和 去激活;
实例 - 图书管理系统
控制流说明 :
-- 涉及到的对象 : Admin (管理员), BookInfoWindow (图书信息窗口), Tittle (图书类别), Item (图书条目);
-- 流程 : 管理员 查询 图书信息窗口, 查看有没有相应的 图书类别, 如果有 插入该图书条目;
时序图 :
\
协作图 :
2. 管理员删除图书
控制流说明 :
-- 涉及到的对象 : Admin (管理员), BookInfoWindow (图书信息窗口), Tittle (图书类别), Item(图书条目);
-- 控制流程 : 管理员 登陆 图书信息窗口 删除图书, 查表图书类别 是否存在, 查找图书是否存在, 如果都返回true, 删除图书条目;
时序图 :
协作图 :
控制流说明 :
-- 参与的对象 : Admin (管理员), BookInfoWindow (图书信息窗口), Tittle (图书类别), Borrower (借阅者), Loan (借书记录), item (图书条目);
-- 流程 : 管理员 登陆 图书信息窗口, 查询 图书类别 是否存在, 查询 图书条目是否存在, 查询 借阅者是否存在, 创建 借书记录;
时序图 :
协作图 :
例子2:
管理员结账的协作图
转换的时序图: