包含关系
包含(Include) 是两个用例之间的有向关系,表示被包含的用例的行为被插入到包含用例的行为中。
包含关系可在两个或多个用例的行为存在共同部分时使用。通常情况下,这个公共部分被提取到一个单独的用例中,然后被所有具有这个部分的基本用例包含。由于包含关系的主要用途是重用公共部分,因此基本用例中剩下的部分通常并不完整,需要和包含的部分结合才有意义。这一点反映在关系的方向上:基础用例依赖于被包含用例,但反之则不然。
包含关系允许用例的分层组合以及重用。
第二个用例-转账
转账用例的基本路径如下:
显示待机画面
检测用户插入银行卡,执行进卡动作
显示语言选择画面
等待并处理用户选择语言
提款机显示用户认证画面
等待用户输入密码并按下确定按钮
显示该银行卡类型的有效服务
根据用户选择结果进入转账画面
接受用户输入的转账对象账号
进入转账额输入画面
接受用户输入的转账额
与银行系统服务器通信,执行转账命令
显示是否需要其他服务画面
用户选择取卡,执行出卡动作,并提示客户取卡
检测用户取卡后显示待机画面
再看一下取款用例的基本路径:
显示待机画面
检测用户插入银行卡,执行进卡动作
显示语言选择画面
等待并处理用户选择语言
提款机显示用户认证画面
等待用户输入密码并按下确定按钮
显示该银行卡类型的有效服务
根据用户选择结果进入取款额输入画面
接受用户输入的取款额
与银行系统服务器通信,执行取款命令
进入处理中画面,同时将纸币搬运到出钞口
打开出钞口挡板
等待用户取走钞票
关闭出钞口挡板
显示是否需要其他服务画面
如果用户选择取卡,执行出卡动作,并提示客户取卡
检测用户取卡后显示待机画面
可以看到转账的用例和前一篇文章中的取款用例有很多相似的地方,我们可以将它们分别提取出来:
待机显示:
显示待机画面
检测用户插入银行卡,执行进卡动作
选择语言:
显示语言选择画面
等待并处理用户选择语言
用户认证:
显示用户认证画面
等待用户输入密码并按下确定按钮
选择服务:
显示该银行卡类型的有效服务
等待用户输入
输入账号:
进入转账画面
接受用户输入的转账对象账号
输入金额:
进入转账额输入画面
接受用户输入的转账额
执行转账动作
与银行系统服务器通信,执行转账命令
询问其他服务
显示是否需要其他服务画面
接受用户输入
退卡
执行出卡动作,并提示客户取卡
用例图中的包含关系
可以看到我们将一个转账用例分解为九个小的用例,而这里的取款用例和九个用例之间的关系就是包含关系也就是说:转账用例包含九个小用例。这种说法在EA的用例图中,使用下面的图表来表示包含关系:
上面的转账用例变成用例图就是下面的样子:
使用同样的方法,取款用例可以表示成下面的样子:
可以看到,除了绿色的执行去狂动作之外,所有的被包含用例都是在转账用例中出现过的。
还有一点需要注意的是,为了保证每个用例的完整性和通用性,我们对部分用例的内容进行了微调。这种微调在用例建模过程中是很常见的。
作者著作介绍
《实战Python设计模式》是作者去年3月份出版的技术书籍,该书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。
对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。
觉得本文有帮助?请分享给更多人。
关注微信公众号【面向对象思考】轻松学习每一天!
面向对象开发,面向对象思考!