前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EA&UML日拱一卒 用例包含关系

EA&UML日拱一卒 用例包含关系

作者头像
面向对象思考
发布2021-12-31 19:20:40
2340
发布2021-12-31 19:20:40
举报

包含关系

包含(Include) 是两个用例之间的有向关系,表示被包含的用例的行为被插入到包含用例的行为中。

包含关系可在两个或多个用例的行为存在共同部分时使用。通常情况下,这个公共部分被提取到一个单独的用例中,然后被所有具有这个部分的基本用例包含。由于包含关系的主要用途是重用公共部分,因此基本用例中剩下的部分通常并不完整,需要和包含的部分结合才有意义。这一点反映在关系的方向上:基础用例依赖于被包含用例,但反之则不然。

包含关系允许用例的分层组合以及重用。

第二个用例-转账

转账用例的基本路径如下:

代码语言:javascript
复制
显示待机画面
检测用户插入银行卡,执行进卡动作
显示语言选择画面
等待并处理用户选择语言
提款机显示用户认证画面
等待用户输入密码并按下确定按钮
显示该银行卡类型的有效服务
根据用户选择结果进入转账画面
接受用户输入的转账对象账号
进入转账额输入画面
接受用户输入的转账额
与银行系统服务器通信,执行转账命令
显示是否需要其他服务画面
用户选择取卡,执行出卡动作,并提示客户取卡
检测用户取卡后显示待机画面

再看一下取款用例的基本路径:

代码语言:javascript
复制
显示待机画面
检测用户插入银行卡,执行进卡动作
显示语言选择画面
等待并处理用户选择语言
提款机显示用户认证画面
等待用户输入密码并按下确定按钮
显示该银行卡类型的有效服务
根据用户选择结果进入取款额输入画面
接受用户输入的取款额
与银行系统服务器通信,执行取款命令
进入处理中画面,同时将纸币搬运到出钞口
打开出钞口挡板
等待用户取走钞票
关闭出钞口挡板
显示是否需要其他服务画面
如果用户选择取卡,执行出卡动作,并提示客户取卡
检测用户取卡后显示待机画面

可以看到转账的用例和前一篇文章中的取款用例有很多相似的地方,我们可以将它们分别提取出来:

待机显示:

代码语言:javascript
复制
显示待机画面
检测用户插入银行卡,执行进卡动作

选择语言:

代码语言:javascript
复制
显示语言选择画面
等待并处理用户选择语言

用户认证:

代码语言:javascript
复制
显示用户认证画面
等待用户输入密码并按下确定按钮

选择服务:

代码语言:javascript
复制
显示该银行卡类型的有效服务
等待用户输入

输入账号:

代码语言:javascript
复制
进入转账画面
接受用户输入的转账对象账号

输入金额:

代码语言:javascript
复制
进入转账额输入画面
接受用户输入的转账额

执行转账动作

代码语言:javascript
复制
与银行系统服务器通信,执行转账命令

询问其他服务

代码语言:javascript
复制
显示是否需要其他服务画面
接受用户输入

退卡

代码语言:javascript
复制
执行出卡动作,并提示客户取卡

用例图中的包含关系

可以看到我们将一个转账用例分解为九个小的用例,而这里的取款用例和九个用例之间的关系就是包含关系也就是说:转账用例包含九个小用例。这种说法在EA的用例图中,使用下面的图表来表示包含关系:

上面的转账用例变成用例图就是下面的样子:

使用同样的方法,取款用例可以表示成下面的样子:

可以看到,除了绿色的执行去狂动作之外,所有的被包含用例都是在转账用例中出现过的。

还有一点需要注意的是,为了保证每个用例的完整性和通用性,我们对部分用例的内容进行了微调。这种微调在用例建模过程中是很常见的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 面向对象思考 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档