Write java code for the room class only utilizing each method signature listed

This assignment requires you to write code for a cooling simulation involving rooms and
devices. Three types of devices can be used to cool a room: air conditioners, ceiling fans, and
standing fans. Air conditioners and ceiling fans cannot be removed from a room once they are added.
Standing fans however are portable devices that can be swapped between rooms only if they are not
in use. The table below shows the different properties of each device: portability, breeziness,
noisiness, and cooling power

Heres Table 1 - 
Device - Air Conditioner - Portable = no, Breeziness = 0, Noisiness = 0, Cools by = 5.
Device - Ceiling Fan- Portable = no, Breeziness = 2, Noisiness = 0, Cools by = 3.
Device - Standing Fan- Portable = Yes, Breeziness = 2, Noisiness = 2, Cools by = 1.

Device Interface
The Device interface specifies the following behaviour for a device:
public interface Device {
 
 String getID();
 
 boolean isBreezy();
 
 boolean isNoisy();
 
 boolean isOn();
 
 void turnOn();
 
 void turnOff();
 
 int coolsBy();
 
 int getBreeziness();
 
 int getNoisiness();
 
}

PortableDevice Interface
The PortableDevice interface does not specify any behaviour. It allows a standing fan to be subtyped
as a PortableDevice.

public interface PortableDevice {
boolean isPortable();

void setPortable(boolean isPortable);
}

AC class
The AC class implements the Device interface with the behaviour required for air conditioners in Table
1. IDs take the following pattern: AC1, AC2, AC3 for AC objects.

public class AC implements Device {
 private String id;
 private boolean isOn;
 private boolean isBreezy = false;
 private boolean isNoisy = false;
 private int coolsBy = 5;
 private int breeziness = 0;
 private int noisiness = 0;
 private static int acCount = 0;
 
 public AC() {
 this.isOn = false;
 this.isBreezy = false;
 this.isNoisy = false;
 this.coolsBy = 5;
 this.id = Integer.toString(acCount);
 acCount++;
 
 }

 @Override
 public String getID() {
 id = ("AC" + id);
 return id;
 }

 @Override
 public boolean isBreezy() {
 return isBreezy;
 }

 @Override
 public boolean isNoisy() {
 return isNoisy;
 }

 @Override
 public boolean isOn() {
 return isOn;
 }

 @Override
 public void turnOn() {
 isOn = true;
 }

 @Override
 public void turnOff() {
 isOn = false;
 }

 @Override
 public int coolsBy() {
 return coolsBy;
 }

 @Override
 public int getBreeziness() {
 return breeziness;
 }

 @Override
 public int getNoisiness() {
 return noisiness;
 }
 
 public static int getAcCount() {
 return acCount;
 }
}

Fan class
The Fan class is abstract and it implements the Device interface with only the common behaviour
implemented for fans in Table 1. IDs are controlled by this class as 1, 2, 3. Subclasses then modify
these values by prefixing appropriate characters based on the type of fan. The Fan constructor
accepts an integer parameter for a fan’s noisiness which can vary

public abstract class Fan implements Device {
 private static int fanCount = 0;
 private String id;
 private boolean isOn;
 private boolean isBreezy;
 private boolean isNoisy;
 private int coolsBy;
 private int breeziness;
 private int noisiness;

 public Fan(int noisiness) {
 fanCount++;
 this.id = Integer.toString(fanCount);
 this.isOn = false;
 this.isBreezy = true;
 this.isNoisy = true;
 this.coolsBy = 0;
 this.breeziness = 2;
 this.noisiness = noisiness;
 }

 @Override
 public String getID() {
 return id;
 }

 @Override
 public boolean isBreezy() {
 return isBreezy;
 }

 @Override
 public boolean isNoisy() {
 return isNoisy;
 }

 @Override
 public boolean isOn() {
 return isOn;
 }

 @Override
 public void turnOn() {
 isOn = true;
 }

 @Override
 public void turnOff() {
 isOn = false;
 }

 @Override
 public int coolsBy() {
 return coolsBy;
 }

 @Override
 public int getBreeziness() {
 return breeziness;
 }

 @Override
 public int getNoisiness() {
 return noisiness;
 }
 
 public void setBreezy(boolean isBreezy) {
 this.isBreezy = isBreezy;
 }

 public void setNoisy(boolean isNoisy) {
 this.isNoisy = isNoisy;
 }

 public void setCoolsBy(int coolsBy) {
 this.coolsBy = coolsBy;
 }

 public void setBreeziness(int breeziness) {
 this.breeziness = breeziness;
 }
 
 public static int getFanCount() {
 return fanCount;
 }

 public void setId(String id) {
 this.id = id;
 }
}

CeilingFan class
The CeilingFan class is a subclass of the Fan class and implements the Device interface with the
behaviour required for ceiling fans in Table 1. IDs take the following pattern: CFAN1, CFAN2, CFAN3
for CeilingFan objects.

public class CeilingFan extends Fan {

 public CeilingFan() {
 super(0); // Ceiling fans are not very noisy
 setId("CFAN" + getFanCount()); // IDs follow the pattern CFAN1, CFAN2, etc.
 setBreezy(true);
 setNoisy(false);
 setCoolsBy(3);
 setBreeziness(2);
 }
 
}

StandingFan class
The StandingFan class is a subclass of the Fan class and implements the PortableDevice interface
and the Device interface with the behaviour required for standing fans in Table 1. It cannot be
subclassed. IDs take the following pattern: SFAN1, SFAN2, SFAN3 for StandingFan objects.
public class StandingFan extends Fan implements PortableDevice {
 private boolean isPortable;

public StandingFan() {
 super(2); // Standing fans are somewhat noisy
 setId("SFAN" + getFanCount()); // IDs follow the pattern SFAN1, SFAN2, etc.
 setBreezy(true);
 setNoisy(true);
 setCoolsBy(1);
 setBreeziness(2);
 isPortable = true;
}

public boolean isPortable() {
 return isPortable;
}
public void setPortable(boolean isPortable) {
 this.isPortable = isPortable;
}
}

Room class
Supply attributes of your own for the Room class which must have the following behaviour:
Method Signature Return Type Purpose
Room(int
startingTemperature) Constructor
getDevices( ) ArrayList Returns an ArrayList of devices
addDevice( Device d) boolean
Return true if a device was successfully
inserted into the devices ArrayList, false if the
device already exists in the collection.
removeDevice(Device d) boolean
Removes a device from the devices ArrayList
if it is a PortableDevice and returns true, false
otherwise
getTemperatureDrop( ) int Returns the temperature drop produced by all
of the devices turned on in the room
getTemperature( ) int Returns the temperature of the room (based
on the devices turned on in the room)
getBreeziness( ) int Returns the breeziness of the room (produced
by the devices turned on in the room)
getNoisiness( ) int Returns the noisiness of the room (produced
by the devices turned on in the room)
printState( ) void Prints the state of the room and the devices.
나열된 각 메서드 서명을 사용하여 룸 클래스에 대해서만 자바 코드를 작성하십시오.이 과제에서는 방과 관련된 냉각 시뮬레이션을 위한 코드를 작성해야 합니다.장치. 방을 냉방하는 데 사용할 수 있는 장치는 에어컨, 천장 선풍기, 스탠딩 선풍기의 세 가지 유형이 있습니다.스탠딩 팬. 에어컨과 천장 선풍기는 한 번 추가하면 방에서 제거할 수 없습니다.하지만 스탠딩 선풍기는 휴대용 장치로, 사용하지 않는 경우에만 객실 간에 교체할 수 있습니다.사용 중일 경우에만 교체할 수 있습니다. 아래 표는 각 장치의 다양한 특성을 보여줍니다: 휴대성, 산들산들함,소음 및 냉각 능력표 1 - 장치 - 에어컨 - 휴대용 = 아니요, 산뜻함 = 0, 소음 = 0, 냉방력 = 5.장치 - 천장 선풍기-휴대용 = 아니요, 산들 바람 = 2, 소음 = 0, 냉각 정도 = 3.장치-스탠딩 팬-휴대용 = 예, 산들 바람 = 2, 소음 = 2, 냉각 범위 = 1.장치 인터페이스Device 인터페이스는 장치에 대한 다음과 같은 동작을 지정합니다:공용 인터페이스 Device {  String getID();  boolean isBreezy();  boolean isNoisy();  boolean isOn();  void turnOn();  void turnOff();  int coolsBy();  int getBreeziness();  int getNoisiness(); }PortableDevice 인터페이스PortableDevice 인터페이스는 어떠한 동작도 지정하지 않습니다. 이 인터페이스를 사용하면 스탠딩 팬을 휴대용 장치로하위 유형화할 수 있습니다.공용 인터페이스 PortableDevice {boolean isPortable();void setPortable(boolean isPortable);}AC 클래스AC 클래스는 표 1의 에어컨에 필요한 동작으로 Device 인터페이스를 구현합니다.1. ID는 다음과 같은 패턴을 취합니다: AC 객체의 경우 AC1, AC2, AC3.공용 클래스 AC 구현 Device { private String id; private boolean isOn; private boolean isBreezy = false; private boolean isNoisy = false; private int coolsBy = 5; private int breeziness = 0; private int noisiness = 0; private static int acCount = 0;  public AC() { this.isOn = false; this.isBreezy = false; this.isNoisy = false; this.coolsBy = 5; this.id = Integer.toString(acCount); acCount++;  } @Override public String getID() { id = ("AC" + id); id를 반환합니다; } @Override public boolean isBreezy() { isBreezy를 반환합니다; } @Override public boolean isNoisy() { return isNoisy; } @Override public boolean isOn() { return isOn; } @Override public void turnOn() { isOn = true; } @Override public void turnOff() { isOn = false; } @Override public int coolsBy() { return coolsBy; } @Override public int getBreeziness() { 산뜻함을 리턴합니다; } @Override public int getNoisiness() { 소음도를 리턴합니다; }  public static int getAcCount() { acCount를 반환합니다; }}팬 클래스Fan 클래스는 추상적이며 표 1의 팬에 대해 구현된 공통 동작만 있는 Device 인터페이스(만 구현한 Device 인터페이스를 구현합니다. ID는 이 클래스에서 1, 2, 3으로 제어됩니다. 그런 다음 서브클래스는서브클래스는 팬의 유형에 따라 적절한 문자를 접두사로 추가하여 이 값을 수정합니다. 팬 생성자는 팬의 소음에 대한 정수 매개변수를 받습니다.공용 추상 클래스 Fan 구현자 Device { private static int fanCount = 0; private String id; private boolean isOn; private boolean isBreezy; private boolean isNoisy; private int coolsBy; private int breeziness; private int noisiness; public Fan(int noisiness) { fanCount++; this.id = Integer.toString(fanCount); this.isOn = false; this.isBreezy = true; this.isNoisy = true; this.coolsBy = 0; this.breeziness = 2; this.noisiness = 시끄러움; } @Override public String getID() { return id; } @Override public boolean isBreezy() { return isBreezy; } @Override public boolean isNoisy() { return isNoisy; } @Override public boolean isOn() { return isOn; } @Override public void turnOn() { isOn = true; } @Override public void turnOff() { isOn = false; } @Override public int coolsBy() { return coolsBy; } @Override public int getBreeziness() { 산뜻함을 리턴합니다; } @Override public int getNoisiness() { 소음도를 리턴합니다; }  public void setBreezy(boolean isBreezy) { this.isBreezy = isBreezy; } public void setNoisy(boolean isNoisy) { this.isNoisy = isNoisy; } public void setCoolsBy(int coolsBy) { this.coolsBy = coolsBy; } public void setBreeziness(int breeziness) { this.breeziness = breeziness; }  public static int getFanCount() { fanCount를 반환합니다; } public void setId(String id) { this.id = id; }}CeilingFan 클래스CeilingFan 클래스는 Fan 클래스의 서브클래스로, 표 1에 있는 천장 선풍기에 필요한동작을 가진 Device 인터페이스를 구현합니다. ID는 다음과 같은 패턴을 취합니다: CFAN1, CFAN2, CFAN3를 사용합니다.public class CeilingFan extends Fan { public CeilingFan() { super(0); // 천장 선풍기는 시끄럽지 않습니다. setId("CFAN" + getFanCount()); // ID는 CFAN1, CFAN2 등의 패턴을 따릅니다. setBreezy(true); setNoisy(false); setCoolsBy(3); setBreeziness(2); } }StandingFan 클래스StandingFan 클래스는 Fan 클래스의 서브 클래스이며 PortableDevice 인터페이스와와 Device i