请根据下面的类图编写抽象类GeometricObject,一般类Circle, Rectangle,其中GeometricObject的compareTo实现图形面积的比较。编写测试类Test,创建对象Circle circle = new Circle(“red”,true,10);
Rectangle rectangle = new Rectangle(“blue”,false, 10,35);
调用compareTo方法判断,输出面积大的对象。
package chap01;
import java.util.Date;
import java.util.Scanner;
abstract class GeometricObject {
private String color = "white";
private boolean filled = false;
private Date creatDate = new Date();
public GeometricObject() {
}
public GeometricObject(String color, boolean filled) {
this.color = color;
this.filled = filled;
}
public Date getCreatDate() {
return creatDate;
}
public void setCreatDate(Date creatDate) {
this.creatDate = creatDate;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public boolean getFilled() {
return filled;
}
public void setFilled(boolean filled) {
this.filled = filled;
}
public abstract double getArea();
public abstract double getPerimeter();
public abstract int compareTo(GeometricObject other);
}
class Rectangle extends GeometricObject{
private double width = 5.0;
private double height = 4.0;
public Rectangle() {
this.width = 5.0;
this.height = 4.0;
}
@Override
public String toString() {
return "Rectangle [width=" + width + ", height=" + height +", getColor()="
+ getColor() + ", isFilled()=" + getFilled() +", getCreatDate()="+ getCreatDate()+", findArea()=" + getArea() + "]";
}
public Rectangle(String color, boolean filled,double width, double height) {
super();
this.width = width;
this.height = height;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getArea() {
return width * height;
}
public double getPerimeter() {
return 2 * (width + height);
}
public int compareTo(GeometricObject other) {
if(getArea()>other.getArea()) {
return 2;
}else{
return 0;
}
}
}
class Circle extends GeometricObject{
private double radius;
public Circle(String color, boolean filled,double radius) {
super();
this.radius = radius;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public double getArea() {
return radius*radius*Math.PI;
}
@Override
public String toString() {
return "Circle [radius=" + radius + ", isFilled()=" + getFilled() +", getCreatDate()="+ getCreatDate()+", findArea()=" + getArea()+"]";
}
public double getPerimeter() {
return 2*radius*Math.PI;
}
public int compareTo(GeometricObject other) {
if(getArea()>other.getArea()) {
return 2;
}else{
return 0;
}
}
}
public class Main{
public static void main(String[] args) {
Circle circle = new Circle("red",true,10);
Rectangle rectangle = new Rectangle("blue",false, 10,35);
if(circle.compareTo(rectangle)>1) {
System.out.println(circle);
}else {
System.out.println(rectangle);
}
}
}