实验四 面向对象分析与设计——UML类图与时序图
一、实验目的:
掌握面向对象分析中静态结构模型与动态行为模型的基本思想。学会识别系统中的类、类的属性和操作以及类之间的关系,掌握UML类图的绘制方法。了解时序图的作用和组成元素,掌握UML时序图的绘制方法。
二、实验仪器及实验环境:
计算机,Windows 7,MS Office Visio
三、实验原理:
面向对象分析方法中的静态结构模型与动态行为模型。
四、实验内容及结果:
1、根据实验三中某图书管理系统的问题域描述以及所创建的用例模型,从静态结构模型的角度来分析识别系统中可能存在的实体类、类的属性,以及类之间的关系,并绘制类图。
(1)在图书管理系统中,列举出主要的实体类,明确各个类的作用(职责),并列举出类中的一些主要属性:
实体类名称 | 属性 |
Reader读者 | r_id:借阅账号 r_name:读者姓名 r_type_id:(通过id来判断读者属于哪个类别) 读者类别编号 r_quantity:读者借阅的数量 r_tel:读者联系方式 |
Book图书 | b_id:图书编号 b_name:图书的名称 bt_id:图书的类别 b_publisher:图书的出版社 b_author:图书的作者 b_isbn:图书的ISBN号 b_price:图书单价 b_status:图书的借阅状态(在馆或借出) |
ReaderType读者类别 | rt_id:读者类别编号 rt_name:读者类别名称 rt_maxquantity:该类读者允许借阅的最大数量 rt_maxdays:该类读者允许的最多借阅天数 rt_fineperday:该类读者图书超期罚款每天缴纳金额 |
BookType图书类别 | bt_id:图书类别编号 bt_name:图书类别名称 |
Record借阅记录 | record_id:借阅记录编号 r_id:借阅账号 b_id:图书编号 outDate:图书借出日期 |
(2)识别以上实体类之间的关系,绘制类图:
2、绘制时序图:
储户使用银行ATM系统进行取款操作:从储户插入银行卡开始,按照提示输入密码,然后选择“取款”,输入取款数额,最后提出现金,退卡。ATM取款看起来是很简单的事情,但是整个过程中各个对象之间要涉及到一系列的消息通信。这里以储户使用ATM系统“取款”为例,以下给出了“取款”的场景描述:
- 1储户将银行卡插入ATM系统的读卡机insertCard();
- 2读卡机将信息传给客户管理acceptCard();
- 3客户管理提出查询密码checkPass();
- 4显示屏显示给储户需要输入密码inputPassRequest();
- 5储户在输入设备输入密码inputPass();
- 6输入设备将输入的密码传递给客户管理transPass();
- 7客户管理请求事务管理确认密码的合法性requestPassLegal();
- 8事务管理确认密码的合法性(消息返回)返给客户管理PassLegal();
- 9客户管理通过显示屏询问服务类别queryKind();
- 10显示屏要求储户输入服务类别请求showServiceRequest();
- 11储户输入(输入设备)取款请求inputTakeRequest();
- 12输入设备向客户管理发出取款请求takeRequest();
- 13客户管理提出(显示屏)取款金额queryMoney();
- 14显示屏向储户发出取款数额请求showMoneyRequest();
- 15储户输入(输入设备)取款数额inputMoney();
- 16输入设备将储户输入的数额传递给客户管理transMoney();
- 17客户管理确认取款数额返回给显示屏queryOK();
- 18显示屏呈现给储户确认信息showOKRequest();
- 19储户输入确认信息给输入设备inputOK();
- 20输入设备将确认信息传递给客户管理OKInformation();
- 21客户管理请求事务管理确认数额的合法性requestMoneyLegal();
- 22事务管理确认数额的合法性返回给客户管理moneyLegal();
- 23事务管理向点钞机发出出钞请求requestTake();
- 24点钞机出钞票outMoney();(点钞机自己向自己发出消息请求,消息调用)
- 25储户取出钞票takeMoney();(点钞机向储户发出)
- 退卡outCard();
- 26储户向输入设备:输入一个退卡请求inputoutcardrequest()
- 27输入设备发送给客户管理outcardrequest()
- 28客户管理向读卡机outcardrequest()
- 29读卡机出卡(读卡自己向自己发出消息请求,消息调用)outcard()
- 30读卡机向储户(读卡机提醒储户取卡)takecard()
在以上的“取款”场景中涉及到以下对象:“储户”、“读卡机”、“显示屏”、“输入设备”、“客户管理”、“点钞机”、“事务管理”。它们之间通过消息传递,使功能正常运行,绘制其时序图:
相关文章:

实验四 面向对象分析与设计——UML类图与时序图
一、实验目的: 掌握面向对象分析中静态结构模型与动态行为模型的基本思想。学会识别系统中的类、类的属性和操作以及类之间的关系,掌握UML类图的绘制方法。了解时序图的作用和组成元素,掌握UML时序图的绘制方法。 二、实验仪器及实验环境&a…...

最短路径问题
如图,设定源点为D,终点为A,则D到A的最短路径是多少? 算法思路: 第一步,从源点D出发,此时能到达的选择是C和E,我们根据路径长度选择最少的作为下一个节点,于是选择C&…...

国内有哪些SAAS软件?SAAS软件有哪些优点?
国内有哪些SAAS软件?SAAS软件有哪些优点?不请自来答一下,通过SaaS软件与传统软件的对比来详细讲下SaaS软件有哪些优点? 配合以下内容食用更佳: 关于概念——深度详解什么是SaaS(软件即服务)关…...

分享两组不同的3D VR卡片
最近某音上出现了很多VR视频,转动手机可以看到手机界面未显示出来的场景。这种事情我觉得我们也可以做到。 所以两种不同的3D VR卡片来了: 第一种是横向或上下可以拖动极大的距离。卡片上的信息会随着拖动移动,但不会显示更多的信息&#x…...

外贸人如何精准开发客户?Facebook开发客户全攻略
现在做跨境的都了解的一个社媒平台就是Facebook了,因为很多人都会拿Facebook来开发客户,忙里偷闲,今天东哥就来聊聊用Facebook开发客户的一些心得。 用Facebook开发客户的心得 1、利用关键词搜索 使用行业相关的关键词、产品特定的关键词、相…...

一、Git安装(Git+TortoiseGit图形化)
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式…...
mysql死锁,如何产生?如何发现?如何处理?
1 产生死锁 就是资源互斥 例子如下 好的,请参考以下 SQL 语句来创建 base_account_item 表和向表中插入一些数据: CREATE TABLE base_account_item (id INT(11) NOT NULL,account_item_name VARCHAR(50) NOT NULL,PRIMARY KEY (id) ) ENGINEInnoDB DEF…...

YOLO V1-V3 简单介绍
目录 1. YOLO 2. YOLO V1 3. YOLO V2 4. YOLO V3 5. YOLO V3 SPP网络 5.1 Mosaic 图像增强 5.2 SPP 模块 5.3 CIou Loss 5.4 Focal loss 1. YOLO YOLO 是目标检测任务强大的算法,将目标检测的问题转换边界框和相关概率的回归问题,是目标检测…...

数据结构总结1:了解数据结构、时间复杂度、空间复杂度
后续可能会有补充和更改 目录 一、数据结构 1.算法介绍 二、时间复杂度、空间复杂度 三、练习 1.时间复杂度 2.空间复杂度 一、数据结构 数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。 数据结构和数据库的区…...
abstract class和interface有什么区别?
含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以…...

Kafka在Java项目中的应用
Kafka在Java项目中的应用 Docker 安装Kafka 一.首先需要安装docker,可看这篇文章安装docker 二.拉取zookeeper和KafKa镜像 docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafkaKafka组件需要向zookeeper进行注册,所以也需要安装zookeeper 三.启动zookeeper…...
理解分布式id生成算法SnowFlake
理解分布式id生成算法SnowFlake 分布式id生成算法的有很多种,Twitter的SnowFlake就是其中经典的一种。 概述 SnowFlake算法生成id的结果是一个64bit大小的整数,它的结构如下图: } public function __construct(){ $this->rnew…...

光纤收发器可以连接光模块吗?
随着科技的进步发展,城市信息化速度的加快,光通信产品在数据中心和安防监控等场景中的运用越来越广泛,而这之间的连接则需要光模块和光纤收发器来实现。很多用户对光模块和光纤收发器的使用有些疑虑,两者该如何连接?又…...

一文快速了解浏览器Sui Explorer
Sui作为一条基于第一原理重新设计和构建而成的L1公链,所有区块和交易信息皆公开透明,每个人都能自行查看。通过Sui链上浏览器,用户可以迅速了解链上的交易情况,比如当前的TPS和Gas价格,也可以使用Digest来查看特定交易…...
python中lambda、yield、map、filter、reduce的使用
1、 匿名函数lambda python中允许使用lambda关键字定义一个匿名函数。所谓的匿名函数就是说使用一次或者几次之后就不再需要的函数,属于“一次性”函数。 #例1:求两数之和 f lambda x, y: x y print(f(5, 1))#例2:求平方和 print((lambda…...

第十八章 使用LNMP架构部署动态网站环境
文章目录 第十八章 使用LNMP架构部署动态网站环境一、源码包程序1、源码包的优势2、基本步骤(1)、下载及解压源码包文件(2)、编译源码包代码(3)、生成二进制安装程序(4)、运行二进制…...

无人值守的IDC机房动环综合运维方案
企业数字化转型以及5G、物联网、云计算、人工智能等新业态带动了数据中心的发展,在国家一体化大数据中心及“东数西算”节点布局的推动下,数据中心机房已成为各大企事业单位维持业务正常运营的重要组成部分,网络设备、系统、业务应用数量与日…...

桌面远程工具推荐
目前市面上的远程工具多如牛毛,很多人不知道怎么选择,下面小编介绍两种桌面远程工具,它们都是跨平台的,均支持Windows,Mac OS,IOS和安卓,分别是RayLink,VNC,好用…...

MySQL高级——第15章_锁
第15章_锁 1. 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一-些敏感的数据(比如订单、金额等),我们就需要保证这个数据在任何 时刻最多只…...

【ROS】Ubuntu22.04安装ROS2(Humble Hawksbill)
0、版本说明 Ubuntu22.04对应的ROS2的版本为Humble Hawksbill(ros-humble) 如果不是在Ubuntu22.04中安装ROS,请参考下面Ubuntu和ROS的版本对应关系 1、更新apt包列表 $ sudo apt update2、设置编码 将ubuntu环境语言编码设置为en_US en_…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...