实验 1 UML 类图实验

2023-05-16

实验内容(作图工具:PowerDesigner)

1. 绘制以下类图并生成源代码(语言不限):

 2. 根据以下描述绘制类图,再正向工程生成 Java 源代码(也可生成其他面 2 向对象语言的源代码,如 C++或 C#等): 图形(Shape)可分为圆形(Circle)、矩形(Rectangle)、椭圆形(Ellipse)等具体图 形,在 Shape 类中提供了一个抽象的 draw()方法用于绘制图形,而在具体的图 形类中实现该抽象 draw()方法。 提供一个图形工厂类(ShapeFactory),该类提供一个静态方法 createShape(char type),其返回类型为 Shape,参数 type 为所需绘制图形对应的 代码,例如“c”表示圆形,“r”表示矩形,“e”表示椭圆形等,在 createShape()方法中,可以使用条件语句来判断所需绘制图形的类型,并根据参 数的不同返回不同的具体形状对象。【注:“创建关系”是一种特殊的“依赖关 系”】

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

4. 在某公司财务系统的初始设计方案中存在如图 1 所示 Employee 类,该 类包含员工编号(ID)、姓名(name)、年龄(age)、性别(gender)、薪水(salary)、每 月工作时数(workHoursPerMonth)、每月请假天数(leaveDaysPerMonth)等属性。 该公司的员工包括全职和兼职两类,其中每月工作时数(workHoursPerMonth)用 于存储兼职员工每个月工作的小时数,每月请假天数(leaveDaysPerMonth)用于 存储全职员工每个月请假的天数。系统中两类员工计算工资的方法也不一样, 全职员工按照工作日数计算工资,兼职员工按照工作时数计算工资,因此在 Employee 类中提供了两个方法 calculateSalaryByDays()和 calculateSalaryByHours()分别用于按照天数和时数计算工资,此外,还提供了方 法 displaySalary()用于显示工资。

 试采用所学面向对象设计原则分析图 1 中 Employee 类存在的问题并对其进 行重构,绘制重构之后的类图。

违反了单一职责原则,重构后的类图如下:

java代码如下:

import java.util.*;

/** @pdOid 3a8b000e-97a6-4e10-a371-311e22b2b046 */
public class Employee {
   /** @pdOid 8f7110ef-6e13-4fff-a63f-0537c2bd5f6a */
   private String ID;
   /** @pdOid 180b8511-6a75-46b3-adb8-3a23a5548341 */
   private String name;
   /** @pdOid a14728a4-ac5f-45c9-b8f6-2f0286af5882 */
   private int age;
   /** @pdOid 4d63e312-8811-48f9-b973-c45552cf7527 */
   private String gender;
   /** @pdOid de389409-62aa-4123-91ec-342167a6648d */
   private double slary;
   
   /** @pdOid 4167f30d-4365-4ffe-964c-54c4511a89c6 */
   public double displaySlary() {
      // TODO: implement
      return 0;
   }

}
import java.util.*;

/** @pdOid e5f28637-e594-47b9-b223-0319e18386ae */
public class PartTime extends Employee {
   /** @pdOid 6d867cd5-ac26-4417-b5bc-633c0dd40742 */
   private int workHoursPerMonth;
   
   /** @pdOid 9ad430e2-155e-495e-82d4-ced6da8fbc23 */
   public double calculateSalaryByHours() {
      // TODO: implement
      return 0;
   }

}
import java.util.*;

/** @pdOid 223dfa37-6dc3-4873-ab60-6c16f56af773 */
public class FullTime extends Employee {
   /** @pdOid f091b456-9c55-4271-8bcc-a16016db66d1 */
   private int leaveDaysPerMonth;
   
   /** @pdOid c1d0a2c6-ff6b-4c01-a9e1-1c6598282b1c */
   public double calculateSalaryByDays() {
      // TODO: implement
      return 0;
   }

}

补充:如何添加标题框?


合成复用原则


合成复用原则定义:
合成复用原则又称为组合/聚合复用原则(Composition/Aggregate Reuse Principle, CARP)
合成复用原则:优先使用对象组合,而不是继承来达到复用的目的。Composite Reuse Principle (CRP): Favor composition of objects over inheritance as a reuse mechanism.
合成复用原则分析:
合成复用原则就是在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分新对象通过委派调用已有对象的方法达到复用功能的目的
复用时要尽量使用组合/聚合关系(关联关系),少用继承。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实验 1 UML 类图实验 的相关文章

  • S3C2440 cp15协处理器详解

    2440的协处理器CP15总共有c0 c15这16个协处理器寄存器 xff0c 各自具有一定的功能定义 但总的来说 xff0c cp15主要跟以下功能有关 xff1a 1 获取device id和cache type等一些CPU相关信息 2
  • 动态网页的信息爬取

    一 Selenium介绍 Selenium是一系列基于Web的自动化工具 xff0c 提供一套测试函数 xff0c 用于支持Web自动化测试 函数非常灵活 xff0c 能够完成界面元素定位 窗口跳转 结果比较 具有如下特点 xff1a 1
  • 数字电路基础与Quartus-II入门

    一 安装Quartus II软件和Modsim仿真软件 1 安装Quartus 打开exe安装文件 一路默认next下去 xff0c 安装地址不要有中文空格路径 xff0c 最后弹出的对话框选择ok 2 破解Quartus 下载好破解器把文
  • FPGA基于DE2-115平台的VGA显示

    一 VGA简介 VGA xff08 Video Graphics Array xff09 视频图形阵列是IBM于1987年提出的一个使用模拟信号的电脑显示标准 VGA接口即电脑采用VGA标准输出数据的专用接口 VGA接口共有15针 xff0
  • 树莓派assert初步使用练习

    一 创建用户 用户密码 sudo useradd m 用户名 sudo passwd 用户名 给予用户sudo权限 切换到root用户 su 编辑配置文件 vi etc sudoers 增加配置 xff08 按i开始编辑 xff0c Esc
  • 计算机网络/谢希仁(第八版)第四章习题

    4 01 网络层向上提供的服务有哪两种 xff1f 试比较其优缺点 答 xff1a xff08 1 xff09 面向连接服务 xff08 或虚电路服务 xff09 和无连接服务 xff08 或数据报服务 xff09 xff08 2 xff0
  • Nginx正向代理任何域名的实现

    正向代理是一种代理方式 xff0c 在代理服务器和客户端之间建立连接 xff0c 并代表客户端向目标服务器发起请求 在正向代理模式下 xff0c 目标服务器并不知道请求来自代理服务器 xff0c 而是以为请求来自客户端 要在nginx中实现
  • MySQL设置允许远程连接与用户(Linux系统)

    要允许MySQL远程连接 xff0c 需要进行以下步骤 xff1a 修改MySQL配置文件 在Ubuntu上 xff0c MySQL的配置文件通常位于 etc mysql mysql conf d mysqld cnf或 etc mysql
  • 用Swift开发一个简单的iOS备忘录列表应用程序

    iOS提供了许多在应用程序里面可以调用的框架 xff0c 下面列举一些 xff1a 1 UIKit框架 xff1a 用于iOS用户界面设计 xff0c 包括按钮 标签 文本框 表格等控件 2 Foundation框架 xff1a 包含了iO
  • 【MATLAB】SIMULINK 基本模块的使用

    以下是使用SIMULINK构建基本通信系统模型的步骤 xff1a 1 打开MATLAB xff0c 点击SIMULINK图标 xff0c 创建一个空模型 2 从库浏览器中拖拽 信号发生器 Signal Generator 模块和 示波器 S
  • 【MATLAB】构建 SIMULINK 子系统和模块的封装

    构建SIMULINK的子系统可以使用自建模块进行封装 xff0c 帮助文档编写 xff0c 并掌握模型空间与MATLAB命名空间的交互 具体步骤如下 xff1a 1 创建自定义模块 在Simulink中 xff0c 可以使用Subsyste
  • rmmod时提示 rmmod : chdir(/lib/modules): No such file or directory

    insmod后 xff0c 使用lsmod查看 xff0c 如果成功则可以看到刚才安装的module 此时如果修改了module代码要重新安装 xff0c 则需要先rmmod刚才安装的模块才能重新安装 xff0c 否则在insmod时会提示
  • 无源蜂鸣器按特定频率发出相对应的音调

    蜂鸣器是什么 xff1f 蜂鸣器是什么呢 xff1f 相信大家在做项目中肯定多多少少都会用到蜂鸣器 xff0c 蜂鸣器呢是一种一体化结构的电子讯响器 xff0c 采用直流电压供电 xff0c 广泛应用于计算机 打印机 复印机 报警器 电子玩
  • 树莓派上安装Pytorch

    没有踩坑和报错 xff0c 浅浅记录以下 将torch 1 7 0a0 cp37 cp37m linux armv7l whl和torchvision 0 8 0a0 43 45f960c cp37 cp37m linux armv7l w
  • FreeRTOS学习记录(3)——任务创建与启动总结

    对FreeRTOS的使用过程进行精简后会发现 xff0c 它的整个过程其实非常简单 xff0c 首先创建任务 xff0c 其次登记任务 xff0c 根据任务所登记的位置不断开始执行任务 下面进行详细的解释 创建任务 xff0c 这个过程中会
  • 执行HQL直接被退出:Remote side unexpectedly closed network connection

    执行HQL直接被退出 xff1a Remote side unexpectedly closed network connection 文章目录 执行HQL直接被退出 xff1a Remote side unexpectedly close
  • 使用mybatisplus要导入的依赖

    lt dependency gt lt groupId gt com spring4all lt groupId gt lt artifactId gt spring boot starter swagger lt artifactId g
  • Hadoop中HDFS的读写流程详解

    一 HDFS写流程示意图 xff1a xff08 1 xff09 客户端通过Distributed FileSystem模块向NameNode请求上传文件 xff0c NameNode检查目标文件是否已存在 xff0c 父目录是否存在 检查
  • 基于树莓派(python)的平衡小车

    目前普遍是STM32或者51来实现平衡小车 xff0c 基于树莓派的平衡小车少见 xff08 因为树莓派适合用于数据处理 xff09 但有部分同学的毕设选择了用树莓派来做平衡小车的 xff0c 接下来分享一下基于树莓派的平衡小车如何完成 驱
  • BGP双平面架构

    要求 xff1a PC1 PC3 PC5为电信面路由 xff0c PC2 PC4 PC6为联通面路由 正常情况下 xff0c 电信面路由走AS1 xff0c 联通面路由走AS2 xff0c 当R9与R1之间的线路发生故障时 xff0c 电信

随机推荐

  • 宿主机可以正常上网,虚拟机不能上网的问题

    宿主机可以正常上网 xff0c 虚拟机不能上网的问题 问题描述 宿主机 xff1a Windows 10 虚拟机 xff1a VMware Ubuntu 14 04 6 LTS 之前配置过一个主节点 xff0c 三个从节点 宿主机 xff0
  • Jlink调试2440进不了中断的看这里

    很多人学习2440都是从裸机开始的 刚开始的小菜LED xff0c 然后定时器 按键这些常用内部外设 xff0c 最后则是LCD Nand等复杂外设 用Jlink裸机调试2440小程序时 xff0c 中断的调试是一个重要内容 像定时器 按键
  • 在Eclipse中运行第一个MapReduce程序

    这是Hadoop学习全程记录第2篇 xff0c 在这篇里我将介绍一下如何在Eclipse下写第一个MapReduce程序 新说明一下我的开发环境 xff1a 操作系统 xff1a 在windows下使用wubi安装了ubuntu 10 10
  • 论文笔记:Learning Deep Features for Discriminative Localization

    一 这篇论文解决什么问题 原始问题 xff1a Weakly supervised object localization xff0c 研究发现 xff0c 图像分类任务上训练的CNN xff0c 可以直接用于物体定位 两个子问题 xff1
  • CSS高度塌陷问题-六种解决方案

    问题背景 子元素浮动后 xff0c 无法撑起父元素高度 xff0c 导致父元素高度丢失 xff0c 其下元素会自动上移 xff0c 导致页面布局混乱 解决方案 一 BFC 块级格式化环境 xff08 Block Formatting Con
  • MySQL设置更改root密码

    MySQL设置更改root密码 方法一 xff1a 通过MySQL console直接设置密码 首先打开MySQL console 输入原始密码后按回车键 xff08 如果没有原始密码 xff0c enter password后面为空 xf
  • Unity2D—利用UGUI纯代码实现简易摇杆

    目标 xff1a 拖动摇杆实现平面物体的移动 一 制作摇杆UI 平面物体 xff08 1 xff09 新建画布Canvas xff0c 将Canvas的UI缩放模式设置为屏幕大小播放 xff08 如不设为该模式则会因界面缩放而导致UI消失
  • Unity2D—骨骼绑定、IK系统、动画(一)

    目标 xff1a 使用素材实现特定的2D人物动画 一 导入包资源和素材 xff08 本人的Unity版本为2021 1 7 xff09 xff08 1 xff09 Unity注册表中 xff1a 2D Animation 2D PSD Im
  • Unity2D—骨骼绑定、IK系统、动画(二)

    目标 xff1a 使用素材实现特定的2D人物动画 三 IK系统简介 小知识 xff1a IK动画全名是Inverse Kinematics 意思是反向动力学 xff0c 子骨骼节点带动父骨骼节点运动 比如跳街舞的少年用手撑着身体在地上转圈
  • 手把手教你做计算机网络基础大题—报文交换

    一 题目 如图所示 xff0c 主机A要向主机B发送一个长度为300KB的报文 xff0c 发送速率为10Mbps xff0c 传输路径上要经过8个路由器 xff0c 连接路由器的链路长度为100km xff0c 信号在链路上的传播速度为2
  • 手把手教你做计算机网络基础大题—TCP头部结构

    一 题目 已知TCP头部用十六进制数表示为 xff1a 05320017 00000001 00000055 500207FF 00000000 请回答以下问题 xff1a xff08 1 xff09 源端口号是多少 xff1f xff08
  • 雅思大作文写作模版

    模版整理自Vince9120老师 xff0c 逻辑清晰 xff0c 对于写作遇到瓶颈的同学有帮助 xff0c 而且易上手使用 Vince老师视频在Bilibili xff0c 备考时间充足的同学建议观看学习 xff01 一 大作文段落详情及
  • 手把手教你做计算机网络基础大题—ARQ协议

    一 题目 假定使用连续ARQ协议 xff0c 发送窗口大小是3 xff0c 而序号范围是 0 xff0c 15 xff0c 而传输媒体保证在接收方能够按序收到分组 在某一时刻 xff0c 在接收方 xff0c 下一个期望收到的序号是5 试问
  • ARM开发中ubuntu设置成静态IP的优劣分析

    ARM linux开发中 xff0c 我们经常将主机ubuntu设置成静态IP 这有一些好处 xff0c 譬如你的uboot的环境变量中serverip就不用每次改来改去的了 我一直也是这么做的 xff0c 但是今天突然发现这样会带来很多问
  • 手把手教你做计算机网络基础大题—路由表

    一 题目 设某路由器建立了如下路由表 xff1a 目的网络子网掩码下一跳128 96 39 0255 255 255 128接口m0128 96 39 128255 255 255 128接口m1128 96 40 0255 255 255
  • 新手入门:ST-Link和J-Link仿真器的使用

    当编译完成之后 xff0c 点击下载 xff0c 出现这样的错误提示 xff0c 说明我们的仿真器配置没有配置好 xff0c 下面我们讲讲J Link和ST Link分别应该如何配置 xff08 1 xff1a 编译 xff0c 后续只编译
  • 深度学习图像分类实战——pytorch搭建卷积神经网络(AlexNet, LeNet, ResNet50)进行场景图像分类(详细)

    目录 1 一 实验过程 1 1 实验目的 1 2 实验简介 1 3 数据集的介绍 1 4 一 LeNet5网络模型 1 5 二 AlexNet网络模型 1 6 三 ResNet50 xff08 残差网络 xff09 网络模型 二 实验代码
  • c++实现经典游戏贪吃蛇(超详解)

    经典版 要求 xff1a 1碰到四周和自身游戏结束 xff1b 2迟到食物蛇身增长 xff1b 3食物吃得越多游戏越快 xff1b 4通过w a s d可控制蛇头的方向 xff1b 5蛇身颜色不一致 源码 xff08 需要easy x 贪吃
  • c++中求数组的长度

    c 43 43 中求数组的长度 数组长度 61 sizeof 数组名 sizeof 数组类型 span class token macro property span class token directive hash span span
  • 实验 1 UML 类图实验

    实验内容 作图工具 xff1a PowerDesigner 1 绘制以下类图并生成源代码 xff08 语言不限 xff09 xff1a 2 根据以下描述绘制类图 xff0c 再正向工程生成 Java 源代码 xff08 也可生成其他面 2