编写一个java *13.7(Colorable类)创建名为Colorable的接口,其中有名为howToColor的void方法。可着色对象的每个类必须实现Colorable接口。设计一个名为Square的类,继承自GeometriObject类并实现Colorable接口。实现howToColor方法,显示一个消息Color all four sides(给所有的四条边着色)。Squaer类具有一个私有的命名为side的double数据域及其设置方法和获取方法。他具有一个无参的构造方法来构建边为0的Square,以及另一个使用指定边来构建Square的构造方法。 画出包含Colorable、Square和GeometriObject的UML图。编写一个测试程序,创建有五个GeometriObject对象的数组。对于数组中的每个对象而言,如果对象是可着色的,则调用其howToColor方法。
时间: 2024-02-25 13:56:57 浏览: 20
好的,我明白了你的问题。以下是Colorable、Square和GeometriObject的UML图:
```
+--------------+
| GeometriObject |
+--------------+
| color: String |
| filled: boolean |
+--------------+
| GeometriObject() |
| GeometriObject(color: String, filled: boolean) |
| getColor(): String |
| setColor(color: String): void |
| isFilled(): boolean |
| setFilled(filled: boolean): void |
| getArea(): double |
| getPerimeter(): double |
+--------------+
^
|
|
|
|
+--------------------------+
| Colorable |
+--------------------------+
| howToColor(): void |
+--------------------------+
^
|
|
|
|
+--------------+
| Square |
+--------------+
| side: double |
+--------------+
| Square() |
| Square(side: double) |
| getSide(): double |
| setSide(side: double): void |
| getArea(): double |
| getPerimeter(): double |
| howToColor(): void |
+--------------+
```
以下是实现Colorable、Square和GeometriObject的Java代码:
```java
public interface Colorable {
void howToColor();
}
public class GeometriObject {
private String color;
private boolean filled;
public GeometriObject() {
color = "white";
filled = false;
}
public GeometriObject(String color, boolean filled) {
this.color = color;
this.filled = filled;
}
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;
}
public double getArea() {
return 0;
}
public double getPerimeter() {
return 0;
}
}
public class Square extends GeometriObject implements Colorable {
private double side;
public Square() {
side = 0;
}
public Square(double side) {
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");
}
}
public class TestColorable {
public static void main(String[] args) {
GeometriObject[] objects = new GeometriObject[5];
objects[0] = new Square(5);
objects[1] = new Square(10);
objects[2] = new GeometriObject("red", true);
objects[3] = new GeometriObject("blue", false);
objects[4] = new GeometriObject();
for (GeometriObject obj : objects) {
if (obj instanceof Colorable) {
((Colorable) obj).howToColor();
}
}
}
}
```
在测试程序中,我们创建了一个长度为5的GeometriObject数组,并使用Square和GeometriObject的实例填充它。在遍历数组时,我们使用instanceof运算符检查对象是否实现了Colorable接口。如果是,则强制转换为Colorable类型并调用howToColor()方法。