diff --git a/SmartAirConditioner.java b/SmartAirConditioner.java new file mode 100644 index 0000000..84fb56c --- /dev/null +++ b/SmartAirConditioner.java @@ -0,0 +1,95 @@ +/** + * 智能空调类 + * 实现了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); + } +} \ No newline at end of file