From 700c6759852ba8fbf09696947d5229747b9d94cf Mon Sep 17 00:00:00 2001 From: LeiJuntao <2606542098@qq.com> Date: Sun, 29 Mar 2026 20:26:19 +0800 Subject: [PATCH] Changes --- W5/反思 | 9 +++++ W5/图形面积计算器重构.java | 55 +++++++++++++++++++++++++++++ W5/实验报告 | 11 ++++++ W5/类图 | 27 ++++++++++++++ 4 files changed, 102 insertions(+) create mode 100644 W5/反思 create mode 100644 W5/图形面积计算器重构.java create mode 100644 W5/实验报告 create mode 100644 W5/类图 diff --git a/W5/反思 b/W5/反思 new file mode 100644 index 0000000..3f3cb3d --- /dev/null +++ b/W5/反思 @@ -0,0 +1,9 @@ +图形面积计算器重构实验反思 + +本次实验通过抽象类Shape与继承重构图形面积计算器,加深了对面向对象思想的理解。 + +通过定义抽象方法getArea(),让Circle、Rectangle、riangle子类实现各自面积计算,再借助ShapeUtil工具类统一处理,既实现了代码复用,也体现了多态的优势。 + +实验中曾因类名与文件名不一致导致编译报错,也发现了类职责划分不清、缺少参数校验等问题。后续将严格遵守Java语法规范,优化类设计,补充异常处理,进一步提升代码健壮性与可维护性。 + + diff --git a/W5/图形面积计算器重构.java b/W5/图形面积计算器重构.java new file mode 100644 index 0000000..5cb4221 --- /dev/null +++ b/W5/图形面积计算器重构.java @@ -0,0 +1,55 @@ +abstract class Shape { + public abstract double getArea(); +} + +class Circle extends Shape { + private double radius; + public Circle(double radius) { + this.radius = radius; + } + public double getArea() { + return Math.PI * radius * radius; + } +} + +class Rectangle extends Shape { + private double length; + private double width; + public Rectangle(double length, double width) { + this.length = length; + this.width = width; + } + public double getArea() { + return length * width; + } +} + +class Triangle extends Shape { + private double base; + private double height; + public Triangle(double base, double height) { + this.base = base; + this.height = height; + } + public double getArea() { + return 0.5 * base * height; + } +} + +class ShapeUtil { + public static void printArea(Shape shape) { + System.out.println(shape.getArea()); + } +} + +// 关键修改:类名与文件名完全一致 +public class 图形面积计算器重构 { + public static void main(String[] args) { + Shape circle = new Circle(2); + Shape rectangle = new Rectangle(3, 4); + Shape triangle = new Triangle(3, 4); + ShapeUtil.printArea(circle); + ShapeUtil.printArea(rectangle); + ShapeUtil.printArea(triangle); + } +} diff --git a/W5/实验报告 b/W5/实验报告 new file mode 100644 index 0000000..694aecf --- /dev/null +++ b/W5/实验报告 @@ -0,0 +1,11 @@ +Al使用情况 +•借助AI完成抽象类设计、子类继承实现、 +工具类封装的代码框架 +·排查并解决了「类名与文件名不一致」「构 +造方法名错误」等编译问题 + +维度 继承(Inheritance) 组合(Composition) +关系本质 关系(子类是父类的一种) 关系(整体包含部分) +耦合度 高,子类依赖父类实现,修改父类易影响子类 低,通过接口交互,修改内部实现不影响外部 +复用性 代码复用,但受限于单继承 更高,可灵活组合多个对象 +适用场景 类间存在明确的「种类」关系(如 Circle is a Shape) 类间存在「包含」关系(如 Car has a Engine) diff --git a/W5/类图 b/W5/类图 new file mode 100644 index 0000000..a152347 --- /dev/null +++ b/W5/类图 @@ -0,0 +1,27 @@ ++----------------+ +| Shape | ++----------------+ +| + getArea(): double | ++----------------+ + ^ + | + +------+------+------+ + | | | ++--------+ +----------+ +----------+ +| Circle | | Rectangle| | Triangle | ++--------+ +----------+ +----------+ +| - radius: double | | - length: double | | - base: double | +| + Circle(radius: double) | | + Rectangle(length: double, width: double) | | + Triangle(base: double, height: double) | +| + getArea(): double | | + getArea(): double | | + getArea(): double | ++--------+ +----------+ +----------+ + ++----------------+ +| ShapeUtil | ++----------------+ +| + printArea(shape: Shape): void | ++----------------+ + | + v ++----------------+ +| Shape | ++----------------+