【UML】用例图中Include和Extend到底如何区分

本文深入解析了UML用例图中的include与extend关系,详细阐述了两者的应用场景及区别。include关系中,子用例是基用例完成功能的必要组成部分;而extend关系则是对基用例功能的可选扩展。

前言:

今天在看UML中用例图的时候,发现之前总结的博客有一些理解上的问题,确实include与extend有很大的区别,今天通过深入的学习,现在已经纠正以前的错误了,接下来大家和我一起看看这二者之间到底是怎么的一种存在吧!

1、之前《include》的学习误区

大家都知道include的中文意思是包含的意思,我最初的理解就是一个用例包含另一个用例!二者之间就是单单的包含关系就行了,接下来我给一下 错误 的用例图:

在这里插入图片描述

一开始我单单的认为包含的关系就是查询用户包含查询教师和查询学生,三者之间是平级的包含关系!这是错误的理解,那究竟什么是扩展关系呢,接下来步入正题!

2、解析《include》

当两个或多个用例中共用一组相同的动作,这时可以将这组相同的动作抽取出来作为一个独立的子用例,供多个基用例所共享,因为子用例被抽出,基用例并非一个完整的用例,所以include关系中的基用例必须和子用例一起使用才能够完整, 子用例必须被执行!

在这里插入图片描述

如上图,管理员有两个功能,分别是查看上机记录与结账,二者之间都包含一个用例,那就是登录,意思就是要想完成查看上机记录和结账,那么必须先要登录! 所以 将登录抽离出来!登录必须要先执行,这就是包含关系!

3、解析《extend》

《extend》 与《include》正好相反,就是说extend关系是对基本用例的扩展,基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能,extend的基本用例存在一个扩展点,只有当扩展点被激活时,子用例才会被执行!

在这里插入图片描述

如上图所示,如果借书人按照规定时间内归还图书,那么归还图书就好,但是如果超期,那么就要执行扩展用例,此时它的超期归还扩展点被激活!

4、总结

include必须要执行,extend不必须执行,只有将扩展点激活才可以执行!

代码转载自:https://pan.quark.cn/s/024b3d80f320 1、适配器模式 包装一个对象,来提供不同的接口 源码例子 适配器模式 2、代理模式 代理对象持有被代理对象的引用,通过代理对象简介访问被代理对象,来控制对被代理对象的访问(重点学习动态代理涉及反射知识) 源码例子 动态代理弥补了普通代理删除或增加接口方法需要改动多个类的不足,动态代理无论接口方法怎么变化都不受影响 代理模式 定义一个接口 真实的对象实现接口的方法 假的对象调用真实对象的方法 动态代理模式简化的样子 属于反射包下的类,传入一个真实对象的ClassLoader,真实对象实现的接口包下InvocationHandler的一个子类,得到一个代理的对象,代理对象实现真实对象一样的接口,所以可以调用真实对象实现的接口方法 3、外观模式 包装多个对象,以简化它们的接口 源码例子 4、装饰者模式 包装另一个对象,并提供额外的行为 装饰者模式 例子源码相关类,绘制装饰者UML图 源码例子 装饰者UML图谱例子1 5、命令模式 把请求封装成对象,这可以让你使用不同的请求、队列或日志请求来参数化其他对象 源码例子 命令模式 6、迭代器模式 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示 源码例子 迭代器模式 7、组合模式 允许你将对象组合成树形结构来表现“整体/部分”的层次结构 源码例子 组合模式 8、工厂模式 定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个 源码例子 工厂模式 9、抽象工厂模式 提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类 源码例子 抽象工厂模式 10、观察者模式 定义了对象之间一对多依赖,当一个对象改变状态...
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值