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.
Songrui 85c9d9984f 宋瑞-202506050301 1 week ago
..
Circle.java 宋瑞-202506050301 1 week ago
README.md 宋瑞-202506050301 1 week ago
Rectangle.java 宋瑞-202506050301 1 week ago
Shape.java 宋瑞-202506050301 1 week ago
ShapeUtil.java 宋瑞-202506050301 1 week ago
TestShape.java 宋瑞-202506050301 1 week ago
Triangle.java 宋瑞-202506050301 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