Browse Source

上传文件至 'W4'

main
JiaoYan 3 weeks ago
parent
commit
b837ffcbc9
  1. 47
      W4/Shape.java
  2. 6
      W4/反思.txt
  3. 15
      W4/实验报告.txt
  4. 29
      W4/类图.txt
  5. BIN
      W4/运行截图.png

47
W4/Shape.java

@ -0,0 +1,47 @@
public 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 width, height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
public double getArea() {
return width * height;
}
}
class Triangle extends Shape {
private double base, 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());
}
}
class Main {
public static void main(String[] args) {
Shape circle = new Circle(5);
Shape rect = new Rectangle(4, 6);
Shape tri = new Triangle(3, 4);
ShapeUtil.printArea(circle);
ShapeUtil.printArea(rect);
ShapeUtil.printArea(tri);
}
}

6
W4/反思.txt

@ -0,0 +1,6 @@
实验反思
本次实验通过抽象类、继承和多态重构图形面积计算,让我深刻理解了面向对象的设计思想。
1. 核心收获:我明确了抽象类是定义统一接口的规范,子类通过重写实现具体逻辑,而多态让工具类能统一处理所有图形,大幅提升了代码的复用性和扩展性。
2. 设计思考:在图形类的设计中,“圆、矩形、三角形都是图形”,这种稳定的“is-a”关系最适合用继承来实现。这让我明白,选择继承还是组合,关键在于类之间的逻辑关系是否稳定且从属。
3. 问题与改进:在编写多文件代码时,我曾因文件名与公共类名不匹配导致编译失败。这让我严格遵守了Java的文件命名规则,也提升了我规范编写代码的习惯。
这次实验不仅完成了功能要求,更让我体会到良好的类结构设计能让程序更易维护。

15
W4/实验报告.txt

@ -0,0 +1,15 @@
一、AI使用情况记录
1. 抽象类与多态概念理解:通过AI快速理解抽象类、继承、多态的核心思想,明确实验设计思路。
2. 代码框架生成:AI提供了Shape、Circle、Rectangle、Triangle、ShapeUtil的基础代码结构,帮助我快速搭建程序。
3. 语法与错误排查:在编写代码时,AI帮助我检查语法错误、方法重写规范、类名与文件名匹配规则等问题。
4. 类图绘制指导:AI提供了类图的结构与符号说明,帮助我正确绘制继承关系与类结构。
5. 实验报告思路整理:AI辅助梳理实验目的、原理、步骤、结果与反思,使报告结构更清晰。
二、组合 vs 继承
1. 继承
特点:子类继承父类的属性与方法,可重写父类方法。
优点:代码复用性强,结构清晰,适合稳定的层级关系。
缺点:耦合度高,父类修改会影响所有子类。
2. 组合
特点:一个类包含另一个类的对象作为成员。
优点:耦合度低,灵活、可扩展、易维护。
缺点:代码量略多,需要显式调用成员对象的方法。

29
W4/类图.txt

@ -0,0 +1,29 @@
+---------------------------+
| <<abstract>> |
| Shape |
+---------------------------+
| |
+---------------------------+
| + getArea(): double | <-- 抽象方法
+---------------------------+
^
|
+----------+----------+----------+
| | |
+----------------+ +----------------+ +----------------+
| Circle | | Rectangle | | Triangle |
+----------------+ +----------------+ +----------------+
| - radius: double| | - width: double | | - base: double |
| | | - height: double| | - height: double|
+----------------+ +----------------+ +----------------+
| + getArea(): double| | + getArea(): double| | + getArea(): double|
+----------------+ +----------------+ +----------------+
+---------------------------+
| ShapeUtil |
+---------------------------+
| |
+---------------------------+
| + printArea(Shape): void | <-- 静态方法
+---------------------------+

BIN
W4/运行截图.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Loading…
Cancel
Save