You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

21 lines
2.4 KiB

图形面积计算器重构实验报告
一、AI 使用情况记录
1. 概念学习:通过 AI 学习抽象类、继承、多态的核心概念,理解 “统一处理不同类型对象” 的设计思想,明确本次实验的核心目标。
2. 代码框架生成:借助 AI 生成抽象类 Shape、图形子类、ShapeUtil 工具类的基础代码框架,明确各类型的职责与结构。
3. 代码修正与优化:在 AI 指导下修正构造方法参数、@Override注解使用等细节,优化代码可读性与规范性。
4. IDE 操作指导:通过 AI 学习 IntelliJ IDEA 中创建项目、编写代码、运行程序及生成 UML 类图的完整操作流程,解决了类图生成、导出等问题。
5. 报告撰写辅助:利用 AI 梳理实验报告结构,获取 “组合 vs 继承” 问题的解答思路,确保报告内容完整、逻辑清晰。
二、组合vs继承问题回答
五、组合 vs 继承问题回答
1. 核心概念
• 继承(is-a):表示 “子类是一种父类” 的分类关系,通过 extends 关键字实现,子类可以复用父类的属性与方法,并通过重写实现多态。继承会导致类之间强耦合,父类的修改会影响所有子类。
• 组合(has-a):表示 “一个类包含另一个类的对象” 的包含关系,通过成员变量实现,将复杂功能拆分为多个独立类,降低耦合度,提高代码灵活性与可维护性。
2. 本实验中的选择与原因
本实验采用继承方案,原因如下:
• Circle、Rectangle、Triangle 都是 Shape 的一种(满足 is-a 关系),符合继承的适用场景。
• 通过继承抽象类 Shape,可以利用多态特性,让 ShapeUtil统一处理所有图形对象,无需为每个图形编写单独的打印方法,实现了代码复用与统一管理。
• 若采用组合方案,无法自然体现 “图形分类” 的层次关系,也难以实现统一调用的多态效果。
3. 适用场景总结
• 优先使用组合:当类之间是 “包含 / 使用” 关系(has-a),需要灵活复用功能、降低耦合时,优先选择组合。
• 使用继承:当类之间是 “分类 / 从属” 关系(is-a),需要复用父类逻辑并实现多态时,才使用继承。
• 设计原则:优先使用组合,而非继承,避免继承带来的强耦合问题,只有在明确满足 is-a 关系且需要多态特性时,才考虑使用继承。