可视化建模与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接口

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python(自用查看版)

目录 1.注意事项 1.1 python的除法不是整除,得到的是浮点数 1.2算术符号基于数学的算术优先级。具体可自行查看。 1.3注释 1.4缩进 1.5换行 1.6常见关键字 1.7续行符 1.8报错 1.9赋值 1.10比较运算符 2.常量和表达式 3.变量 4.数据类型 4.1整型int …

TMDOG的Gin学习笔记_02——Gin集成支付宝支付沙箱环境

TMDOG的Gin学习笔记_02——Gin集成支付宝支付沙箱环境 博客地址:TMDOG的博客 作者自述: 最近忙着整理自己的项目代码,终于有时间更新一下博客。这次的内容是关于如何在Gin框架下集成支付宝的支付沙箱环境,具体包括如何初始化支付…

cmake could not find a package configuration file provided by “Microsoft.GSL“

通过查找 dir C:\vcpkg\installed\x64-windows /s /b | findstr Microsoft.GSL vspkg安装 git clone https://github.com/microsoft/vcpkg.git cd vcpkg .\bootstrap-vcpkg.bat .\vcpkg --version

cocos creator 3.8.3物理组件分组的坑

坑,坑的不行的大坑 group用的二进制的左移获取十进制的数值 目前是这样判断的,也不知道对不对,什么get、set Group没找到

【AI写作宝-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

计算机毕业设计Python流量检测可视化 DDos攻击流量检测与可视化分析 SDN web渗透测试系统 网络安全 信息安全 大数据毕业设计

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

2024.11最新Hexo+GitHub搭建个人博客

2024.11最新HexoGitHub搭建个人博客 一、Hexo介绍 Hexo 是一个快速、简洁且高效的博客框架,有丰富的主题和插件可供使用。 Hexo 使用 Markdown(或其他标记语言)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。这…

王道考研之数据结构

数据结构系列 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 数据结构 数据结构系列1.线性表1.1 线性表的定义和相关概念1.2 线性表的创销 增删查改 判空表长打印 2.顺序表2.1 顺序表定义和相关概念2.2 顺序表的静态实现2.3 顺序表的…

java导出word文件(手绘)

文章目录 代码细节效果图参考资料 代码细节 使用的hutool的WordUtil,WordUtil对poi进行封装,但是这一块的官方封装的很少,很多细节都没有。代码中是常见的绘制段落,标题、表格等常用api Word07Writer writer WordUtil.getWriter(…

LeetCode 0685.冗余连接 II:并查集(和I有何不同分析)——详细题解(附图)

【LetMeFly】685.冗余连接 II:并查集(和I有何不同分析)——详细题解(附图) 力扣题目链接:https://leetcode.cn/problems/redundant-connection-ii/ 在本问题中,有根树指满足以下条件的 有向 图。该树只有一个根节点&…

git原理与上传

言: git是一个软件,gitee/github是一个网站,这里有什么联系吗?我们身为一个程序员不可能不知道github,但是毕竟这是外国的网站,我们不翻墙的情况下,是无法访问的(或者就是太慢了,或…

Go语言的常用内置函数

文章目录 一、Strings包字符串处理包定义Strings包的基本用法Strconv包中常用函数 二、Time包三、Math包math包概述使用math包 四、随机数包(rand) 一、Strings包 字符串处理包定义 Strings包简介: 一般编程语言包含的字符串处理库功能区别…

React 入门课程 - 使用CDN编程React

1. 第一个React 注意&#xff1a;在vscode里&#xff0c;使用Live Server来运行html文件。 index.html <html><head><link rel"stylesheet" href"index.css"><script crossorigin src"https://unpkg.com/react17/umd/react.de…

苍穹外卖day09超出配送范围前端不提示问题

同学们在写苍穹外卖项目day09时调用了百度地图api来判断用户地址是否超出配送范围&#xff0c; 但是在黑马官方的课程或资料中&#xff0c;出现这样的问题时只会向用户端的控制台报错并不会提醒用户 如下图&#xff1a; 解决方法&#xff1a; 其实解决方法很简单只需要找到向…

ARXML汽车可扩展标记性语言规范讲解

ARXML: Automotive Extensible Markup Language &#xff08;汽车可扩展标记语言&#xff09; xmlns: Xml name space &#xff08;xml 命名空间&#xff09; xsd: Xml Schema Definition (xml 架构定义) 1、XML与HTML的区别&#xff0c;可扩展。 可扩展&#xff0c;主要是…

【开源项目】经典开源项目数字孪生智慧小镇——开源工程及源码

飞渡科技数字孪生小镇管理平台&#xff0c;依托自研数字孪生引擎平台&#xff0c;将5G、物联网、大数据、人工智能等数字化技术融合应用&#xff0c;采集、整合、应用小镇的规划、运营、管理等数据&#xff0c;实现特色小镇全域管理系统化以及精细化。 基于地理信息系统&#x…

探索 Move 编程语言:智能合约开发的新纪元

目录 引言 一、变量的定义 二、整型 如何在Move中表示小数和负数&#xff1f; 三、运算符 as运算符 布尔型 地址类型 四、什么是包&#xff1f; 五、什么是模块&#xff1f; 六、如何定义方法&#xff1f; 方法访问权限控制 init方法 总结 引言 Move 是一种专为区…

智能提醒助理系列-jdk8升级到21,springboot2.3升级到3.3

本系列文章记录“智能提醒助理”产品建设历程&#xff0c;记录实践经验、巩固知识点、锻炼总结能力。 本篇介绍技术栈升级的过程&#xff0c;遇到的问题和解决方案。 一、需求出发点 智能提醒小程序 当前使用的是jdk8&#xff0c;springboot2.3,升级到jdk21和springboot3.3 学…

算法|牛客网华为机试31-40C++

牛客网华为机试 上篇&#xff1a;算法|牛客网华为机试21-30C 文章目录 HJ31 单词倒排HJ32 密码截取HJ33 整数与IP地址间的转换HJ34 图片整理HJ35 蛇形矩阵HJ36 字符串加密HJ37 统计每个月兔子的总数HJ38 求小球落地5次后所经历的路程和第5次反弹的高度HJ39 判断两个IP是否属于同…

第六十三周周报 GCN-CNNGA

文章目录 week 63 GCN-CNNGA摘要Abstract1. 题目2. Abstract3. 文献解读3.1 Introduction3.2 创新点 4. 网络结构4.1 数据分析4.2 混合深度学习框架的发展4.3 Mul4.4 CNN block4.5 GCN block4.6 GRU block4.7 注意力机制4.8 模型评估标准 5. 实验结果5.1 不同邻接矩阵的性能评价…