E2、UML类图顺序图状态图实训

一、实验目的

在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。在掌握面向对象七个设计原则基础上,能够在具体软件设计中能实际运用这些原则来提高系统的可维护性。

二、实验工具

1.Star UML,NetBeans,eclipse,Myeclipse 软件。

2.Windows系统PC机。

三、实验要求

1. 《设计模式》教材P23页思考与练习第1、2、3题。

四、实验内容

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

    1、Member(会员):

        属性:  Mnumber(会员编号): String、 Mname(会员姓名): String、   Mcall(联系电话): int、 Memail(电子邮箱): String、Maddress(地址): String。

会员类是其他会员类型的基类,可以进一步细分为金卡会员(GoldMember)和银卡会员(SilverMember)。

  1. GoldMember(金卡会员):

 继承自Member类。金卡会员在购物时可享受特定的折扣。

  1. SilverMember(银卡会员):

继承自Member类。 银卡会员在购物时可享受特定的折扣。

  1. Order(订单):

属性: OderNumber(订单编号): String。一个会员可拥有一个或多个订单。

  1. Productltem(商品销售信息):

属性:  Order(订单): void方法,可能表示订单的创建或处理)、 unit_price(单价): double、   discount(折扣): double、 product_number(商品编号): int、 Quantity(数量): int、Order_number(订单编号): int、每个订单可以包含至少一条商品销售信息。

6、  Product(商品):

        属性: Product_number(商品编号): int、  product_name(商品名称): String、unit_price(单价): double、 inventory(库存量): int、 product_origin(商品产地): String、每一条商品销售信息对应一类商品。

7、类之间的关系:

(1)泛化关系:Member类是金卡会员(GoldMember)和银卡会员(SilverMember)的基类,表示金卡会员和银卡会员都是会员的一种。

    (2)关联关系:一个会员(Member)可以拥有多个订单(Order),表示会员与订单之间的一对多关系。

    (3)关联关系:一个订单(Order)可以包含多个商品销售信息(Productltem),表示订单与商品销售信息之间的一对多关系。

    (4)关联关系:一个商品销售信息(Productltem)对应一个商品(Product),表示商品销售信息与商品之间的一对一关系。

  1. 顺序图:图书管理员打开借书界面,输入借书信息提交借书请求;

系统证借书卡状态,如果该借书卡未借书:则记录借书信息修改图书状态借书卡状态,并提示借书成功,否则提示借书失败

 

  1. 某销售信息管理系统中:销售部员工可以提交订单,刚提交的订单为“初始”状态;系统管理员可以处理订单,如果订单无误,则修改订单为“备货”状态,否则将订单退还给提交订单的销售部员工修改,员工此时可以取消订单;仓库管理员备货完毕后可将订单状态改为“发货”状态;销售部员工在确认客户已经收到货物后,可将订单改为“关闭”状态。绘制状态图描述上述过程。

  • 实验思考

通过本次实验,我更加明确了面向对象设计原则在提高系统复用性和可维护性方面的重要性。在设计类图时,我特别注意了如何合理地应用封装、继承和多态等原则,以确保设计的合理性和高效性。

在设计商场会员管理系统的类图时,我学习到了如何将现实世界的问题抽象成计算机世界中的类和对象。通过泛化、关联等关系,我能够清晰地表达出不同类之间的关系,这对于后续的系统开发和维护非常关键。

顺序图帮助我理解了系统操作的动态过程。在绘制图书借阅系统的顺序图时,我学会了如何通过顺序图来描述对象间的交互过程,这对于理解系统的运行机制和调试程序非常有帮助。

通过绘制销售信息管理系统的状态图,我深入理解了状态图在描述对象状态变化中的作用。状态图不仅帮助我清晰地展示了订单状态的流转,也让我认识到在设计系统时需要考虑的各种状态转换条件。

实验让我意识到理论知识与实践操作的结合是至关重要的。通过将《设计模式》中的理论应用到实际的软件设计中,我能够更好地理解

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

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

相关文章

Angular面试题汇总系列一

1. 如何理解Angular Signal Angular Signals is a system that granularly tracks how and where your state is used throughout an application, allowing the framework to optimize rendering updates. 什么是信号 信号是一个值的包装器,可以在该值发生变化时…

我要成为算法高手-递归篇

目录 题目1:汉诺塔题目2:合并两个有序链表题目3:反转链表题目4:两两交换链表中的结点题目5:Pow(x,n) 题目1:汉诺塔 面试题 08.06. 汉诺塔问题 - 力扣(LeetCode) 解题思路&#xff1…

【大数据技术基础】 课程 第8章 数据仓库Hive的安装和使用 大数据基础编程、实验和案例教程(第2版)

第8章 数据仓库Hive的安装和使用 8.1 Hive的安装 8.1.1 下载安装文件 访问Hive官网(http://www.apache.org/dyn/closer.cgi/hive/)下载安装文件apache-hive-3.1.2-bin.tar.gz 下载完安装文件以后,需要对文件进行解压。按照Linux系统使用的…

js.二叉树的层序遍历2

链接:107. 二叉树的层序遍历 II - 力扣(LeetCode) 题目: 给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历&#xff09…

kafka生产者和消费者命令的使用

kafka-console-producer.sh 生产数据 # 发送信息 指定topic即可 kafka-console-producer.sh \ --bootstrap-server bigdata01:9092 \ --topic topicA # 主题# 进程 29124 ConsoleProducer kafka-console-consumer.sh 消费数据 # 消费数据 kafka-console-consumer.sh \ --boo…

基于Springboot的心灵治愈交流平台系统的设计与实现

基于Springboot的心灵治愈交流平台系统 介绍 基于Springboot的心灵治愈交流平台系统,后端框架使用Springboot和mybatis,前端框架使用Vuehrml,数据库使用mysql,使用B/S架构实现前台用户系统和后台管理员系统,和不同级别…

从入门到精通数据结构----四大排序(上)

目录 首言: 1. 插入排序 1.1 直接插入排序 1.2 希尔排序 2. 选择排序 2.1 直接选择排序 2.2 堆排序 3. 交换排序 3.1 冒泡排序 3.2 快排 结尾: 首言: 本篇文章主要介绍常见的四大排序:交换排序、选择排序、插入排序、归并排…

SpringCloud+SpringCloudAlibaba学习笔记

SpringCloud 服务注册中心 eureka ap 高可用 分布式容错 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency><groupId…

Sentinel服务保护

Sentinel是阿里巴巴开源的一款服务保护框架&#xff0c;目前已经加入SpringCloudAlibaba中。官方网站&#xff1a; home | Sentinel Sentinel 的使用可以分为两个部分: 核心库&#xff08;Jar包&#xff09;&#xff1a;不依赖任何框架/库&#xff0c;能够运行于 Java 8 及以…

【Redis 】Bitmap 使用

Redis Bitmap介绍 Redis Bitmap 是一种特殊的数据类型&#xff0c;它通过字符串类型键来存储一系列连续的二进制位&#xff08;bits&#xff09;&#xff0c;每个位可以独立地表示一个布尔值&#xff08;0 或 1&#xff09;。这种数据结构非常适合用于存储和操作大量二值状态的…

【spark-spring boot】学习笔记

目录 说明RDD学习RDD介绍RDD案例基于集合创建RDDRDD存入外部文件中 转换算子 操作map 操作说明案例 flatMap操作说明案例 filter 操作说明案例 groupBy 操作说明案例 distinct 操作说明案例 sortBy 操作说明案例 mapToPair 操作说明案例 mapValues操作说明案例 groupByKey操作说…

C++ 红黑树:红黑树的插入及应用(map与set的封装)

目录 红黑树 红黑树的概念 红黑树的性质 红黑树节点的定义 一、如果默认给黑色 二、如果默认给红色 红黑树的插入操作 1.按搜索树的规则进行插入 2.检测新节点插入后&#xff0c;红黑树的性质是否造到破坏 情况一&#xff1a;cur为红&#xff0c;parent为红&#xff…

elementUI非常规数据格式渲染复杂表格(副表头、合并单元格)

效果 数据源 前端代码 (展示以及表格处理/数据处理) 标签 <el-table :data"dataList" style"width: 100%" :span-method"objectSpanMethod"><template v-for"(item, index) in headers"><el-table-column prop"…

HTML详解(1)

1.HTML定义 HTML&#xff1a;超文本标记语言。超文本&#xff1a;通过链接可以把多个网页链接到一起标记&#xff1a;标签&#xff0c;带括号的文本后缀&#xff1a;.html 标签语法&#xff1a;<strong>需加粗文字</strong> 成对出现&#xff0c;中间包裹内容&l…

两数之和--leetcode100题

一&#xff0c;前置知识 1&#xff0c;vector向量 二&#xff0c;题目 1. 两数之和https://leetcode.cn/problems/two-sum/ 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下…

微信小程序条件渲染与列表渲染的全面教程

微信小程序条件渲染与列表渲染的全面教程 引言 在微信小程序的开发中,条件渲染和列表渲染是构建动态用户界面的重要技术。通过条件渲染,我们可以根据不同的状态展示不同的内容,而列表渲染则使得我们能够高效地展示一组数据。本文将详细讲解这两种渲染方式的用法,结合实例…

李宏毅机器学习课程知识点摘要(14-18集)

线性回归&#xff0c;逻辑回归&#xff08;线性回归sigmoid&#xff09;&#xff0c;神经网络 linear regression &#xff0c; logistic regression &#xff0c; neutral network 里面的偏导的相量有几百万维&#xff0c;这就是neutral network的不同&#xff0c;他是…

Bean的生命周期详解保姆级教程,结合spring boot和spring.xml两种方式讲解,5/7/10大小阶段详细分析

文章目录 Spring Bean的生命周期一、为什么知道 Bean 的生命周期&#xff1f;二、生命周期大致了解三、详细分析生命周期3.1 ① 初步划分为 5 步&#xff1a;3.1.1 spring 框架中怎么理解3.1.2 spring boot 项目中怎么理解 3.2 ② 细分 5 步为 7 步&#xff1a;3.2.1 spring 框…

gRPC 双向流(Bidirectional Streaming RPC)的使用方法

gRPC 是一个支持多种语言的高性能 RPC 框架&#xff0c;拥有丰富的 API 来简化服务端和客户端的开发过程。gRPC 支持四种 RPC 类型&#xff1a;Unary RPC、Server Streaming RPC、Client Streaming RPC 和 Bidirectional Streaming RPC。下面是双向流 API 的使用方法。 双向流…

ffmpeg视频滤镜:替换部分帧-freezeframes

滤镜描述 freezeframes 官网地址 > FFmpeg Filters Documentation 这个滤镜接收两个输入&#xff0c;然后会将第一个视频中的部分帧替换为第二个视频的某一帧。 滤镜使用 参数 freezeframes AVOptions:first <int64> ..FV....... set first fra…