UML part4 顺序图协作图
Posted 跟着金哥有肉吃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UML part4 顺序图协作图相关的知识,希望对你有一定的参考价值。
UML part4 顺序图、协作图
交互图
1. 定义:用来描述对象之间的关系和对象之间的信息传递
2. 作用:
①通常用来描述某个用例的行为
②为实现某个用例,为系统的动态行为建模
3. 种类
包括顺序图和协作图
顺序图(序列图或时序图)
*一定要记好名字,看到顺序图或序列图或时序图要知道他们三都是一个东西
1. 定义:描述对象之间的消息交互的二维图
2. 用于强调消息在时间轴上的先后顺序
3. 横向:代表在协作中各自独立对象的角色(匿名对象)
4. 纵向:时间轴,沿竖线向下延伸
顺序图示例
5. 作用
①通常用来描述用例的实现:表明了由哪些对象通过消息相互协作来实现用例的功能
②可以根据对象之间的交互关系来定义类的职责
6. 顺序图的组成元素
①对象(最上面的一行)
②生命线:表示对象的生存期(竖着的虚线)
③激活(控制焦点):表示对象正在执行的某个操作(竖着的空心矩形)
④消息:表示对象之间的通讯(带有方向的箭头以及箭头上面的消息内容)
顺序图的组成示例
7. 对象
①顺序图中有两类对象:系统的参与者(系统外的对象)和任何有效的系统对象(系统内的对象)
顺序图中两种对象的画法
a. 系统的参与者:系统外的对象,也就是所谓的用户,用户只是通过系统来完成一个操作,是一个交互的发起者,他并不属于系统内部,通常在对象行的最左边
b. 任何有效的系统对象:系统内部的对象,例如登录界面,产品,存款界面,存款记录等
②对象的类型
a. Persistent(持续):对象能够保存在数据库或其他持续存储器中
b. Static(静态):保存在内存中,直至程序终止才会销毁
c. Transient(临时):临时保存在内存中
8. 生命线
①对象的底部中心位置的一条垂直的虚线
②这是一个时间线,其长度取决于交互持续的时间,用来表示对象在一段时间内的存在
③对象存在的时段
a. 对象在拥有控制线程时
b. 被动对象被外部调用时
9. 激活(控制焦点)
①在对象的生命线上,包含一个矩形,表示对象处于激活状态
②处于激活状态的对象正在执行某个任务
③对象在完成自己的工作后,去除激活,处于空闲状态
④顶端与激活时间对齐,底端与完成时间对齐
10. 消息
①定义:
a. 一个对象(发送者)向另一个或几个其他对象(接收者)发送信号
b. 一个对象(调用者)调用另一个对象(被调用者)的操作
②消息的组成
a. 消息号:消息名(消息参数)
例如:1:login(uName,uPwd)
b. 通常在题中遇到的都是没有消息参数的,直接写“消息号:消息名”就行
③UML三种消息
a. 调用:发送者把消息发送后,等待直到接收者返回控制,可以表示同步
b. 异步:消息发送后,发送者继续操作,不等待,常用于并发
c. 返回:表示消息的返回。一般同步(过程调用)的返回不需要画出,直接隐含,而异步返回则可用它
④单纯从考试的角度出发简单的记,只需要记
a. 方向向右的箭头都是实线箭头,例如下图消息1和2
b. 方向向左的箭头表示返回消息的箭头,全是虚线的箭头,例如下图消息4和5
c. 自调用的箭头是实线的,就是在同一个激活上自己转半圈, 例如下图消息3
【考试画图类型题】
要点:
1.确定交互的范围
2.识别参与交互的对象和活动者
3.设置对象生命线的开始和结束
4.设置消息
5.细化消息
例题1.仓库管理员处理产品入库工作流程,基本工作流程如下:1.仓库管理员将通过库存管理子系统将生产的产品处理入库。2.仓库管理员通过库存管理子系统中的产品入库界面获取产品信息。3.产品入库界面根据产品的编号将产品类实例化并请求该类产品信息。4.产品类实例化对象根据产品的编号加载产品信息,并提供给产品入库界面,反馈给仓库管理员。5.仓库管理员通过产品入库界面增加产品数目。6.产品入库界面通过产品类实例化对象修改产品信息。7.产品类实例化对象向产品入库界面返回修改信息。8.产品入库界面向仓库管理员显示添加成功信息。
分析:认真读题,确定交互的范围和参与交互的参与者和对象,这道题首先可以确定交互范围是产品入库,然后再读题找出参与交互的对象和活动者,这道题比较简洁,就是仓库管理员、产品入库界面和产品,然后就按照题目的消息顺序逐一激活各个对象,箭头方向向左的消息都是实线,箭头方向向右的消息都是返回消息,都是虚线箭头
例题2.为ATM存款用例绘制一个序列图
分析:首先确定交互范围是存款,这道题比较简单一点的是已经给出了活动者和交互的对象,我们自己来发挥完善一下ATM存款的过程就好,在交互对象的画法上,可以画出题中给出的对象表示法,也可以画下面答案里给的版型的表示法(知识点可见UML part3 类图推送中类图的版型),老师上课说过下面这种画法分值会更高,前提是你要弄的清类的版型,和系统外界发生交互的是边界类,例如下图ATM主页面,存款界面直接和系统外界的用户交互;保存永久信息的,最终被映射在数据库中的是实体类,例如下图的账户和存款记录
例题3.为选课系统中的选课用例绘制序列图。假设学生已经成功登陆系统,选择的事件可以简化如下:
选课事件:
1.进入选课主界面。
2.点击选课。
3.系统显示所有课程信息。
4.学生选择课程。
5.系统验证课程是否可选。
6.系统提示课程选择成功,提示学生交费。
7.用例结束。
错误事件:
5a: 课程不可选。
5a1:系统提示课程不可选原因。
5a2:重新选课。
分析:首先确定交互范围是选课,这道题的好处就是把过程列出的很清晰,然后分析活动者和参与交互的对象,活动者很好找就是学生,参与交互的对象有选课界面(边界类)、选课系统(控制类)、课程(实体类)
选课图
查询课程图
例题4.借书用例的需求:读者在借书时,先由管理员把借书证上的读者编号扫描给系统,系统检查这个读者的借书证合法信息;如果不合法,则系统给出提示,如果正确系统返回读者的身份信息,以及读者的借阅信息。
如果读者借书数量没有超过借书的上限,则把要借书的图书编号输入系统,系统登记借书信息,并返回借书成功信息,借书过程完成
用例:借书
●参与者:管理员,借阅者
●基本事件流:
1. 借阅者带着借书证和书来到柜台。
2. 管理员输入借阅者的借书证编码。
3. 系统检查借阅者的合法性。
4. 系统显示借阅者的信息。
5. 系统检查借阅者的借阅信息。
6. 管理员输入所借图书的条码。
7. 系统显示所借图书的信息,并登记图书。
管员重复6~7步,直到结束。
8. 系统登记借阅者的本次借阅信息,并显示。
●扩展事件流:
3a. 借阅者身份非法,则提示,本次拒借。
5a. 该借阅者所借图书中有超期的, 则提示, 本次拒借。
5b. 该借阅者所借图书数量超过了上限, 则提示, 本次拒借。
请根据以上内容为借书用例绘制序列图。
分析:首先确定交互范围是借书,这道题的好处就是把过程列出的很清晰,然后分析活动者和参与交互的对象,活动者是管理员,因为是由管理员进行操作发起交互的,参与交互的对象有借书界面,借书处理管理器,借书证,读者,借书记录,图书
例题5.读者在还书时,先由管理员把所借图书的图书编号扫描给系统,系统接收到这个信息,则显示这个该读者信息,以及这本书的信息。
管理员确认还书,则系统登记还书信息,并返回还书成功信息,还书过程完成。
用例:还书
●参与者:管理员,借阅者
●操作流:
① 管理员进入图书借阅界面,用例开始。
②系统要求输入所还图书的条码。
③系统显示所还图书的图书、读者、借阅等信息
④确认还书。
⑤系统回到上一界面,等待处理下一业务。
请根据以上内容为还书用例绘制序列图。
分析:首先确定交互范围是借书,然后分析活动者和参与交互的对象,活动者是管理员,因为是由管理员进行操作发起交互的,参与交互的对象有还书界面,还书处理管理器,借书记录,图书和读者
协作图
1. 协作:
①在一定的语境中,一组用以实现某些行为的对象之间的相互作用
②它描述了若干对象为实现某种目的,而组成相互合作的“对象社会”
2. 协作图:表现对象协作关系的图
①是对“对象图”的扩展(增加消息传递)
②序列图和协作图可以相互转化(协作图就是序列图去掉了激活和生命线,序列图主要强调的是消息在时间上的先后顺序以及对象发生交互的时间,主要是时间方面,生命线和激活就是用来体现时间的)
③协作图主要强调的是:参与交互对象的角色位置与组织关系,简单的说就是主要展现发生交互的各个对象的网络结构和相互发送消息的内容
协作图示例
3. 协作图的组成元素
①对象
a.对象的角色表示一个或一组对象在完成目标的过程中所应起的那部分的作用
b.不需要关于某个类的所有对象都出现
c.同一个类的对象可能充当多个角色
②链
a. 在协作图中的链和对象图中链的概念和表现形式都相同,都是两个或多个对象之间的独立连接
b. 链的表现形式
普通:连接在两个对象之间的线或弧
自身关联:两端指向同一对象的回路,是一条弧
链的画法
③消息
a.作用:通过一系列的消息来描述系统的动态行为
b.表示形式:
每个消息包括一个顺序号以及消息的名称
使用带有标签的箭头来表示,箭头指向接收者
附在连接发送者和接收者的链上
消息的名称也可以是一个方法,包含一个名字和参数表、可选的返回值表
消息示例
4. 协作图和序列图的关系
①协作图和序列图都表示对象之间的交互作用,只是侧重点有所不同
a.序列图描述了对象交互的时间顺序,但没有明确地表达对象之间的关系(多用于用例描述)
b.协作图描述了对象在交互中承担的角色,但对象在交互中的时间顺序必须从消息的顺序号获得(多用于详细设计时对象关系的描述)
②两种图的语义是等价的,可以相互转化
以上是协作图的专业知识点,单纯从考试画图题的角度出发,就把协作图理解成没有生命线和激活的序列图
【考试画图类型题】
要点:
1.协作图就是把序列图去掉生命线和激活焦点后,把对象构图好,用线连上,上面写上消息的箭头和内容
2.通常考题都是协作图和序列图的互相转化
例题1.画出协作图对应的顺序图
分析:协作图转顺序图,就按照协作图中的消息编号依次各个对象的激活焦点就可,得出答案如下
例题2.画出协作图对应的顺序图
分析:协作图转顺序图,就按照协作图中的消息编号依次各个对象的激活焦点就可,得出答案如下
例题3.画出协作图对应的顺序图
分析:协作图转顺序图,就按照协作图中的消息编号依次各个对象的激活焦点就可,得出答案如下
例题4.根据下列用例画出顺序图和协作图
用例“新增书籍”
基本事件流
①图书管理员向系统发出“新增书籍信息“请求。
②系统要求图书管理员选择要新增的书籍是计算机类还是非计算机类。
③图书管理员做出选择后,显示相应界面,让图书管理员输入信息,并自动根据书号规则生成书号。
④图书管理员输入书籍的相关信息,包括:书名、作者、出版社、ISBN号、开本、页数、定价、是否有CD-ROM。
⑤系统确定输入的信息中书名没有重复。
⑥系统将所输入的信息存储建档。
扩展事件流
①如果输入的书名有重名现象,则显示出重名的书籍,并要求图书管理员选择修改书名或取消输入。
②图书管理员选择取消输入,则结束用例,不做存储建档工作。
③图书管理员选择修改书名后,转到5
分析:按照从左到右的顺序,依此将参与者、边界对象和实体对象放在最顶部,参与者放在最左边,实体类放在最右边。注意,在分析模型中可以先不考虑控制类的引用(有必要时也可以引入)。然后根据事件流描述逐一导出其相应的消息流,即可得到顺序图。
顺序图
协作图
以上是关于UML part4 顺序图协作图的主要内容,如果未能解决你的问题,请参考以下文章
UML实践详细经典教程----用例图顺序图状态图类图包图协作图