用例扩展关系

下面是ULM2.5.1中对用例扩展关系的解释。

扩展是从扩展用例到被扩展用例的关系,它指定扩展用例中定义的行为如何以及何时可以插入到被扩展用例。扩展发生在被扩展用例中定义的一个或多个特定扩展点。当有一些额外的行为应该被添加(可能有条件地)到一个或多个用例定义的行为时,应该使用扩展。

被扩展用例的定义独立于扩展用例,其含义也独立于扩展用例。另一方面,扩展用例通常本身通常不必具有完整的含义。相反,扩展用例定义了一组模块化的行为增量,这些增量可以在特定条件下增强被扩展用例的执行。

注意:同一个扩展用例可以扩展多个用例。此外,扩展用例本身可能被扩展。

扩展和包含

在实际的设计中经常会将用例的扩展和包含关系弄混。解决这个问题最关键的就是【额外】两个字,如果设计者认为该行为是必须的,就是包含;如果是【额外】的,就是扩展关系。

扩展实例

前面到文章说明了取款和转账的用例分析,除了共同的处理之外,还分别包含了执行转账动作和执行取款动作两个用例。也有一些客户,可能希望在执行正常的转账或取款动作的同时,将执行过的动作记入动作日志中。这个日志记录动作就可以看作是实际业务之外,即【额外】的行为。

注:这里的【看作】很重要,体现的设计者对建模对建模对象的看法。

以下是取款用例分析中使用用例扩展关系的例子:

图中黄色的是扩展用例,绿色的是被扩展用例。

同样的扩展用例也可以用于扩展转账用例的行为:

作者著作介绍

《实战Python设计模式》是作者去年3月份出版的技术书籍,该书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。

对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。


觉得本文有帮助?请分享给更多人。

关注微信公众号【面向对象思考】轻松学习每一天!

面向对象开发,面向对象思考!

EAUML日拱一卒 用例扩展关系相关推荐

  1. EAUML日拱一卒 总目录

    用例图 EA&UML日拱一卒 用例图开篇 EA&UML日拱一卒 用例包含关系 EA&UML日拱一卒 用例泛化关系 EA&UML日拱一卒 用例扩展关系 类图 EA& ...

  2. EAUML日拱一卒 用例泛化关系

    泛化关系 泛化定义类目之间的泛化/特化关系.泛化关系将特殊类目连接到更通用的类目.给定一个类目,其指向一般类目(泛化方向)的传递闭包通常统称为泛化类目,其指向特殊类目(泛化的反方向)的传递闭包通常统称 ...

  3. EAUML日拱一卒 用例包含关系

    包含关系 包含(Include) 是两个用例之间的有向关系,表示被包含的用例的行为被插入到包含用例的行为中. 包含关系可在两个或多个用例的行为存在共同部分时使用.通常情况下,这个公共部分被提取到一个单 ...

  4. EAUML日拱一卒 用例图开篇

    创建用例图 在Package节点上调出上下文菜单. 选择[Add Diagram...] 选择[UML Behavioral]分类,选择[Use Case]图面类型. 上图中红框部分就是用例图常用的图 ...

  5. EAUML日拱一卒-微信小程序实战:位置闹铃 (16)-单元测试是个技术活

    程序设计,实现之后的下一个环节就是单元测试了.对于位置闹铃小程序来讲,带着设备到处移动以测试监控点的状态迁移就是一个必经之路,但是如果所有环节都通过实地测试来解决,那将耗费大量的时间和体力. 我们的选 ...

  6. EAUML日拱一卒--类图::对象图(object diagram)

    对象图的功能 类图用于说明类以及类之间的关系,但是它相对抽象,有时会比较难理解.比如下面的例子: 上图是一个图形编辑软件的例子,我们有一个超类Shape和它的五个子类.其中ShapeComposite ...

  7. EAUML日拱一卒--序列图(Sequence Diagram)::交互和交互使用

    画时序图就和写作文一样,经常会遇到一发而不可收的情况,结果就是得到一个巨大的时序图.这种情况下,作者首先会因为完成了一件大工程而感到自豪,可是一旦他把完成的时序图拿给别人看或者是需要维护的时候就开始意 ...

  8. EAUML日拱一卒--序列图(Sequence Diagram)::生命周期

    在实际的程序中,创建对象,删除对象这样的控制对象生命周期的处理可以说比比皆是. 创建对象 下面以图形编辑软件中用户双击鼠标创建新对象为例说明. 处理流程: 用户双击鼠标. Framework生成QMo ...

  9. EAUML日拱一卒-微信小程序实战:位置闹铃 (6)-播放音频

    昨天停更了一天,不是作者偷懒,而是掉到了一个坑里.本来以为播放音频很简单,但是还是遇到的各种问题,比如: 1)小程序无法播放手机存储目录中的文件,只能播放网上的或者是小程序暂存的文件. 2)播放暂存文 ...

最新文章

  1. Linux驱动技术(一) _内存申请
  2. Python3入门笔记(1) —— windows安装与运行
  3. linux查看cpu监控日志,Linux:日志,cpu,memory,mount,load等系统信息查看
  4. linux内核网络协议栈--数据包的skb桥转发蓝图(二十六)
  5. Bugzilla/使用
  6. oracle ctl file constantnull,Oracle 的一些导入和导出方法
  7. 河流为什么是弯曲的?
  8. VS的包含目录、库目录、引用目录、可执行目录解释
  9. 18awg线材最大电流_小米生态链拉车线:2.4A大电流,苹果MFi认证,高速充电不断裂...
  10. 如何实现报表的批量打印需求
  11. 计算机技术Control,聚变控制计算机 (Fusion Control Computer)
  12. ValidateAntiForgeryToken的用途,解释和示例
  13. jQuery CSS 操作函数
  14. PHP Sessions
  15. 华为认证HCDA免费公开课课表及其交流群公告
  16. 幼儿园清明节活动设计方案
  17. 易语言解析ip138.com的查询接口
  18. getcwd()函数的用法
  19. clion:输出中文乱码终极解决方案
  20. 基于android的手机掌上购物

热门文章

  1. 【NIO】Socket 编程:基于NIO的Server、Client 示例
  2. 少年派 —— 之 读书
  3. 初识语音视觉交互芯片——CSK6
  4. 图标设计原则_图标设计的7个原则
  5. 漫漫D3路----W3C+CSS+JS
  6. 蓝桥杯【第12届真题】Python 实现
  7. 【Axure视频教程】中继器版手风琴
  8. 【笔记】input data to the valid range for imshow with RGB data [0..1] for floats or [0.255] for integers
  9. 【Springboot】Spring与Springboot简介
  10. 老国企如何焕发新势能?致远互联“协同五环”锻造老而弥坚