实验四 面向对象分析与设计——UML类图与时序图

news/2025/2/19 18:34:10/

一、实验目的:

掌握面向对象分析中静态结构模型与动态行为模型的基本思想。学会识别系统中的类、类的属性和操作以及类之间的关系,掌握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()

在以上的“取款”场景中涉及到以下对象:“储户”、“读卡机”、“显示屏”、“输入设备”、“客户管理”、“点钞机”、“事务管理”。它们之间通过消息传递,使功能正常运行,绘制其时序图:

 


http://www.ppmy.cn/news/71620.html

相关文章

C++14中lambda表达式新增加的features的使用

lambda表达式是在C11中引入的,它们可以嵌套在其它函数甚至函数调用语句中,C11中lambda表达式的使用参考:https://blog.csdn.net/fengbingchun/article/details/52653313 lambda表达式语法如下:除capture和body是必须的&#xff0c…

Windows免安装MySQL8.0

Windows免安装MySQL8.0 Windows 上的 MySQL 分为安装版和免安装版。 本文介绍如何在 Windows 上配置免安装版的 MySQL 8.0。 1、下载并安装 VC_redist.x64.exe Windows 版的 MySQL 8.0 依赖 Microsoft Visual C 2019 Redistributable Package(VC_redist.x64.exe…

io io server disconnect 客户端自动断开怎么办

在socket.io中,如果客户端自动断开连接,有几种常见的情况,例如网络中断或客户端页面被关闭。你可以通过以下方法处理客户端自动断开连接的情况: 在服务器端处理断开连接事件:在服务器端的socket连接处理函数中&#x…

浙江省选模拟题 圈草地

题目描述 在一片 n n n\times n nn的方格地上&#xff0c;种着 n n n块草地&#xff0c;每行每列都有且仅有一块草地。 现在你可以选择两块草地 ( x 1 , y 1 ) (x_1,y_1) (x1​,y1​)和 ( x 2 , y 2 ) (x_2,y_2) (x2​,y2​)&#xff0c;满足 x 1 < x 2 x_1<x_2 x1​&l…

MADDPG-学习笔记(2)

注意&#xff1a;进行本文的实验前&#xff0c;为了加快训练速度&#xff0c;进行了参数调整 num-episodes&#xff1a;由60000改成了10000 lr:由0.01改成了0.1 batch-size:由1024改成了32 1.报错 1.1 AttributeError: Scenario object has no attribute benchmark_data …

头歌计算机组成原理实验—运算器设计(9)第9关:原码一位乘法器设计

第9关&#xff1a;原码一位乘法器设计 实验目的 学生掌握原码一位乘法运算的基本原理&#xff0c;熟练掌握 Logisim 寄存器电路的使用&#xff0c;能在 Logisim 平台中设计实现一个 8*8位的无符号数乘法器。 视频讲解 ####实验内容 在 alu.circ 文件中的原码一位乘法器子电…

异常和中断

异常和中断机制 ​ 现代计算机中都配有完善的异常和中断处理系统&#xff0c;CPU的数据通路中有相应的异常检测和响应逻辑&#xff0c;外设接口中有相应的中断请求和控制逻辑&#xff0c;操作系统中有相应的中断服务程序。 异常和中断的基本概念 异常&#xff08;内中断&#…

ansible使用parted划分磁盘报Error: Partition(s) on /dev/sda are being used.

使用ansible划分磁盘报错&#xff1a;Error: Partition(s) on /dev/sda are being used. FAILED! > {"changed": false, "err": "Error: Partition(s) on /dev/sda are being used.\n", "msg": "Error while running parted …