设计抽象类GeometricObject及其子类Triangle和Circle。 GeometricObject类设计要求如下: ■ 一个名为color 的Color类型的私有数据域,表示对象的颜色。 ■ 一个名为filled 的Boolean类型的私有数据域,表示对象是否填充颜色。 ■ 一个名为dateCreated的Date类型的私有数据域,表示对象的创建日期。 ■ 一个无参构造方法。 ■ 一个能创建特定color 和filled 的有参构造方法。 ■ 相关数据域的访问器和修改器。 ■ 两个个名为draw和erase的抽象方法。 ■ 一个名为getArea的抽象方法。 ■ 一个名为getPerimeter的抽象方法。 ■ 重写toString方法。
时间: 2024-03-02 12:51:41 浏览: 79
编写一个抽象类Shape
4星 · 用户满意度95%
以下是GeometricObject类及其子类Triangle和Circle的Java代码实现:
```
import java.awt.Color;
import java.util.Date;
public abstract class GeometricObject {
private Color color;
private boolean filled;
private Date dateCreated;
public GeometricObject() {
dateCreated = new Date();
}
public GeometricObject(Color color, boolean filled) {
this.color = color;
this.filled = filled;
dateCreated = new Date();
}
public Color getColor() {
return color;
}
public void setColor(Color color) {
this.color = color;
}
public boolean isFilled() {
return filled;
}
public void setFilled(boolean filled) {
this.filled = filled;
}
public Date getDateCreated() {
return dateCreated;
}
public abstract void draw();
public abstract void erase();
public abstract double getArea();
public abstract double getPerimeter();
@Override
public String toString() {
return "created on " + dateCreated + "\ncolor: " + color + " and filled: " + filled;
}
}
public class Triangle extends GeometricObject {
private double side1;
private double side2;
private double side3;
public Triangle() {
super();
}
public Triangle(Color color, boolean filled, double side1, double side2, double side3) {
super(color, filled);
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
public double getSide1() {
return side1;
}
public void setSide1(double side1) {
this.side1 = side1;
}
public double getSide2() {
return side2;
}
public void setSide2(double side2) {
this.side2 = side2;
}
public double getSide3() {
return side3;
}
public void setSide3(double side3) {
this.side3 = side3;
}
@Override
public void draw() {
// implementation for drawing triangle
}
@Override
public void erase() {
// implementation for erasing triangle
}
@Override
public double getArea() {
// implementation for calculating area of triangle
}
@Override
public double getPerimeter() {
return side1 + side2 + side3;
}
@Override
public String toString() {
return "Triangle\n" + super.toString();
}
}
public class Circle extends GeometricObject {
private double radius;
public Circle() {
super();
}
public Circle(Color color, boolean filled, double radius) {
super(color, filled);
this.radius = radius;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
@Override
public void draw() {
// implementation for drawing circle
}
@Override
public void erase() {
// implementation for erasing circle
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * radius;
}
@Override
public String toString() {
return "Circle\n" + super.toString();
}
}
```
在这个代码实现中,GeometricObject类是一个抽象类,包含一个名为color的Color类型的私有数据域,一个名为filled的Boolean类型的私有数据域,一个名为dateCreated的Date类型的私有数据域,一个无参构造方法,一个能创建特定color和filled的有参构造方法,相应的访问器和修改器,两个名为draw和erase的抽象方法,一个名为getArea的抽象方法和一个名为getPerimeter的抽象方法,以及重写的toString方法。
Triangle和Circle是GeometricObject类的子类,分别实现了抽象方法draw、erase、getArea和getPerimeter。同时,它们还重写了toString方法以返回相应的字符串表示。
阅读全文