




已阅读5页,还剩69页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
顺序图和协作图 交互图概述 交互图 interactiondiagram 是用来描述对象之间以及对象与参与者之间的动态协作关系以及协作过程中行为次序的图形文档 交互图通常用于描述一个用例的行为 显示该用例中所涉及的对象及对象之间消息传递情况 交互图包括 顺序图 sequencediagram 描述对象按照时间顺序的消息交换 协作图 collaborationdiagram 描述系统成分如何协同工作 顺序图 1 顺序图顺序图也称为时序图 它描述了系统中对象间通过消息进行的交互 它强调了消息在时间轴上的先后顺序 2 顺序图的作用顺序图常用来描述用例的实现 它表明了由哪些对象 通过消息相互协作来实现用例的功能 在顺序图中 标识了消息发生交互的先后顺序 赤壁之战的顺序图 顺序图的组成元素参与者 actor 或者对象 object 生命线 lifeline 激活期 activation 控制焦点 focusofcontrol 消息 message 参与者或对象 参与者和对象按照从左到右的顺序排列 一般最多两个参与者 他们分列两端 启动这个用例的参与者往往排在最左边 接收消息的参与者则排在最右端 对象从左到右按照重要性排列或按照消息先后顺序排列 将对象置于顺序图的顶部意味着在交互开始的时候对象就已经存在了 如果对象的位置不在顶部 那么表示对象是在交互的过程中被创建的 对象的命名方式有三种 包括对象名和类名类名 匿名对象 对象名 不关心类 生命线 Lifeline 每个对象都有自己的生命线 用来表示在该用例中一个对象在一段时间内的存在垂直的虚线如果对象生命期结束 则用注销符号表示 消亡点 激活期 activation 控制焦点 focusofcontrol 对象在一段时间内获得了焦点 也称激活期对象执行某个动作的时期空心矩形条激活期的长短意味着对象执行某个动作的时间有多长 可以通过约束 10ms 来限制执行时间的长短 顺序图中的消息 面向对象方法中 消息是对象间交互信息的主要方式 结构化程序设计中 模块间传递信息的方式主要是过程 或函数 调用 对象A向对象B发送消息 可以简单地理解为对象A调用对象B的一个操作 operation 顺序图中 尽力保持消息的顺序是从左到右排列的 一个顺序图的消息流开始于左上方 消息2的位置比消息1低 这意味着消息2的顺序比消息1要迟 顺序图中消息编号可显示 也可不显示 UML1 4后定义的消息有 调用消息procedurecall异步消息asynchronous返回消息returnUML1 3前的消息还有 简单消息simpleRose扩充的消息阻止消息balking超时消息time out 调用消息 消息的发送者把控制传递给消息的接收者 等待接收者返回或放弃控制 可以表示同步 实心箭头符号 调用消息必有一个与之配对的返回消息 但是可以不用画出 异步消息 消息的发送者把控制传递给消息的接收者 然后继续自己的工作 不等待接收者返回或放弃控制 UML1 4及以后 UML1 3及以前 返回消息 Return 表示消息的返回 消息上方放置返回值同步消息的返回可以画出 如果想明确表达返回值 也可以不画出 直接隐含 异步消息可以有返回 也可以没有 可以响应异步消息 也可以不响应该异步消息 虚线箭头表示 和依赖关系不要混淆 阻止消息 消息的发送者传递消息给接收者 如果接收者无法立即接收 则发送者放弃该消息 超时消息 消息的发送者发出消息给接收者并按指定时间等待 若接收者无法在指定时间内接收 则发送者放弃该消息 自调用 SelfCall 某对象自己调用自己的操作嵌套的矩形条 消息的语法格式 前置消息列表 警戒条件 消息顺序表达式 返回值 消息名称 参数列表 前置消息列表 predecessor 语法 消息序列号 消息序列号 前置消息列表是一个用来同步线程或路径 path 的表达式意思是在发送当前消息之前指定序列号的消息被处理 必须连续执行 消息序列号之间用逗号隔开 用斜杠结束例如1 1a 1 1b 1 2 continue 在发送消息1 2之前必须已经同时发送并发消息给线程a和b 警戒条件 guard condition 语法 条件短语 条件短语通常用伪代码或真正的程序语言来表示 UML并不规定其语法例如 x 0 4 invert x color 消息顺序表达式 sequence expression 语法 integer name recurrence integer为指定消息顺序的序列号 消息1是消息序列的开始消息 1 1是消息1的处理过程中的第一条嵌套的消息 消息1 2是消息1的处理过程中的第二条嵌套的消息 一个消息序列的例子如1 1 1 1 2 1 2 1 1 2 2 1 3 等 这样的序列号不仅能够表示消息的顺序而且还能表示消息的嵌套关系 当消息是异步消息时消息为嵌套的操作调用及返回 name表示并发控制线程 例如1 2a和1 2b为同时发送的并发消息 消息编号 按消息产生的先后顺序 给消息编号 有两种编号方案 一种是顺序编号 另一种是嵌套编号 1 顺序编号整个消息的传递过程就形成了一个完整的序列 因此通过在每个消息的前面加上一个用冒号隔开的顺序号 按照消息的先后顺序 从1开始对消息编号 来表示其顺序 2 嵌套编号由于顺序图本身已经充分表现出消息执行的顺序 因此在UML模型中并没有要求对消息进行编号 只是要求在协作图中 对消息进行了编号 但在Rose等建模工具中 为了能够自动实现顺序图与协作图的转换 在顺序图中也默认采取嵌套编号方案 嵌套编号 recurrence表示一个条件或循环的执行 有两种选择 循环子句 循环子句 iteration clause 用来指定一个循环 重复执行 例如 一个包括循环的消息1 1 x 1 10 doSomething 条件子句 条件子句一般用来表示分支而不是用作警戒条件 x 0 是两个可以用来分支的条件子句 这两个条件只能有一个为真 因而只有一个分支被执行 即发送与分支有关的消息 条件子句和循环子句都可以用伪代码或真正的编程语言来表示消息顺序表达式用冒号结束 返回值 消息名和参数表返回值表示一个操作调用 即一个消息 的结果 消息的语法格式 前置消息列表 警戒条件 消息顺序表达式 返回值 消息名称 参数列表 例 2 display 1 3 1 p find x 0 4 invert x color 3 1 x 1 10 update 1 1a 1 1b 1 2 continue Rose中的消息 建立顺序图的步骤 确定交互过程的上下文识别参与交互过程的对象为每个对象设置生命线从引发这个交互过程的初始消息开始 在生命线之间自顶向下依次画出随后的各个消息 如果需要嵌套或 和 表示消息发生的时间点 使用控制焦点 如果需要说明时间约束 则在消息旁边加上约束说明 如果需要 可以为每个消息设置前置条件和后置条件 下面以饮料自动销售系统为例 来学习怎样绘制顺序图 下面对 买饮料 的一种场景进行建模 绘制其对应的顺序图 买饮料的正常场景下面是买到饮料的一般事件流 1 顾客从机器的前端钱币口投入钱币 然后选择想要的饮料 2 钱币到达钱币记录仪 记录仪更新自己的存储 3 记录仪通知分配器分发饮料到机器前端 边界类 控制类和实体类 UML中三种主要的类版型边界类 boundaryclass控制类 controlclass实体类 entityclass 引入多种类版型帮助分析和设计人员确定系统中的类 边界类 边界类位于系统与外界的交界处 包括 用户界面类 如 窗口 对话框 报表类等通讯协议类 如 TCP IP的类直接与外部设备交互的类直接与外部系统交互的类 边界类的UML表示方法 边界类 通过用例图可以确定需要的边界类 每个Actor Usercase对至少需要一个边界类 边界类一般可以没有属性 只有操作 但并不是每个Actor Usecase都需要生成惟一边界类 多个actor启动同一usecase可以使用同一边界类 实体类 实体类保存要放进持久存储体 数据库 文件等 的信息 实体类通过事件流和交互图发现 采用目标领域术语命名 通常实体类对应数据库中的表 其属性对应表的字段 但实体类与数据库中的表不一定是一一对应关系 控制类 控制类是负责管理或控制其他类工作的类 每个用例通常有一个控制类 控制用例中的事件顺序 控制类也可以在多个用例间共用 控制类较少接收消息 发出较多消息 实例 寻找分析类 在分析阶段 我们常在用例中寻找三种分析类 边界类 控制类和实体类 我们通过分析用例描述中的事件流 寻找分析类 用例 新增书籍 在分析时 还必须综合考虑基本事件流和扩展事件流两个方面 下面以 新增书籍 为例进行分析 其事件流如下所示 1 基本事件流 图书管理员向系统发出 新增书籍信息 请求 系统要求图书管理员选择要新增的书籍是计算机类还是非计算机类 图书管理员做出选择后 显示相应界面 让图书管理员输入信息 并自动根据书号规则生成书号 图书管理员输入书籍的相关信息 包括 书名 作者 出版社 ISBN号 开本 页数 定价 是否有CD ROM 寻找分析类 系统确定输入的信息中书名没有重复 系统将所输入的信息存储建档 2 扩展事件流 如果输入的书名有重名现象 则显示出重名的书籍 并要求图书管理员选择修改书名或取消输入 图书管理员选择取消输入 则结束用例 不做存储建档工作 图书管理员选择修改书名后 转到5 寻找分析类 2 寻找边界对象对这个用例而言 参与者 图书管理员 因此要寻找边界对象只需以 图书管理员 这个参与者为线索 从用例描述中去寻找分析类 1 图书管理员向系统发出 新增书籍信息 请求 图书管理员在什么地方向系统发出 新增书籍信息 的请求呢 通常会设计一个主窗口 并在上面摆放一些按钮来实现 因此在此句描述中间 可以发现两个边界类 主窗口 新增书籍信息 按钮 2 系统要求图书管理员选择要新增的书籍是计算机类还是非计算机类 从此句中可以发现一个新的边界类 书籍类别列表框 3 图书管理员做出选择后 显示相应界面 让图书管理员输入信息 并自动根据书号规则生成书号 此句中可以发现最为关键的一个边界类 新书信息录入 窗口以及辅助的 提交 按钮 而且 还可以发现新增书籍信息按钮是组成主窗口的一部分 书籍类别列表框 提交按钮则是组成新书信息录入窗口的一部分 根据以上信息 可以先将参与者和边界对象绘制出来 其结果如图所示 寻找分析类 参与者和边界对象 3 寻找控制对象和实体对象实体对象通常来源于领域中的类图 也就是描述业务领域的名词或名词短语 通过阅读整个事件流的详细描述 我们得知 实体对象有书籍 计算机书籍 非计算机书籍以及书籍列表4个 在这个例子中 根据事件流中的步骤5 以及扩展事件流的描述 可以在上图上增加相应的控制对象 得到更进一步的分析图 如下图所示 寻找分析类 对基本事件流步骤5分析后 添加控制对象 另外 还有几个关键的事件没有体现到图中 一是基本事件流中的步骤2 3要求根据用户选择的类别自动获得书号 二是当书名重复性检查没有通过时 有重名 应返回要求其重输 构建交互图 最后完整的分析图 构建交互图 下面是构建顺序图的步骤 首先 按照从左到右的顺序 依此将参与者 边界对象和实体对象放在最顶部 边界类放在左边 实体类放在右边 注意 在分析模型中可以先不考虑控制类的引用 当然有必要时也可以引入 构建顺序图 练习 1 用户打印文件 计算机向打印服务器发送打印命令 打印机如果空闲 则直接打印 否则把打印文件存储在打印队列中 2 网上书店用户需求 书店店长 顾客能在网上书店订购图书 提交订单 工作人员能及时看到订单并进行处理 我们接受货到付款或者网银支付 工作人员甲 图书可以按照不同种类放置 图书的信息和种类也要网上书店设置和管理 工作人员乙 能进行促销管理 顾客甲 可以查看图书简介 查找图书 购买图书 顾客乙 结账前可自行管理选购的图书 可以查看以前的购买记录 也可以取消现有订单 顾客丙 实行会员制 平时可以在网上书店查查资料 只在购买图书的时候才使用会员身份 用例名称 管理员登录系统基本流 1 用户输入用户名和密码2 用户选择管理员类型3 用户点击 登录 按钮 4 系统验证用户权限 5 管理员进入管理界面 6 用例结束 备选流 3a 用户名或密码错误 系统出现用户名或密码错误的提示信息 回到基本流第一步 由用户重新输入 3b 输入的用户名与类型不符 系统出现提示信息 回到基本流第一步 由用户重新输入 3c 当用户点击取消按钮时 取消登录 协作图 描述系统对象 或活动者 如何共同协作实现用例 强调的是参与交互的对象的组织 一个协作图显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息 对象object 链link 消息message 协作图中的元素 对象 协作图与顺序图中的对象的概念是一样的 只不过在协作图中 无法表示对象的创建和撤销 所以对于对象在图中的位置没有限制 多对象 多对象是多个对象组成的集合 往往是同一个类的对象 如果消息同时发给多个对象 则用多对象表示 在顺序图中仍然显示为单对象一样的图标 rose中multipleinstance协作图中重叠的方框 活动对象 主动对象 主动对象是一组属性和一组方法的封装体 其中至少有一个方法不需要接收消息就能主动执行 称为主动方法 主动对象是不需接收消息就可自动启动交互的对象除了含有主动方法外 主动对象和被动对象无区别UML标记Rose标记 链 表示对象之间的语义关系 链是关联的一个实例 协作图中链的符号和对象图中链所用的符号是一样的 即一条连接两个对象的实线 建立协作图的步骤 确定交互过程的上下文识别参与交互过程的对象如果需要 为每个对象设置初始特性确定对象之间的链 及沿着链的消息从引发该交互过程的初始消息开始 将每个消息附到相应的链上如果需要表示消息嵌套 则有Dewey十进制表示 如果需要说明时间约束 则在消息旁边加上约束说明如果需要 可以为每个消息设置前置条件和后置条件 建模分数记录系统的协作图 具体用例是Teacher查看学生成绩 2 需求分析可以通过更加具体的描述来确定工作流程 基本工作流程如下 张老师希望通过系统查询某名学生的学科成绩 张老师通过用户界面录入学生的学号以及学科科目请求学生信息用户界面根据学生的学号向数据库访问层请求学生信息数据库访问层根据学生的学号加载学生信息数据库访问层根据学生信息和学科科目获取该名学生的分数信息数据库访问层将学生信息和分数信息提供给用户界面用户界面将学生信息和分数信息显示出来 1 确定协作图的元素 2 需求分析可以通过更加具体的描述来确定工作流程 基本工作流程如下 张老师希望通过系统查询某名学生的学科成绩 张老师通过用户界面录入学生的学号以及学科科目请求学生信息用户界面根据学生的学号向数据库访问层请求学生信息数据库访问层根据学生的学号加载学生信息数据库访问层根据学生信息和学科科目获取该名学生的分数信息数据库访问层将学生信息和分数信息提供给用户界面用户界面将学生信息和分数信息显示出来 2 确定元素之间的结构关系创建协作图的下一步是确定这些对象之间的连接关系 使用链与角色将这些对象连接起来 2 需求分析可以通过更加具体的描述来确定工作流程 基本工作流程如下 张老师希望通过系统查询某名学生的学科成绩 张老师通过用户界面录入学生的学号以及学科科目请求学生信息用户界面根据学生的学号向数据库访问层请求学生信息数据库访问层
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村 换届发言稿
- 时间的脚印的课件
- 少儿美术文具课件
- 烧结车间煤气培训
- 厨房消防安全培训
- 车间降本增效培训
- 2025版管件回收利用合同范本
- 2025版叉车车辆租赁合同-智能仓储物流配送解决方案
- 二零二五年度人工智能机器人研发与应用合同
- 2025版合作办学项目学生权益保护合同范本
- 2026年高考政治一轮复习:必修2《经济与社会》知识点背诵提纲
- 2025年急诊急救试题(附答案)
- 会所会议室管理制度
- 贵州航空产业城集团股份有限公司旗下子公司贵州安立航空材料有限公司招聘笔试题库2025
- 2025年医师节临床知识竞赛题库
- (正式版)HGT 22820-2024 化工安全仪表系统工程设计规范
- (高清版)TDT 1075-2023 光伏发电站工程项目用地控制指标
- NB-T 47013.15-2021 承压设备无损检测 第15部分:相控阵超声检测
- 宝洁销售谈判技巧培训
- 义务教育登记卡
- 搞笑英文话剧剧本
评论
0/150
提交评论