题目:
(Colorable接口)设计一个名为Colorable的接口,其中有名为howToColor()的void方法。可着色对象的每个类必须实现Colorable接口。 设计一个名为Square的类,继承自Geometricobject类并实现Colorable接口。实现howToColor方法,显示一个消息Color all four sides (给所有的四条边着色)。Square类包含一个数据城side及其设置方法和获取方法,以及使用指定边构建一个Square的构造方法。Square 类具有一个私有的命名为side的double数据域及其设置方法和获取方法。它具有一个无参的构造方法来构建边为0的Square,以及另外一个使用指定边来构建Square的构造方法。
编写一个测试程序,创建有五个 Geometricobject对象的数组。对于数组中的每个对象而言,如果对象是可着色的,则调用其howToColor方法。
GeometricObject类:
package second;
import java.util.Date;
public abstract class GeometricObject {
private String color;
private boolean filled;
private Date dateCreated;
protected GeometricObject(){
dateCreated = new Date();
}
protected GeometricObject(String color,boolean filled){
this.color = color;
this.filled = filled;
dateCreated = new Date();
}
public String getColor(){
return color;
}
public void setColor(String color){
this.color = color;
}
public boolean isFilled(){
return filled;
}
public void setFilled(boolean filled){
this.filled = filled;
}
@Override
public String toString(){
return "Created on "+dateCreated+" Color: "+color+" Filled: "+filled;
}
public abstract double getArea();
public abstract double getPerimeter();
}
Colorable类:
package second;
public interface Colorable {
public abstract void howToColor();
}
Square类:
package second;
public abstract class Square extends GeometricObject implements Colorable {
private double side;
public Square(){
this(0,"white",false);
}
public Square(double side){
this(side,"white",false);
}
public Square(double side, String color, boolean filled) {
super(color, filled);
this.side = side;
}
public double getSide() {
return side;
}
public void setSide(double side) {
this.side = side;
}
@Override
public double getArea() {
return side * side;
}
@Override
public double getPerimeter() {
return 4 * side ;
}
@Override
public void howToColor(){
System.out.println("Color all four sides");
}
@Override
public String toString(){
if(super.isFilled())
howToColor();
return super.toString()+" side: "+side;
}
}
SquareTest类:
package second;
import static org.junit.jupiter.api.Assertions.*;
import java.util.Scanner;
import org.junit.jupiter.api.Test;
class SquareTest {
@Test
void test() {
Scanner input = new Scanner(System.in);
Square[] squares = new Square[5];
for (int i = 1; i < squares.length+1; i++) {
System.out.println(i + ":Square ");
System.out.print("Enter side: ");
double side = input.nextDouble();
System.out.print("Enter Color: ");
String color = input.next();
System.out.print("Is Filled: ");
boolean filled = input.nextBoolean();
squares[i] = new Square(side,color,filled){
};
System.out.println(squares[i].toString());
}
}
}