실습
1. turnOn(), turnOff() 인터페이스 생성
( 인터페이스를 생성하면 해당하는 메소드를 무조건 선언 및 구현해야 한다 )
2. Main 에서는 각각 냉장고와 에어컨을 선택하여 조절할 수 있음
3. 냉장고, 에어컨은 각각 켜기, 끄기, 온도 올리기, 온도 내리기 기능을 가짐
package main;
public interface HomeAppliances {
void turnOn();
void turnOff();
}
인터페이스 생성
package main;
import java.util.Scanner;
import airConditioner.AirConditioner;
public class Main {
public static void main(String[] args) {
while(true) {
Scanner sc = new Scanner(System.in);
System.out.println("\n제어할 가전제품 선택 : 1. 냉장고, 2. 에어컨, 3. 종료");
System.out.print("입력 >>> ");
int option = sc.nextInt();
if(option == 1) {
Refrigerator refrigerator = new Refrigerator();
int refOption;
while(refrigerator.showOption() != 5) {
// 옵션 선택
refOption = refrigerator.showOption();
// 옵션 실행
refrigerator.doOption(refOption);
}
}
if(option == 2) {
AirConditioner airConditioner = new AirConditioner();
int airOption;
while(airConditioner.getOption()!=5) {
// 옵션 선택
airOption = airConditioner.chooseOption();
// 옵션 실행
airConditioner.doOption(airOption);
}
System.out.println("이전으로 이동합니다.");
}
if(option == 3) {
System.out.println("\n종료합니다.");
break;
}
}
}
}
main 코드 작성
package main;
import java.util.Scanner;
public class Refrigerator implements HomeAppliances{
private int temperature;
private boolean isOpen = false;
public int showOption() {
Scanner sc = new Scanner(System.in);
System.out.println("\n1. 열기");
System.out.println("2. 닫기");
System.out.println("3. 온도 내리기");
System.out.println("4. 온도 올리기");
System.out.println("5. 이전으로");
System.out.print("입력 >>> ");
return sc.nextInt();
}
public void doOption(int option) {
if(option == 1) turnOn();
else if(option == 2) turnOff();
else if(option == 3) upTem();
else if(option == 4) downTem();
}
// 열기
@Override
public void turnOn() {
if(isOpen == false) {
temperature = 0;
System.out.println("\n냉장고를 엽니다. 현재 설정온도 : " + temperature);
isOpen = true;
}
else System.out.println("\n이미 냉장고가 열려있습니다.");
}
// 닫기
@Override
public void turnOff() {
if(isOpen == true) {
System.out.println("냉장고를 닫습니다.");
isOpen = false;
}
else System.out.println("이미 냉장고가 닫혀있습니다.");
}
// 온도 내리기
public void upTem() {
if (temperature > -20) {
temperature = temperature -1;
System.out.println("\n온도를 1도 내립니다. 현재 온도 : " + temperature);
}
else System.out.println("\n최저 온도는 -20도 입니다. 현재 온도 : " + temperature);
}
// 온도 올리기
public void downTem() {
if (temperature < 10) {
temperature = temperature +1;
System.out.println("\n온도를 1도 내립니다. 현재 온도 : " + temperature);
}
else System.out.println("\n최고 온도는 10도 입니다. 현재 온도 : " + temperature);
}
}
냉장고 코드 작성
package airConditioner;
import java.util.Scanner;
import main.HomeAppliances;
public class AirConditioner implements HomeAppliances {
private int temperature;
private boolean isOn = false;
private int option=0;
// 에어컨 번호 선택 getter / setter
public int getOption() {
return option;
}
public void setOption(int option) {
this.option = option;
}
// 에어컨 on/off getter / setter
public boolean isOn() {
return isOn;
}
public void setOn(boolean isOn) {
this.isOn = isOn;
}
// 온도 getter / setter
public int getTemperature() {
return temperature;
}
public void setTemperature(int temperature) {
this.temperature = temperature;
}
// 옵션 출력, 입력 받기
public int chooseOption() {
Scanner sc = new Scanner(System.in);
System.out.println("<<< 기능 선택 >>>");
System.out.println("1. 전원 켜기");
System.out.println("2. 전원 끄기");
System.out.println("3. 온도 올리기");
System.out.println("4. 온도 내리기");
System.out.println("5. 이전으로");
System.out.print("번호를 입력하세요 >>> ");
option = sc.nextInt();
return option;
}
// 선택 기능으로 메소드 실행
public void doOption(int option) {
if (option == 1) choose1();
else if (option == 2) choose2();
else if (option == 3) choose3();
else if (option == 4) choose4();
}
public void choose1() {
if(isOn == false) turnOn();
else System.out.println("에어컨이 이미 켜져있습니다.");
System.out.println();
}
public void choose2() {
if(isOn == true) turnOff();
else System.out.println("에어컨이 이미 꺼져있습니다.");
System.out.println();
}
public void choose3() {
if(isOn == true) {
System.out.println("현재 온도를 1도 올립니다.");
setTemperature(getTemperature() + 1);
System.out.println("현재 온도 : " + getTemperature());
System.out.println();
}
else System.out.println("에어컨을 먼저 켜주세요");
}
public void choose4() {
if (isOn == true) {
System.out.println("현재 온도를 1도 내립니다.");
setTemperature(getTemperature() - 1);
System.out.println("현재 온도 : " + getTemperature());
System.out.println();
}
else System.out.println("에어컨을 먼저 켜주세요");
}
// 에어컨 실행
@Override
public void turnOn() {
System.out.println("에어컨을 켭니다.");
isOn = true;
temperature = 25;
System.out.println("기본 설정 온도 : " + getTemperature());
}
// 에어컨 종료
@Override
public void turnOff() {
System.out.println("에어컨을 끕니다.");
isOn = false;
}
}
에어컨 코드 작성
728x90
'국비지원_핀테크' 카테고리의 다른 글
11일차_ [java] DTO ( Data Transfer Object ) (0) | 2024.02.19 |
---|---|
11일차_ [java] 생성자 ( Constructor ) (0) | 2024.02.19 |
10일차_ [java] this, getter / setter (1) | 2024.02.16 |
10일차_ [java] 오버로딩 ( overloading ), 변수의 종류 (0) | 2024.02.16 |
10일차_ [java] 클래스 ( class ), 접근제한자, 메소드 ( method ) (0) | 2024.02.15 |