实验 1 UML 类图实验

您所在的位置:网站首页 会员设计uml 实验 1 UML 类图实验

实验 1 UML 类图实验

2024-07-14 21:53| 来源: 网络整理| 查看: 265

实验内容(作图工具: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. 合成复用原则分析: 合成复用原则就是在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分新对象通过委派调用已有对象的方法达到复用功能的目的 复用时要尽量使用组合/聚合关系(关联关系),少用继承。  



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3