设计Fan类,属性包括:3个常量SLOW(1)、MEDIUM(2)、FAST(3)代表风扇的速度;1个int属性speed指定速度,默认值为SLOW;1个boolean属性on指定开关机,默认值false;1个double属性radius指定风扇扇叶大小;1个String属性color指定扇叶颜色,默认值为blue。方法包括这些属性的访问器、构造函数、重写Object类的toString()和equals()方法等。修改版本1中Fan类,让其继承Pane类,并且把color属性设置为Color类型,默认属
时间: 2024-03-23 11:37:33 浏览: 34
好的,以下是设计的Fan类的实现:
```java
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
public class Fan extends Pane {
// constants for fan speeds
public static final int SLOW = 1;
public static final int MEDIUM = 2;
public static final int FAST = 3;
// properties
private int speed;
private boolean on;
private double radius;
private Color color;
// constructors
public Fan() {
this(SLOW, false, 100, Color.BLUE);
}
public Fan(int speed, boolean on, double radius, Color color) {
this.speed = speed;
this.on = on;
this.radius = radius;
this.color = color;
draw();
}
// accessors
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
draw();
}
public boolean isOn() {
return on;
}
public void setOn(boolean on) {
this.on = on;
draw();
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
draw();
}
public Color getColor() {
return color;
}
public void setColor(Color color) {
this.color = color;
draw();
}
// override toString() method
@Override
public String toString() {
return "Fan [speed=" + speed + ", on=" + on + ", radius=" + radius + ", color=" + color + "]";
}
// override equals() method
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof Fan)) {
return false;
}
Fan other = (Fan) obj;
return other.speed == this.speed && other.on == this.on && other.radius == this.radius && other.color.equals(this.color);
}
// helper method to draw fan
private void draw() {
getChildren().clear();
if (on) {
for (int i = 0; i < 4; i++) {
Rectangle blade = new Rectangle(0, 0, 20, radius / 2);
blade.setTranslateX(getWidth() / 2 - blade.getWidth() / 2);
blade.setTranslateY(radius / 2);
blade.setFill(color);
blade.setRotate(i * 90);
getChildren().add(blade);
}
}
}
}
```
在此实现中,我们定义了常量SLOW、MEDIUM和FAST,以代表风扇的速度。然后我们定义了speed、on、radius和color四个属性,分别代表速度、开关机、扇叶大小和扇叶颜色。我们还定义了两个构造函数,一个是默认构造函数,另一个允许我们设置初始值。
我们还覆盖了Object类的toString()和equals()方法,以便于在需要时打印对象或比较对象。
最后,我们使用继承自Pane类的draw()方法来绘制风扇。如果开关机是打开状态,我们将添加四个矩形作为扇叶,并根据速度设置它们的旋转速度。如果开关机是关闭状态,我们不会添加任何扇叶。
希望这可以帮助您实现Fan类。