3.几何图形 版本1: 设计抽象类GeometricObject及其子类Triangle和Circle。 GeometricObject类设计要求如下: ■ 一个名为color 的Color类型的私有数据域,表示对象的颜色。 ■ 一个名为filled 的Boolean类型的私有数据域,表示对象是否填充颜色。 ■ 一个名为dateCreated的Date类型的私有数据域,表示对象的创建日期。 ■ 一个无参构造方法。 ■ 一个能创建特定color 和filled 的有参构造方法。 ■ 相关数据域的访问器和修改器。 ■ 两个个名为draw和erase的抽象方法。 ■ 一个名为getArea的抽象方法。 ■ 一个名为getPerimeter的抽象方法。 ■ 重写toString方法。
时间: 2024-03-26 07:39:00 浏览: 101
好的,根据你的问题,你需要设计一个几何图形类及其子类,并满足一定的要求。下面是一个可能的实现:
```java
import java.util.Date;
import java.awt.Color;
public abstract class GeometricObject {
private Color color;
private boolean filled;
private Date dateCreated;
public GeometricObject() {
color = Color.BLACK;
filled = false;
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, side2, side3;
public Triangle() {
super();
side1 = 1.0;
side2 = 1.0;
side3 = 1.0;
}
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() {
// draw the triangle
}
@Override
public void erase() {
// erase the triangle
}
@Override
public double getArea() {
// calculate and return the area of the triangle
}
@Override
public double getPerimeter() {
// calculate and return the perimeter of the triangle
}
@Override
public String toString() {
return "Triangle:\n" + super.toString() +
"\nside1 = " + side1 + " side2 = " + side2 + " side3 = " + side3;
}
}
public class Circle extends GeometricObject {
private double radius;
public Circle() {
super();
radius = 1.0;
}
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() {
// draw the circle
}
@Override
public void erase() {
// erase the circle
}
@Override
public double getArea() {
// calculate and return the area of the circle
}
@Override
public double getPerimeter() {
// calculate and return the perimeter of the circle
}
@Override
public String toString() {
return "Circle:\n" + super.toString() + "\nradius = " + radius;
}
}
```
这是一个基本的实现,你可以根据你的需求进行修改和扩展。需要注意的是,抽象类不能被实例化,因此你需要在其子类中实现抽象方法。
阅读全文