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

史铁生:

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

推着走打雪仗,

还带我偷西瓜,

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

却忘了我还在西瓜地里。

 

一、实验目的:

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.xdnf.cn/news/8503.html

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

相关文章

Zypher Network:全栈式 Web3 游戏引擎,服务器抽象叙事的引领者

近期,《黑神话:悟空》的爆火不仅让 AAA 游戏重回焦点,也引发了玩家与开发者的热议。Web2 游戏的持续成功导致部分 Web3 玩家们的倒戈,对比之下 Web3 游戏存在生命周期短且商业模式难以明确的问题,尤其在当前加密市场环…

C++11的简介

杀马特主页&#xff1a;羑悻的小杀马特.-CSDN博客 ------ ->欢迎阅读 欢迎阅读 欢迎阅读 欢迎阅读 <------- 目录 一列表初始化的变化&#xff1a; 二左右值即各自引用的概念&#xff1a; 2.1左右…

Java 上机实践3(分支与循环语句)

&#xff08;大家好&#xff0c;今天分享的是Java的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 实验一&#xff1a;回文数 一、实验目的 二、实验要求 三、程序代码 四、实验结果 实验二&#xff1a;猜数字…

[MRCTF2020]PYWebsite1

如果输入的密钥是对的那么我们就直接跳转到flag.php页面 那么我们直接访问&#x1f60e;&#xff0c;他不带我们去我们自己去. 那就用XFF呗. 知识点&#xff1a; 定义&#xff1a;X-Forwarded-For是一个HTTP请求头字段&#xff0c;用于识别通过HTTP代理或负载均衡方式连接到W…

实时离线融合计算的数据同步实践

实时批量融合计算时&#xff0c;一般需要批量将数据推送到hbase供实时使用。 本文将通过两个典型场景--累计场景与最新分区场景&#xff0c;讨论批量和实时衔接的设计方案&#xff0c;解决批量延迟可能导致的问题。 累计场景 在之前的文章中讲述了实时离线结合共同计算客户1…

怎么做自己公司的小程序

我是【码云数智】平台的黄导&#xff0c;今天分享&#xff1a;怎么做自己公司的小程序 企业小程序怎么制作&#xff0c;利用可视化小程序模板搭建&#xff0c;企业能够轻松跨越技术门槛&#xff0c;快速响应市场变化。 01、小程序制作流程 02、微信小程序开发多少钱 03、微…

外包干了5年,技术退步太明显了。。。。。

先说一下自己的情况&#xff0c;本科生生&#xff0c;19年通过校招进入杭州某软件公司&#xff0c;干了差不多五年的功能测试&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了五年的功能测试&#xff0c;已经…

Java | Leetcode Java题解之第530题二叉搜索树的最小绝对差

题目&#xff1a; 题解&#xff1a; class Solution {int pre;int ans;public int getMinimumDifference(TreeNode root) {ans Integer.MAX_VALUE;pre -1;dfs(root);return ans;}public void dfs(TreeNode root) {if (root null) {return;}dfs(root.left);if (pre -1) {pr…

仪表板展示|DataEase看中国:历年双十一电商销售数据分析

背景介绍 2024年“双十一”购物季正在火热进行中。自2009年首次推出至今&#xff0c;“双十一”已经成为中国乃至全球最大的购物狂欢节&#xff0c;并且延伸到了全球范围内的电子商务平台。随着人们消费水平的提升以及电子商务的普及&#xff0c;线上销售模式也逐渐呈现多元化…

机器人课程——使用TIA Portal V15博图软件进行西门子组态——带显示屏

一.打开TIA Portal V15博图软件创建项目 1.选择创建新项目 创建完成后选择PLC 二.创建完成后选择设备PLC (此处以S7-1200 1214FC DC/DC/DC 为例) 三.添加扩展板&#xff08;如有——这里以223-1BL32-0XB0为例&#xff09; 四.更改扩展版地址 五.添加触摸屏&#xff08;这里以…

Java代码与数据库纽带——JDBC

ok&#xff0c;看了题目&#xff0c;就可以知道今天要分享的是JDBC 讲这个这之前&#xff0c;想讲讲之前的。 之前我们操作数据库基本都是通过MySQL客户端&#xff0c;进行编写sql语句来操作的。 但是我们在开发中一般都是通过代码来操控数据库的。 而且在我们日常开发中&a…

Webserver(5.6)服务器压力测试

目录 webbench是linux上一款知名的优秀的web性能压力测试工具。 测试处在相同硬件上&#xff0c;不同服务的性能以及在不同硬件上同一个服务的运行状况 展示服务器的两项内容&#xff1a;每秒钟响应请求数和每秒钟传输数据量 webbench首先fork多个子进程&#xff0c;每个子进程…

MySQL数据库基础(一) MySQL安装及数据类型

目录 一、MySQL数据裤简介 二、MySQL数据的安装 2.1、MySQL安装 2.2、修改MySQL密码登录策略 三、数据库基础管理 3.1、连接方式及数据储存流程 3.2、库管理命令 3.3、表管理命令 3.4、记录管理命令 四、MySQL数据类型 4.1、常见信息种类 4.2、字符型 4.3、数值型 4.4、日期时间…

好用的远程控制安卓和IOS端的手机软件有哪些?

在数字化时代&#xff0c;我们的工作和娱乐活动越来越依赖于移动设备。无论是在家中、办公室还是旅途中&#xff0c;能够远程控制我们的设备成为了一种高效便捷的需求。市场上涌现出了许多远程控制软件&#xff0c;它们各具特色&#xff0c;旨在提供最佳的用户体验。那么&#…

领夹无线麦克风哪个牌子好?双十一选无线领夹麦克风避开选购陷阱

在多媒体和远程通信日益普及的今天&#xff0c;无线领夹麦克风已成为提升音质和便利性的关键&#xff0c;它们在视频制作、网络直播、在线教育等多个领域中扮演着重要角色。面对市场上众多的产品和技术参数&#xff0c;消费者往往感到无从下手。不过不用过于担心&#xff0c;在…

开发中使用UML的流程_01概述

目录 CIM-1:定义业务流程 CIM-2:分析业务流程 ​CIM-3:定义系统范围 ​PIM-1:分析系统流程 PIM-2:分析业务规则 PIM-3:定义静态结构 PIM-4:定义操作和方法 开发中使用UML的流程,主要分为7部分,具体如下: CIM-1:定义业务流程 定义及分析业务流程是为了尽快理…

ArcGIS/QGIS按掩膜提取或栅格裁剪后栅格数据的值为什么变了?

问题描述&#xff1a; 现有一栅格数据&#xff0c;使用ArcGIS或者QGIS按照矢量边界进行按掩膜提取或者栅格裁剪以后&#xff0c;其值的范围发生了变化&#xff0c;如下&#xff1a; 可以看到&#xff0c;不论是按掩膜提取还是进行栅格裁剪后&#xff0c;其值的范围均与原来栅…

劫持微信聊天记录并分析还原 —— 合并解密后的数据库(三)

本工具设计的初衷是用来获取微信账号的相关信息并解析PC版微信的数据库。 程序以 Python 语言开发&#xff0c;可读取、解密、还原微信数据库并帮助用户查看聊天记录&#xff0c;还可以将其聊天记录导出为csv、html等格式用于AI训练&#xff0c;自动回复或备份等等作用。下面我…

python数据结构基础(7)

本节学习最后一种数据结构---图,在很多问题中应用图可以帮助构建思维空间,快速理清思路,解决复杂问题. 图就是一些顶点的集合,这些顶点通过一系列边链接起来.根据边的有向和无向,图分为有向图和无向图.有时图的边上带有权重,本节暂时不将权重作为重点. 计算机通过邻接表或者邻…

NAS的软件和生态才是王道!谈谈群晖是如何凭实力“躺平”的

NAS的软件和生态才是王道&#xff01;谈谈群晖是如何凭实力“躺平”的 哈喽小伙伴们好&#xff0c;我是Stark-C~ 近几年随着大家对于数据存储和管理需求的增加&#xff0c;以及各大网盘变相收费和涨价&#xff0c;并且还不合时宜的爆出隐私泄露问题。而NAS&#xff08;网络附…