【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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/240491.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

荣誉 | 第七在线(7thonline)荣获STIF2023年度数智化创新典范奖

12月15日&#xff0c;STIF2023 第四届国际科创节暨 DSC2023 国际数字服务大会&#xff08;数服会&#xff09;在北京隆重举行。 在本届科创节暨数服会活动评选中&#xff0c;经企业申报、评委会审议&#xff0c;第七在线&#xff08;7thonline&#xff09;AI智能零售商品计划库…

什么是集成测试?它和系统测试的区别是什么? 操作方法来了

01 什么是集成测试&#xff1f; 集成测试是软件测试的一种方法&#xff0c;用于测试不同的软件模块之间的交互和协作是否正常。集成测试的主要目的是确保不同的软件模块能够无缝协作&#xff0c;形成一个完整的软件系统&#xff0c;并且能够满足系统的需求和规格。 在集成测试…

typeorm联表查询:副表json格式放到主表字段下或多个副表字段并列主表字段

实体类字段不做映射&#xff0c;typeorm实现联查查询 1、副表json格式放到主表字段下 //goods表和member表联表&#xff0c;关系goods.id member.uid&#xff0c;member表数据json对象格式放到主表userInfo下 //leftJoinAndMapOne配合getMany实现 const builder await getCo…

【3D生成与重建】SSDNeRF:单阶段Diffusion NeRF的三维生成和重建

系列文章目录 题目&#xff1a;Single-Stage Diffusion NeRF: A Unified Approach to 3D Generation and Reconstruction 论文&#xff1a;https://arxiv.org/pdf/2304.06714.pdf 任务&#xff1a;无条件3D生成&#xff08;如从噪音中&#xff0c;生成不同的车等&#xff09;、…

[C++]模板进阶

目录 C模板进阶&#xff1a;&#xff1a; 非类型模板参数 模板的特化 函数模板特化 类模板特化 全特化 偏特化 模板的分离编译 模板总结 C模板进阶&#xff1a;&#xff1a; 非类型模板参数 模板参数可分为类型形参和非类型形参。 类型形参&#xff1a;出现在参数列表中&am…

浅谈Redis分布式锁(上)

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 不论面试还是实际工作中…

信息安全等级保护的定义与意义

目录 前言 信息安全等级保护定义 广义上 狭义上 技术和管理 信息安全的基本要素 信息安全等级保护的意义 当前形式 形式严峻 国家安全 三个基本一个根本 预期目标 最终效果 实际意义 前言 信息安全等级保护是对信息和信息载体按照重要性等级分级进行保护的一种…

Windows平台开发需要掌握的基础知识

windows本身也是一个软件。在这个软件中进行开发时&#xff0c;我们需要对它有个基础的了解&#xff0c;这样能让我们的开发过程更顺畅一些。 下面我就来说一下我们需要关注的基础知识点。 环境变量 有时候我们的程序执行&#xff0c;需要基于一些基础的库。比如Java运行&am…

设计模式之-命令模式,快速掌握命令模式,通俗易懂的讲解命令模式以及它的使用场景

系列文章目录 设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式&#xff0c;5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式&#xff0c;每一种模式的概念、使用…

matlab 最小二乘拟合平面(直接求解法)

目录 一、算法原理二、代码实现三、算法效果本文由CSDN点云侠原创,原文链接。爬虫网站自重。 一、算法原理 平面方程的一般表达式为: A x + B y +

【Skynet 入门实战练习】事件模块 | 批处理模块 | GM 指令 | 模糊搜索

文章目录 前言事件模块批处理模块GM 指令模块模糊搜索最后 前言 本节完善了项目&#xff0c;实现了事件、批处理、模糊搜索模块、GM 指令模块。 事件模块 什么是事件模块&#xff1f;事件模块是用来在各系统之间传递事件消息的。 为什么需要事件模块&#xff1f;主要目的是…

C# 设置文本框只能输入数字和小数点

private void input_weight_KeyPress(object sender, KeyPressEventArgs e) { //数字、小数点 if (((int)e.KeyChar < 48 || (int)e.KeyChar > 57) && (int)e.KeyChar ! 8 && (int)e.KeyChar ! 46) e.Handled true; //…

Spring源码分析 @Autowired 是怎样完成注入的?究竟是byType还是byName亦两者皆有

1. 五种不同场景下 Autowired 的使用 第一种情况 上下文中只有一个同类型的bean 配置类 package org.example.bean;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class FruitCo…

推箱子小游戏

--print("开发流程步骤&#xff1a;I、绘制推箱子地图并初始化 ----- 几*几大小的地图 \n\n II、根据宏定义和推箱子地图上的数字来选择不同的图形\n\n III、获取玩家坐标 -----------重点\n\n …

html旋转相册

一、实验题目 做一个旋转的3d相册 二、实验代码 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&qu…

AtomHub 开源容器镜像中心开放公测,国内服务稳定下载

由开放原子开源基金会主导&#xff0c;华为、浪潮、DaoCloud、谐云、青云、飓风引擎以及 OpenSDV 开源联盟、openEuler 社区、OpenCloudOS 社区等成员单位共同发起建设的 AtomHub 可信镜像中心正式开放公测。AtomHub 秉承共建、共治、共享的理念&#xff0c;旨在为开源组织和开…

webpack 常见面试题

1、什么是webpack&#xff08;必会&#xff09; webpack是一个打包模块化javascript的工具&#xff0c;在webpack里一切文件皆模块&#xff0c;通过loader转换文件&#xff0c;通过plugin注入钩子&#xff0c;最后输出由多个模块组合成的文件&#xff0c;webpack专注构建模块化…

医保购药小程序:智能合约引领医疗数字革新

在医疗领域&#xff0c;医保购药小程序通过引入智能合约技术&#xff0c;为用户提供更为高效、安全的购药体验。本文将通过简单的智能合约代码示例&#xff0c;深入探讨医保购药小程序如何利用区块链技术中的智能合约&#xff0c;实现医保结算、购药监控等功能&#xff0c;为医…

获取 jira filter issue count 方法

文章目录 一、[使用 REST API(自 5.0 起)获取total issue count](https://jira.atlassian.com/browse/JRA-29903)。Step 1: get the filter search URLStep 2: run the search with maxResults=0二、使用 jira-python 获取 total issue count一、使用 REST API(自 5.0 起)获…

leetCode算法—13. 罗马数字转整数

13. 罗马数字转整数 难度&#xff1a;简单 * 罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如&#xff0c; 罗马数字 2 写做 II &#xff0c;即为两个并列的…