(1)创建底面为正方形的柱体类,计算柱体体积。当底面为圆形或三角形时,分析程序的拓展性和复用性。 (3)使用抽象类、抽象方法,采用面向抽象的编程思想,符合开-闭原则。
时间: 2024-10-12 20:14:26 浏览: 33
首先,我们可以创建一个名为`Column`的基础类,用于表示柱体,并包含一个抽象方法`calculateVolume()`来计算体积,由于默认底面为正方形,这个方法的具体实现会在这里给出:
```java
public abstract class Column {
protected double sideLength; // 正方形底面边长
public Column(double sideLength) {
this.sideLength = sideLength;
}
public abstract double calculateVolume();
}
```
然后,对于圆形和三角形底面的柱体,我们可以分别创建子类`Cylinder`(圆柱)和`Pyramid`(棱锥),它们继承自`Column`并重写`calculateVolume()`方法:
```java
public class Cylinder extends Column {
public Cylinder(double radius) {
super(radius * 2); // 圆柱底面直径等于半径的两倍
}
@Override
public double calculateVolume() {
return Math.PI * Math.pow(sideLength / 2, 2);
}
}
public class Pyramid extends Column {
private double baseLength; // 三角形底面边长
public Pyramid(double baseLength, double height) {
super(baseLength); // 基本假设三角形高度与正方形边长相等
this.baseLength = baseLength;
}
@Override
public double calculateVolume() {
return (baseLength * baseLength * height) / 3;
}
}
```
在这个设计中,我们保持了良好的拓展性,因为如果未来需要添加更多形状的柱体(比如梯形),只需再创建一个新的子类即可,而无需修改`Column`类。同时,复用性也很高,因为所有柱体都遵循相同的抽象结构。
采用面向抽象的编程思想,遵循的是“开-闭”原则(Open-Closed Principle,OCP)。即软件实体应该对扩展开放,对修改关闭。这里通过抽象类和抽象方法,允许我们扩展新的柱体类型(关闭修改),同时不影响现有代码(打开扩展)。
阅读全文