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
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();
 }
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.

Heres the room class you have to understand to attempt the coolingsimulation 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 + ")");
 }
 }
}
이 메시지의 모든 코드를 이해하여 냉각 시뮬레이션 클래스에 대한 자바 코드를 작성할 수 있도록 메서드 서명을 활용하고 냉각 시뮬레이션 클래스에 나열된 용도를 활용해야 합니다.냉각 시뮬레이션 클래스에 대해 따라야 할 사양은 다음과 같습니다.CoolingSimulation 클래스에는 방의 ArrayList가 있습니다. 다음과 같은 동작을 합니다:메서드 시그니처 - CoolingSimulation( ) 목적 - 생성자메서드 시그니처 - getRooms( ) 반환 유형 - ArrayList 목적 - 객실의 ArrayList를 반환합니다.메서드 시그니처 - getRoom( int i) 반환 유형 - Room목적 - 특정 인덱스의 객실에 저장된 Room 객체를 반환합니다.인덱스가 1-4 사이인 경우 특정 인덱스에 저장된 객실 객체를 반환합니다.인 경우 특정 인덱스에 저장된 객실 객체를 반환합니다.메서드 서명 - createRooms( ) 반환 유형 - void 목적 - 표 2의 Room 객체를 생성하고객실 ArrayList에 삽입합니다.메서드 서명 - createDevices( ) 반환 유형 - void목적 - 표 2의 Device 객체를 생성하고적절한 방과 연결합니다.객체와 연결합니다.메서드 시그니처 - swapPortableDevices (룸 r1, 룸 r2) 반환 유형 - void 목적 - 룸 r1에서 꺼진 PortableDevices를 제거하고를 제거하여 Room r2에 추가합니다.메서드 시그니처 - coolRoom1( ) 반환 유형 - 무효 목적 - 표 2의 요구 사항에 따라 적절한 장치를 켭니다.적절한 장치를 켭니다.메서드 서명 - coolRoom2( )반환 유형 - void 목적 - 표 2의 방 요구 사항에 따라 적절한 장치를 켭니다.적절한 장치를 켭니다.메서드 서명 - coolRoom3( )반환 유형 - 무효 목적 - 표 2의 방 요구 사항에 따라 적절한 장치를 켭니다.적절한 장치를 켭니다.메서드 시그니처 - coolRoom4( ) 반환 유형 - void목적 - 표 2의 방 요구 사항에 따라 적절한 장치를 켭니다.적절한 장치를 켭니다. 추가다른 방의 장치가 필요할 수 있습니다.메서드 서명 - printStates( ) 반환 유형 - void 목적 - 모든 객실 객체의 상태를 인쇄합니다.rooms ArrayList 냉각 시뮬레이션 클래스에서 다음과 같은 메인 메서드를 제공하세요: 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.쿨링 시뮬레이션 클래스를 시도하기 위해 이해해야 할 룸 클래스는 다음과 같습니다.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() { 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() + " (" + status + ")"); } }}