本课程为大学一年级学生开设,旨在通过几何图形的设计与分析,培养学生的空间想象能力和逻辑思维技巧,奠定数学基础。
3. 几何图形(满分50分)
**版本1:满分 10 分**
设计抽象类 `GeometricObject` 及其子类 `Triangle` 和 `Circle`。
- **GeometricObject 类设计要求如下:**
- 私有数据域:
- `color`: 表示对象颜色的 Color 类型。
- `filled`: 表示对象是否填充状态的 Boolean 类型。
- `dateCreated`: 记录创建日期和时间的 Date 类型。
- 构造方法:包括无参构造方法及能指定 color 和 filled 状态的有参构造方法。
- 方法:
- 相关数据域的访问器(getter)与修改器(setter)。
- 抽象方法 `draw` 用于绘制图形;抽象方法 `erase` 用于删除图形;
- 公用抽象方法 `getArea()` 计算面积,和 `getPerimeter()` 计算周长;
- 方法重写:覆盖父类的 toString()。
- **Triangle 类设计要求如下:**
- 私有数据域:
- 三个表示三角形边长的数据成员 side1、side2 和 side3,默认值为 1.0。
- 构造方法包括无参构造和指定三边长度的参数化构造函数;
- 方法包含所有私有属性的访问器与修改器,以及实现父类中定义的抽象方法,并重写 toString()。
- **Circle 类设计要求如下:**
- 私有数据域:
- `radius`: 圆形半径,默认为 1.0。
- 静态常量 `PI` 值设为 3.14;
- 构造方法包括无参构造和指定半径的参数化构造函数;
- 方法包含 radius 的访问器与修改器,以及实现父类中定义的抽象方法,并重写 toString()。
- **测试类 TestGeometricObject1 设计要求如下:**
- 静态方法 `RandomCreateGeometricObject()` 用于生成随机几何对象数组。
- 输出每个对象的基本信息、周长和面积;
- 测试其它相关功能;
**版本2:满分 20 分**
将抽象类 GeometricObject 改为接口,仅保留四个抽象方法 (draw, erase, getArea 和getPerimeter)。声明 Circle 和 Triangle 类实现此接口,并在每个类中添加序列化到指定文件的功能 `writeToFile(File f)`。
- **测试类 TestGeometricObject2 设计要求如下:**
- 静态方法 RandomCreateGeometricObject() 用于生成随机几何对象数组并将其序列化至 GeometricObjects.dat 文件,成功返回 true。
- 反之,则从文件中读取所有对象,并存储于一个 GeometricObject 数组内;输出每个元素的基本信息、周长和面积;
- 测试其它方法的功能。
- **新增 Rectangle 类实现接口 GeometricObject** ,修改 TestGeometricObject2 以体现开闭原则(即在不改动现有代码的情况下添加新功能)。
**版本3:满分 20 分**
基于第2步的成果,开发一个具有图形用户界面 (GUI) 的几何图形绘制系统。此系统应支持根据选择的不同类型来绘制和删除相应的图形单元,并允许通过 UI 输入相关参数计算周长与面积等功能;
以上为题目要求描述,请根据具体要求进行编程实践。