资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
用例图练习题 一售票系统 参与者包括售票员 监督员和公用电话亭 公用电话亭是另一个系统 它接收顾客的订票请求 顾客不直接与售票系统交互 用例包括通过公用电话亭或售票员购票 购预约票 只能通过售票员 以及售票监督 应监督员的要求 购票和购预约票包括一个共同的部分 即通过信用卡来付钱 包含 include 扩展 extend 和泛化 generalization 三种联系和区别 http code 1 包含 include 包含关系 使用包含 Include 用例来封装一组跨越多个用例的相似动作 行为片断 以便多个基 Base 用例复用 基用例控制与包含用例的关系 以及被包含用例的事件流是否会插入到基用例的事件流中 基用例可以依赖包含用例执行的结果 但是双方都不能访问对方的属性 包含关系对典型的应用就是复用 也就是定义中说的情景 但是有时当某用例的事件流过于复杂时 为了简化用例的描述 我们也可以把某一段事件流抽象成为一个被包含的用例 相反 用例划分太细时 也可以抽象出一个基用例 来包含这些细颗粒的用例 这种情况类似于在过程设计语言中 将程序的某一段算法封装成一个子过程 然后再从主程序中调用这一子过程 例如 业务中 总是存在着维护某某信息的功能 如果将它作为一个用例 那新建 编辑以及修改都要在用例详述中描述 过于复杂 如果分成新建用例 编辑用例和删除用例 则划分太细 这时包含关系可以用来理清关系 2 扩展 extend 扩展关系 将基用例中一段相对独立并且可选的动作 用扩展 Extension 用例加以封装 再让它从基用例中声明的扩展点 ExtensionPoint 上进行扩展 从而使基用例行为更简练和目标更集中 扩展用例为基用例添加新的行为 扩展用例可以访问基用例的属性 因此它能根据基用例中扩展点的当前状态来判断是否执行自己 但是扩展用例对基用例不可见 对于一个扩展用例 可以在基用例上有几个扩展点 例如 系统中允许用户对查询的结果进行导出 打印 对于查询而言 能不能导出 打印查询都是一样的 导出 打印是不可见的 导入 打印和查询相对独立 而且为查询添加了新行为 因此可以采用扩展关系来描述 3泛化 generalization 泛化关系 子用例和父用例相似 但表现出更特别的行为 子用例将继承父用例的所有结构 行为和关系 子用例可以使用父用例的一段行为 也可以重载它 父用例通常是抽象的 在实际应用中很少使用泛化关系 子用例中的特殊行为都可以作为父用例中的备选流存在 例如 业务中可能存在许多需要部门领导审批的事情 但是领导审批的流程是很相似的 这时可以做成泛化关系表示 二在线购物系统 1 系统整体用例图 UML中扩展和泛化的区别 泛化表示类似于OO术语 继承 或 多态 UML中的UseCase泛化过程是将不同UseCase之间的可合并部分抽象成独立的父UseCase 并将不可合并部分单独成各自的子UseCase 包含以及扩展过程与泛化过程类似 但三者对用例关系的优化侧重点是不同的 如下 泛化侧重表示子用例间的互斥性 包含侧重表示被包含用例对Actor提供服务的间接性 扩展侧重表示扩展用例的触发不定性 详述如下 既然用例是系统提供服务的UML表述 那么服务这个过程在所有用例场景中是必然发生的 但发生按照发生条件可分为如下两种情况 无条件发生 肯定发生的 有条件发生 未必发生 发生与否取决于系统状态 因此 针对用例的三种关系结合系统状态考虑 泛化与包含用例属于无条件发生的用例 而扩展属于有条件发生的用例 进一步 用例的存在是为Actor提供服务 但用例提供服务的方式可分为间接和直接两种 依据于此 泛化中的子用例提供的是直接服务 而包含中的被包含用例提供的是间接服务 同样 扩展用例提供的也是直接服务 但扩展用例的发生是有条件的 另外一点需要提及的是 泛化中的子用例和扩展中的扩展用例均可以作为基本用例事件的备选择流而存在 感谢亲观看此幻灯片 此课件部分内容来源于网络 如有侵权请及时联系我们删除 谢谢配合
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号