본문 바로가기

AWS CLOUD FRAMEWORK/Java

[Day11] Tv

Main

package tv;

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		
		// 숫자 키패드를 기준으로 메뉴를 구성
		// 2 : 채널 내림
		// 8 : 채널 올림
		// 4 : 볼륨 내림
		// 6 : 볼륨 올림
		// 7 : 전원
		// 9 : 음소거
		// 0 : 프로그램 종료
		
		TV tv = new TV();
		Scanner sc = new Scanner(System.in);
		int menu;
		
		do {
			System.out.print("TV 버튼 입력 : ");
			menu = Integer.parseInt(sc.nextLine());
			
			if(menu == 8) tv.channelUp();
			if(menu == 2) tv.channelDown();
			if(menu == 6) tv.volumeUp();
			if(menu == 4) tv.volumeDown();
			if(menu == 7) tv.onoff();
			if(menu == 9) tv.mute();
			
		} while (menu != 0);
		
		sc.close();
	}
}

TV

package tv;

// TV 의 객체를 상상하면서
// 클래스를 구성하세요

// 객체의 속성은 필드로 표현합니다
// 객체의 기능은 메서드로 표현합니다

// 필드는 보통 공개되지 않습니다 (private)
// 메서드는 보통 공개되어 있습니다 (public)

public class TV {

	// 속성 : 전원, 채널, 음량, TV이름...?
	private boolean power;
	private int channel = 2;
	private int volume;
	private int mute;
	private static final int MAX_CHANNEL = 20;
	private static final int MIN_CHANNEL = 2;
	private static final int MAX_VOLUME = 10;
	private static final int MIN_VOLUME = 0;
	
	
	// 기능 : 전원온오프, 채널올림/내림, 음량올림/내림, 음소거
	public boolean onoff() {
		this.power = !power;
		show();
		return power;
	}
	
	// boolean타입의 getter는 is 혹은 has 혹은 can을 사용한다
	public boolean isPower() {
		return power;
	}
	
	public int channelUp() {
		if(power) {		// 전원이 켜져 있다면
			channel++;	// 채널의 값을 1증가시킨다
			if(channel > MAX_CHANNEL) {	// 만약, 채널의 값이 최대채널을 초과하면
				channel = MIN_CHANNEL;	// 최소 채널로 값을 새로 대입한다
			}
		}
		show();
		return channel;
	}
	
	public int channelDown() {
		if(power) {
			channel--;
			if(channel < MIN_CHANNEL) {
				channel = MAX_CHANNEL;
			}
		}
		show();
		return channel;
	}
	
	public int volumeUp() {
		if(power) {
			volume++;
			if(volume > MAX_VOLUME) {
				volume = MAX_VOLUME;
			}
		}
		show();
		return volume;
	}
	
	public int volumeDown() {
		if(power) {
			volume--;
			if(volume < MIN_VOLUME) {
				volume = MIN_VOLUME;
			}
		}
		show();
		return volume;
	}
	
	public boolean mute() {
		int tmp = volume;
		volume = mute;
		mute = tmp;
		show();
		return mute != 0;
	}
	
	public void show() {
		if(power) {
			System.out.printf("┌────────────┐\n");
			System.out.printf("│  CH : %2d   │\n", channel);
			System.out.printf("│  VL : %2d   │\n", volume);
			System.out.printf("└────────────┘\n");
		}
		else {
			System.out.printf("┌────────────┐\n");
			System.out.printf("│            │\n");
			System.out.printf("│            │\n");
			System.out.printf("└────────────┘\n");
		}
	}
	
	
	// 채널은 범위안에서 값이 순환할 수 있고, 음량은 최소/최대를 벗어날 수 없다
	
}

'AWS CLOUD FRAMEWORK > Java' 카테고리의 다른 글

[Day11] JavaBeans  (0) 2023.04.05
[Day11] Ex01_Getter_Setter  (0) 2023.04.05
[Day10] Quiz  (0) 2023.04.05
[Day10] AccessModifier  (0) 2023.04.05
[Day10] Reference  (0) 2023.04.05