Understand all the code in this message so you can write the java code for the CoolingSimulation Class make sure you utilize the method signatures and there purposes listed for the Coolingsimulation class and use the room class provided to write the code for it.

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.

Table 2 -
Room - 1: Starting Temperature = 30, Required Properties = Only Breezy or Noisy Devices turned on, Air Conditioners = 1,Ceiling Fans = 1 and Standing Fans = 3.
 Room - 2: Starting Temperature = 35, Required Properties = No Breezy and No Noisy Devices turned on, Air Conditioners = 2,Ceiling Fans = 1 and Standing Fans = 4.
Room - 3: Starting Temperature = 37, Required Properties = All Noisy Devices turned off, Air Conditioners = 1,Ceiling Fans = 2 and Standing Fans = 2.
Room - 4: Starting Temperature = 25, Required Properties = Very Breezy and Very Noisy and Very Cold, Air Conditioners = 1,Ceiling Fans = 1 and Standing Fans = 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();
 
}

Understand all the code in this message so you can write the java code for the Room Class make sure you utilize the method signatures and there purposes listed for the room class and the device interface

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();
 
}
Heres the room class

import java.util.ArrayList;

public class Room {
 private int temperature;
 private ArrayList devices;

 public Room(int startingTemperature) {
 this.temperature = startingTemperature;
 this.devices = new ArrayList();
 }

 public ArrayList getDevices() {
 return this.devices;
 }

 public boolean addDevice(Device d) {
 if (this.devices.contains(d)) {
 return false;
 }
 if (d instanceof PortableDevice) {
 this.devices.add(d);
 return true;
 }
 if (d instanceof AC || d instanceof CeilingFan) {
 this.devices.add(d);
 return true;
 }
 return false;
 }

 public boolean removeDevice(Device d) {
 if (d instanceof PortableDevice) {
 return this.devices.remove(d);
 }
 return false;
 }

 public int getTemperatureDrop() {
 int totalDrop = 0;
 for (Device d : this.devices) {
 if (d.isOn()) {
 totalDrop += d.coolsBy();
 }
 }
 return totalDrop;
 }

 public int getTemperature() {
 int totalDrop = this.getTemperatureDrop();
 return this.temperature - totalDrop;
 }

 public int getBreeziness() {
 int totalBreeziness = 0;
 for (Device d : this.devices) {
 if (d.isOn()) {
 totalBreeziness += d.getBreeziness();
 }
 }
 return totalBreeziness;
 }

 public int getNoisiness() {
 int totalNoisiness = 0;
 for (Device d : this.devices) {
 if (d.isOn()) {
 totalNoisiness += d.getNoisiness();
 }
 }
 return totalNoisiness;
 }

 public void printState() {
 System.out.println("Temperature: " + this.getTemperature() + " degrees Celsius");
 System.out.println("Breeziness: " + this.getBreeziness());
 System.out.println("Noisiness: " + this.getNoisiness());
 System.out.println("Devices: ");
 for (Device d : this.devices) {
 String status = d.isOn() ? "On" : "Off";
 System.out.println("- " + d.getID() + " (" + status + ")");
 }
 }
}

Heres the specification you HAVE to follow for the cooling simulation class
The CoolingSimulation class has an ArrayList of Rooms. It has the following behaviour:
Method Signature - CoolingSimulation( ) Purpose - Constructor
Method Signature - getRooms( ) Return Type - ArrayList Purpose - Returns an ArrayList of rooms
Method Signature - getRoom( int i) Return Type - Room
Purpose - Returns a Room object stored in the rooms
ArrayList at the particular index if the index is
between 1-4 inclusive.
Method Signature - createRooms( ) Return Type - void Purpose - Creates the Room objects in Table 2 and
inserts them into the rooms ArrayList
Method Signature - createDevices( ) Return Type - void
Purpose - Creates the Device objects in Table 2 and
associate them with the appropriate room
objects stored in the rooms ArrayList
Method Signature - swapPortableDevices (Room r1, Room r2) Return Type - void Purpose - Removes PortableDevices that are turned off
in Room r1, and add them to Room r2
Method Signature - coolRoom1( ) Return Type -void Purpose - Turns on the appropriate devices according to
the room’s requirements in Table 2
Method Signature - coolRoom2( )Return Type - void Purpose - Turns on the appropriate devices according to
the room’s requirements in Table 2
Method Signature - coolRoom3( )Return Type - void Purpose - Turns on the appropriate devices according to
the room’s requirements in Table 2
Method Signature - coolRoom4( ) Return Type - void
Purpose - Turns on the appropriate devices according to
the room’s requirements in Table 2. Additional
devices from other rooms may be necessary
Method Signature - printStates( ) Return Type - void Purpose - Prints the state of all room objects in the
rooms ArrayList 

In your CoolingSimulation class, provide the following main method:
public static void main(String[] args){
 CoolingSimulation sim = new CoolingSimulation();
 sim.createRooms();
 sim.createDevices();
 sim.coolRoom1();
 sim.coolRoom2();
 sim.coolRoom3();
 sim.coolRoom4();
 sim.printStates();
 }
이 메시지의 모든 코드를 이해하여 냉각 시뮬레이션 클래스에 대한 자바 코드를 작성할 수 있도록 메서드 서명과 냉각 시뮬레이션 클래스에 대해 나열된 목적을 활용하고 제공된 룸 클래스를 사용하여 코드를 작성하십시오.이 과제에서는 방과 관련된 냉각 시뮬레이션을 위한 코드를 작성해야 합니다.장치. 방을 냉방하는 데 사용할 수 있는 장치는 에어컨, 천장 선풍기, 스탠딩 선풍기의 세 가지 유형이 있습니다.스탠딩 팬. 에어컨과 천장 선풍기는 한 번 추가하면 방에서 제거할 수 없습니다.하지만 스탠딩 선풍기는 휴대용 장치로, 사용하지 않는 경우에만 객실 간에 교체할 수 있습니다.사용 중일 경우에만 교체할 수 있습니다. 아래 표는 각 장치의 다양한 특성을 보여줍니다: 휴대성, 산들산들함,소음 및 냉각 능력표 1 - 장치 - 에어컨 - 휴대용 = 아니요, 산뜻함 = 0, 소음 = 0, 냉방력 = 5.장치 - 천장 선풍기-휴대용 = 아니요, 산들 바람 = 2, 소음 = 0, 냉각 정도 = 3.장치-스탠딩 팬-휴대용 = 예, 산들 바람 = 2, 소음 = 2, 냉각 범위 = 1.표 2 -방 - 1: 시작 온도 = 30, 필수 속성 = 미풍 또는 소음 장치만 켜짐, 에어컨 = 1, 천장 선풍기 = 1 및 스탠딩 선풍기 = 3. 방 - 2: 시작 온도 = 35, 필수 속성 = 미풍 및 소음 장치 켜짐 없음, 에어컨 = 2, 천장 선풍기 = 1, 스탠딩 선풍기 = 4.방 - 3: 시작 온도 = 37, 필수 속성 = 모든 소음 장치 꺼짐, 에어컨 = 1, 천장 선풍기 = 2 및 스탠딩 선풍기 = 2.방 - 4: 시작 온도 = 25, 필수 속성 = 매우 산뜻하고 매우 시끄럽고 매우 춥고, 에어컨 = 1, 천장 선풍기 = 1, 스탠딩 선풍기 = 1.장치 인터페이스Device 인터페이스는 장치에 대한 다음과 같은 동작을 지정합니다:공용 인터페이스 Device {  String getID();  boolean isBreezy();  boolean isNoisy();  boolean isOn();  void turnOn();  void turnOff();  int coolsBy();  int getBreeziness();  int getNoisiness(); }이 메시지의 모든 코드를 이해하여 방 클래스에 대한 자바 코드를 작성할 수 있도록 메서드 서명을 활용하고 방 클래스 및 장치 인터페이스에 대해 나열된 목적을 확인하십시오.이 과제에서는 방과 관련된 냉방 시뮬레이션을 위한 코드를 작성해야 합니다.장치. 방을 냉방하는 데 사용할 수 있는 장치는 에어컨, 천장 선풍기, 스탠딩 선풍기의 세 가지 유형이 있습니다.스탠딩 선풍기. 에어컨과 천장 선풍기는 한 번 추가하면 방에서 제거할 수 없습니다.하지만 스탠딩 선풍기는 휴대용 장치로, 사용하지 않는 경우에만 객실 간에 교체할 수 있습니다.사용 중일 경우에만 교체할 수 있습니다. 아래 표는 각 장치의 다양한 특성을 보여줍니다: 휴대성, 산들산들함,소음 및 냉각 능력표 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(); }방 클래스는 다음과 같습니다.java.util.ArrayList를 가져옵니다;public class Room { private int temperature; 비공개 ArrayList 장치; public Room(int startingTemperature) { this.temperature = startingTemperature; this.devices = new ArrayList(); } public ArrayList getDevices() { this.devices를 반환합니다; } public boolean addDevice(Device d) { if (this.devices.contains(d)) { return false; } if (d instanceof PortableDevice) { this.devices.add(d); 참을 반환합니다; } if (d 인스턴스of AC || d 인스턴스of CeilingFan) { this.devices.add(d); return true; } return false; } public boolean removeDevice(Device d) { if (d instanceof PortableDevice) { return this.devices.remove(d); } return false; } public int getTemperatureDrop() { int totalDrop = 0; for (Device d : this.devices) { if (d.isOn()) { totalDrop += d.coolsBy(); } } return totalDrop; } public int getTemperature() { int totalDrop = this.getTemperatureDrop(); return this.temperature - totalDrop; } public int getBreeziness() { int totalBreeziness = 0; for (Device d : this.devices) { if (d.isOn()) { totalBreeziness += d.getBreeziness(); } } return totalBreeziness; } public int getNoisiness() { int totalNoisiness = 0; for (Device d : this.devices) { if (d.isOn()) { totalNoisiness += d.getNoisiness(); } } return totalNoisiness; } public void printState() { System.out.println("온도: " + this.getTemperature() + " 섭씨"); System.out.println("산들 바람: " + this.getBreeziness()); System.out.println("소음: " + this.getNoisiness()); System.out.println("Devices: "); for (Device d : this.devices) { String status = d.isOn() ? "On" : "Off"; System.out.println("- " + d.getID() + " (" +) 