You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
print/SmartAirConditioner.java

95 lines
2.6 KiB

/**
* 智能空调类
* 实现了SmartDevice, PowerControl和TemperatureControl接口
*/
public class SmartAirConditioner implements SmartDevice, PowerControl, TemperatureControl {
private String deviceId;
private String deviceName;
private boolean isPowerOn;
private double temperature;
private final double MIN_TEMP = 16.0;
private final double MAX_TEMP = 30.0;
/**
* 构造函数
* @param deviceId 设备ID
* @param deviceName 设备名称
*/
public SmartAirConditioner(String deviceId, String deviceName) {
this.deviceId = deviceId;
this.deviceName = deviceName;
this.isPowerOn = false;
this.temperature = 25.0; // 默认温度25度
}
@Override
public String getDeviceId() {
return deviceId;
}
@Override
public String getDeviceName() {
return deviceName;
}
@Override
public String getDeviceType() {
return "AirConditioner";
}
@Override
public String getStatusDescription() {
return deviceName + " (ID: " + deviceId + ") - 状态: " +
(isPowerOn ? "开启" : "关闭") + ", 温度: " + temperature + "°C";
}
@Override
public void turnOn() {
if (!isPowerOn) {
isPowerOn = true;
System.out.println(deviceName + " 已开启");
} else {
System.out.println(deviceName + " 已经是开启状态");
}
}
@Override
public void turnOff() {
if (isPowerOn) {
isPowerOn = false;
System.out.println(deviceName + " 已关闭");
} else {
System.out.println(deviceName + " 已经是关闭状态");
}
}
@Override
public boolean isPowerOn() {
return isPowerOn;
}
@Override
public void setTemperature(double temperature) {
if (temperature >= MIN_TEMP && temperature <= MAX_TEMP) {
this.temperature = temperature;
System.out.println(deviceName + " 温度已设置为: " + temperature + "°C");
} else {
System.out.println(deviceName + " 温度必须在 " + MIN_TEMP + "-" + MAX_TEMP + "°C 之间");
}
}
@Override
public double getTemperature() {
return temperature;
}
@Override
public void increaseTemperature(double increment) {
setTemperature(this.temperature + increment);
}
@Override
public void decreaseTemperature(double decrement) {
setTemperature(this.temperature - decrement);
}
}