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.
|
|
1 week ago | |
|---|---|---|
| .. | ||
| Circle.java | 1 week ago | |
| README.md | 1 week ago | |
| Rectangle.java | 1 week ago | |
| Shape.java | 1 week ago | |
| ShapeUtil.java | 1 week ago | |
| TestShape.java | 1 week ago | |
| Triangle.java | 1 week ago | |
README.md
AI交互记录 - 图形面积计算器项目
项目概述
实现一个基于面向对象思想的图形面积计算器,支持圆形、矩形、三角形的面积计算,体现抽象、继承和多态特性。
交互过程
1. 需求分析阶段
用户提问: 需要设计一个图形面积计算系统,要求使用面向对象的抽象和继承特性。
AI建议:
- 创建抽象基类
Shape,定义统一的getArea()方法 - 具体图形类(Circle、Rectangle、Triangle)继承 Shape 并实现各自的面积计算逻辑
- 使用工具类
ShapeUtil统一管理面积打印,体现多态性
2. 核心设计决策
Q1: 为什么使用抽象类而不是接口?
AI回答:
- 抽象类可以包含部分通用实现和成员变量
- 更符合"是一种(is-a)"的关系建模
- 便于未来扩展共享行为
Q2: 如何保证输入参数的合法性?
AI建议: 在各图形类的构造方法中添加参数校验:
3. 代码实现要点
Shape.java(抽象基类)
- 定义抽象方法
getArea()和draw() - 强制子类实现面积计算逻辑
Circle.java
- 面积公式:π × r²
- 使用
Math.PI提高精度
Rectangle.java
- 面积公式:长 × 宽
- 提供 getter/setter 便于访问属性
Triangle.java
- 面积公式:底 × 高 / 2
- 构造时校验底和高必须大于0
ShapeUtil.java
- 静态方法
printArea(Shape shape)接收任意 Shape 子类 - 利用多态自动调用对应子类的
getArea()方法
TestShape.java
- 创建三种图形实例,向上转型为 Shape 类型
- 统一调用工具类方法,验证多态效果
4. 关键技术点总结
| 概念 | 应用位置 | 说明 |
|---|---|---|
| 抽象 | Shape类 | 定义规范,不关心具体实现 |
| 继承 | Circle/Rectangle/Triangle | 复用Shape的结构 |
| 多态 | ShapeUtil.printArea() | 同一方法处理不同图形 |
| 封装 | 私有属性+getter/setter | 保护数据安全性 |
| 异常处理 | 构造方法校验 | 防止非法参数 |
5. 运行结果示例
===== 圆形面积 ===== 该图形的面积为:78.54 ===== 矩形面积 ===== 该图形的面积为:12.00 ===== 三角形面积 ===== 该图形的面积为:12.00