当前位置: 首页 > news >正文

【UML】第8篇 用例图(3/3)

目录

一、用例的关系

1.1 泛化(Generalization)关系

1.2 包含(include)关系

1.3  扩展关系

二、用例表示例


不是非要把电影改成连续剧,给大家播,确实是时间和精力有限。

用例图,虽然简单,其实可说的内容也不少。

看前2篇,地址在这里:

【UML】第6篇 用例图(1/3)-CSDN博客

【UML】第7篇 用例图(2/3)-CSDN博客

一、用例的关系

用例之间的关系,主要包括泛化、包含和扩展三种。

1.1 泛化(Generalization)关系

用例的泛化关系可以理解为同一业务目的的不同实现路径。

这就是泛化关系,我们说过,泛化感觉有点别扭,是的,就是要从具体指向一般。可以理解为继承。

支付是父用例,不用管具体的支付实现,定义好属性和接口即可。

1.2 包含(include)关系

如上图,这是一个典型的包含关系,提现了包含关系的两种情况。

  1. 反复可能被用到的用例,适合单独拿出来,作为一个独立的用例来分析和看待,但是可以在表达时,被其他用例包含。比如上图的身份验证。这是一个让用户无感的功能,因此可以不从参与者直接连线,但是身份验证非常重要,预借图书、 归还图书,都要用到,因此用包含的方式,一举两得。
  2. 查询图书,是参与者要具体执行的目标,因此要单独列为用例。同时,这个用例也被预借图书用例包含,因此用包含符号表示。

注意,包含符号,带有<<include>>构造型。

1.3  扩展关系

扩展关系中,基本用例是完整的,执行基本用例不一定执行扩展用例;但包含关系中的基本用例不完整,执行基本用例必须执行包含用例。

扩展关系使用带构造型的虚线箭头表示。箭头由扩展用例指向基本用例。

例如:<<extend>>

这里一定要注意,是谁指向了谁,扩展用例去指向基本用例。没有扩展用例,基本用例也是能独立工作的。扩展用例,可以理解为是基本用例的特殊情况。

例如缴纳罚款,就是扩展用例,归还图书,是基本用例。因为归还图书,不一定要缴纳罚款。 

二、用例表示例

如图,这是一个标准的用例文档描述。

用例编号UC2023001-01
 用例名称借阅图书
 用例简述读者把要借阅的图书和一卡通送到借书台,图书管理员使用该功能帮助读者完成借书操作。
参与者图书馆工作人员
相关用例UC2023001-02(核验身份),UC2023001-06(缴纳罚款)
 前置条件
  • 图书馆工作人员登录到借阅系统
  • 读者没有超期图书
  • 读者没有欠款
基本事件流
  1. 读者刷取一卡通;
  2. 系统读取一卡通信息,并检查一卡通信息和读者信息的有效性;
  3. 系统检查该读者是否有超期图书和欠款信息;
  4. 系统读取读者已借阅的图书信息列表;
  5. 图书馆工作人员扫描读者借阅的每本图书的条形码;
  6. 系统获取图书信息,并显示在借阅列表中;
  7. 扫描完毕后,图书馆工作人员确认借阅的图书信息;
  8. 系统记录本次借阅信息;
  9. 图书馆工作人员将借阅册数和归还日期告知读者;
  10. 读者将一卡通和借出的书籍带走。
备选事件流

2a:若不是有效的一卡通,系统给出提示;
2b:若一卡通未绑定读者信息,系统给出提示;
2c:若一卡通绑定的读者信息被限制借阅,系统给出提示;
2d:若读者当前已借阅册数达到最大值,给出提示,并禁止借阅。

3a:若读者有超期图书未归还,则给出提示,并禁止执行借阅操作;

3b:若读者有欠款信息,系统给出提示        

注:序号和上面的基本事件流对应。

后置条件
  • 更新借出的书籍状态为“已借出”;
  • 更新读者的已借阅册数;
  • 系统创建一条借阅记录。
其它说明扫描的图书信息应能快速显示到借阅列表的最上端,供工作人员能及时核对信息是否一致。
编写人giszz编写日期2023-09-21
修改记录2023-09-22:添加【其它说明】内容
审核giszz审核日期2023-09-23

用例图部分完,敬请关注,后续更精彩。

相关文章:

  • opencv 传统图像识别检测
  • Java 中单例模式的常见实现方式
  • 计算机网络 第五章(运输层)【下】
  • js 字符串功能转换解析
  • ubuntu v2ray
  • JDBC常见的几种连接池使用(C3PO、Druid、HikariCP 、DBCP)
  • 代码随想录第三十六天(一刷C语言)|背包问题理论基础分割等和子集
  • 【稳定检索|投稿优惠】2024年区域经济与经济转型国际学术会议(IACREET 2024)
  • 2023年度佳作:AIGC、AGI、GhatGPT 与人工智能大模型的创新与前景展望
  • Elasticsearch的批量bulk 提交 写入的方式会有顺序问题吗?
  • 设计模式(三)-结构型模式(3)-装饰模式
  • 2023.12.20力扣每日一题
  • 苏宁易购商品详情API:电商实时数据
  • Linux开发工具——vim篇
  • Ubuntu系统的基础操作和使用
  • 【node学习】协程
  • Akka系列(七):Actor持久化之Akka persistence
  • Create React App 使用
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • ES6之路之模块详解
  • gcc介绍及安装
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Laravel 菜鸟晋级之路
  • linux学习笔记
  • Markdown 语法简单说明
  • node 版本过低
  • Nodejs和JavaWeb协助开发
  • nodejs实现webservice问题总结
  • SpingCloudBus整合RabbitMQ
  • Spring-boot 启动时碰到的错误
  • ucore操作系统实验笔记 - 重新理解中断
  • vuex 学习笔记 01
  • vue的全局变量和全局拦截请求器
  • 服务器从安装到部署全过程(二)
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 基于Android乐音识别(2)
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 面试遇到的一些题
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 《码出高效》学习笔记与书中错误记录
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • #include到底该写在哪
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #Z0458. 树的中心2
  • $refs 、$nextTic、动态组件、name的使用
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (C#)获取字符编码的类
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (分布式缓存)Redis哨兵
  • (力扣题库)跳跃游戏II(c++)
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (四)模仿学习-完成后台管理页面查询
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子