可视化建模与UML《类图实验报告》

news2024/11/13 1:53:32

史铁生:

余华和莫言扛着我上火车,

推着走打雪仗,

还带我偷西瓜,

被人发现后他们拔腿就跑,

却忘了我还在西瓜地里。

 

一、实验目的:

1、熟悉类图的构件事物。

2、熟悉类之间的泛化、依赖、聚合和组合关系

3、熟悉类图中抽象类、类的静态成员和抽象成员

4、绘制类图,进行系统过的静态建模

 

二、实验环境:

window7 | 10 | 11 +  EA15

三、实验内容:

根据下面的描述,绘制类图:

1、图形(Shape)可分为圆形(Circle)、 矩形(Rectangle)、 椭圆形(Ellipse)等具体图形, 在 Shape

类中提供了一个抽象的 draw()方法用于绘制图形, 而在具体的图形类中实现该抽象 draw()方法。

提供一个图形工厂类(ShapeFactory), 该类提供一个静态方法 createShape(char type), 其

返回类型为 Shape, 参数 type 为所需绘制图形对应的代码, 例如“c” 表示圆形, “r” 表示矩形,“e” 表示椭圆形等, 在 createShape()方法中, 可以使用条件语句来判断所需绘制图形的类型, 并根据参数的不同返回不同的具体形状对象。【注:“创建关系” 是一种特殊的“依赖关系”】;

2、某商场会员管理系统包含一个会员类(Member), 会员的基本信息包括会员编号、 会员姓名、 联系电话、 电子邮箱、 地址等, 会员可分为金卡会员(GoldMember)和银卡会员(SilverMember)两种, 不同类型的会员在购物时可以享受不同的折扣; 每个会员可以拥有一个或多个订单(Order), 每一个订单又可以包含至少一条商品销售信息(ProductItem), 商品销售信息包括订单编号、 商品编号、 商品数量、 商品单价和折扣等; 每一条商品销售信息对应一类商品(Product), 商品信息包括商品编号、 商品名称、 商品单价、 商品库存量、 商品产地等。

四、实验步骤:

第一题:

1、分析有几个类以及它们的关系:

图形类(shape) 抽象类

圆形类(circle)具体图形类

矩形(Rectangle)具体图形类

椭圆形类(Ellipse)具体图形类

图形工厂类(ShapeFactory)

2、补充各个类之间的属性和方法

图形类(shape): angle(角度,图形角度不一)、type(绘制图形对应的代码)、draw(抽象方法 绘制图形)

圆形类(circle):实现draw()

矩形(Rectangle):实现draw()

椭圆形类(Ellipse):实现draw()

图形工厂类(ShapeFactory):CreateShape(创建图形方法接收字符类型),Shape(返回特定对象类型),根据字符类型决定返回哪个形状实例

3、确定各个类之间的关系

第二题:

1、分析有几个类以及它们的关系:

Member(会员类)

GoldMember(金卡会员类)

SilverMember(银卡会员类)

Order(订单类)

ProductItem(产品信息类)

Product(产品类)

2、填充各个类之间的属性和方法

Member(会员类):id(会员编号)、name(会员姓名)、phone(联系电话)、email(电子邮箱)、address(地址)、discount(折扣方法)、order(订单)

GoldMember(金卡会员类):discount(方法)

SilverMember(银卡会员类):discount(方法)

Order(订单类):order id(订单编号)、order number(订单数量)、member(关联的会员)、addProduct(添加产品信息)

ProductItem(产品信息类):order id(订单编号)、product id(商品编号)、product number(商品数量)、product price(商品单价)、discount(折扣)

Product(产品类):id(商品编号)、name(商品名称)、price(商品单价)、number(商品库存)、address(商品产地)

3、确定各个类之间的关系

五、实验结果: 

第一题:

第二题: 

 

六、实验心得:

这次实验重点回顾了如何识别并表示类、聚合和关联(类之间的依赖关系),让我对类图的绘制更加得心应手,也加深了我对各个类之间关系的梳理。

1.继承

表示子类可以从父类继承属性和操作。在UML中,继承用一条带空心三角形的实现表示,箭头指向父类。

2.依赖

表示一个类的变化必然会影响到另一个类(反之则未然)。在UML中,依赖用一条带箭头的虚线表示,箭头指向被依赖的类

3.聚集:表示部分与整体的关系。部分可以独立于整体而存在,聚集用带空心菱形的实线表示,菱形指向整体。

4.组合:表示部分与整体的关系,两者相依相存,存在相同的生命周期。组合用带实心菱形的实线表示,菱形指向整体。

5.接口:类A定义了某些属性和操作,但它的有些功能实际上是类B实现的,A只是描述了这些规范,那么A就是B的接口,A和B的关系用一条带空心三角形箭头的虚线来表示,箭头指向A接口

通过实际操作,学会了如何组织类图的层次结构,如何合理的分解复杂系统,以及如何使用泛型和多态来增强模型的灵活性。

这次实验让我认识到良好的类图对于理解和交流系统架构的重要性,同时也可以指出需要进一步提高的地方。

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

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

相关文章

基于梧桐数据库的实时数据分析解决方案

一、背景 在当今信息时代,数据的价值不言而喻。然而,处理海量数据并将其转化为有意义的洞察力是一项艰巨的任务。传统的数据处理方法已经无法满足我们日益增长的需求。为了满足这一挑战,实时数据处理系统应运而生。 ​ 实时数据处理系统是一…

javascript实现国密sm4算法(支持微信小程序)

概述: 本人前端需要实现sm4计算的功能,最好是能做到分多次计算。 本文所写的代码在现有sm4的C代码,反复测试对比计算过程参数,成功改造成sm4的javascript代码,并成功验证好分多次计算sm4数据 测试平台: …

jmeter常用配置元件介绍总结之jsr223执行python脚本

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之jsr223执行python脚本 1.安装jsr223执行python插件2.基础语法介绍2.1.log2.2.parameters向脚本传参与接参2.3.vars2.4.props2.5.prev 3.常用脚本3.1.MD5加密单个参数:3.2.MD5加密多个参数:3.3.URLe…

【MongoDB】MongoDB的聚合(Aggregate、Map Reduce)与管道(Pipline) 及索引详解(附详细案例)

文章目录 MongoDB的聚合操作(Aggregate)MongoDB的管道(Pipline操作)MongoDB的聚合(Map Reduce)MongoDB的索引 更多相关内容可查看 MongoDB的聚合操作(Aggregate) 简单理解&#xff…

快速了解SpringBoot 统一功能处理

拦截器 什么是拦截器: 拦截器是Spring框架提供的重要功能之一,主要进行拦截用户请求,在指定方法前后,根据业务需求,执行预先设定的代码。 也就是说,允许开发⼈员提前预定义⼀些逻辑,在⽤⼾的请求响应前后执⾏.也可以…

百兆网络变压器在无人机系统起到什么作用

华强盛电子 导读: 百兆网络变压器(通常指的是100M Ethernet Transformer)在无人机系统中扮演着重要的角色,尤其是在网络通信和电气隔离方面 1.电气隔离 网络变压器通过提供电气隔离,帮助保护无人机的电子设备免受电流…

在双显示器环境中利用Sunshine与Moonlight实现游戏串流的同时与电脑其他任务互不干扰

我和老婆经常会同时需要操作家里的电脑,在周末老婆有时要用电脑加班上网办公,而我想在难得的周末好好地Game一下(在客厅用电视机或者平板串流),但是电脑只有一个,以往我一直都是把电脑让给老婆,…

【Vue】Vue3.0(十七)Vue 3.0中Pinia的深度使用指南(基于setup语法糖)

上篇文章: 【Vue】Vue3.0(十一)Vue 3.0 中 computed 计算属性概念、使用及示例 🏡作者主页:点击! 🤖Vue专栏:点击! ⏰️创作时间:2024年11月10日15点23分 文章…

深度学习基础练习:从pytorch API出发复现LSTM与LSTMP

2024/11/5-2024/11/7: 前置知识: [译] 理解 LSTM(Long Short-Term Memory, LSTM) 网络 - wangduo - 博客园 【官方双语】LSTM(长短期记忆神经网络)StatQuest_哔哩哔哩_bilibili 大部分思路来自于: PyTorch LSTM和LSTMP…

【芯智雲城】Sigmastar星宸科技图传编/解码方案

一、图传技术简介 图传是指将图像或媒体内容从一个设备传输到另外一个设备的技术,传输的媒介可以是无线电波、光纤、以太网等。图传系统主要由图像采集设备、传输设备和接收设备组成,图像采集设备负责采集实时图像,传输设备将采集到的图像转…

JavaFX史上最全教程 - Shape - JavaFX矩形椭圆

avaFX Shape类定义了常见的形状,如线,矩形,圆,Arc,CubicCurve,Ellipse和QuadCurve。 在场景图上绘制矩形需要宽度,高度和左上角的(x,y)位置。 要在JavaFX中…

【Windows修改Docker Desktop(WSL2)内存分配大小】

记录一下遇到使用Docker Desktop占用内存居高不下的问题 自从使用了Docker Desktop,电脑基本每天都需要重启,内存完全不够用,从16g扩展到24,然后到40G,还是不够用;打开Docker Desktop 运行时间一长&#x…

使用QLoRA和自定义数据集微调大模型

大家好,大语言模型(LLMs)对自然语言处理(NLP)的影响是非常深远的,不仅提高了任务效率,还催生出新能力,推动了模型架构和训练方法的创新。尽管如此强大,但LLMs也有局限&am…

Mac M1 Docker创建Rocketmq集群并接入Springboot项目

文章目录 前言Docker创建rocketmq集群创建rocketmq目录创建docker-compose.yml新增broker.conf文件启动容器 Springboot 接入 rocketmq配置maven依赖修改appplication.yml新增消息生产者新增消费者测试发送消息 总结 前言 最近公司给配置了一台mac,正好有时间给装一…

golang分布式缓存项目 Day2

注:该项目原作者:https://geektutu.com/post/geecache-day1.html。本文旨在记录本人做该项目时的一些疑惑解答以及部分的测试样例以便于本人复习。 支持并发读写 接下来我们使用 sync.Mutex 封装 LRU 的几个方法,使之支持并发的读写。在这之…

abap 可配置通用报表字段级日志监控

文章目录 1.功能需求描述1.1 功能1.2 效果展示2.数据库表解释2.1 表介绍3.数据库表及字段3.1.应用日志数据库抬头表:ZLOG_TAB_H3.2.应用日志数据库明细表:ZLOG_TAB_P3.3.应用日志维护字段配置表:ZLOG_TAB_F4.日志封装类5.代码6.调用方式代码7.调用案例程序demo1.功能需求描述 …

材质(三)——材质参数集和材质函数

a.之前是针对材质在材质蓝图里面 类似 于静态更改的方法, b.材质参数集 ,对外开放参数,可以手动更改,已然是一种封闭的静态更改方法 c.那么材质函数,将参数集对外开放,可以在关卡蓝图 通过程序 算法 去动…

随机采样之接受拒绝采样

之前提到的逆变换采样(Inverse Transform Sampling)是一种生成随机样本的方法,它利用累积分布函数(CDF)的逆函数来生成具有特定分布的随机变量。以下是逆变换采样的缺点: 计算复杂性:对于某些分…

软件设计师:排序算法总结

一、直接插入 排序方式:从第一个数开始,拿两个数比较,把后面一位跟前面的数比较,把较小的数放在前面一位 二、希尔 排序方式:按“增量序列(步长)”分组比较,组内元素比较交换 假设…

信息安全工程师(78)网络安全应急响应技术与常见工具

前言 网络安全应急响应是指为应对网络安全事件,相关人员或组织机构对网络安全事件进行监测、预警、分析、响应和恢复等工作。 一、网络安全应急响应技术 网络安全应急响应组织 构成:网络安全应急响应组织主要由应急领导组和应急技术支撑组构成。领导组负…