본문 바로가기

개발이야기

Tv 클래스를 주석 내용과 같이 코드를 완성하고, Tv 클래스와 상호작용이 가능한 RemoteController 클래스를 만드시오.

RemoteController 클래스는 Tv 클래스와 역할이 동일한 powerOnOff, volumeUp, volumeDown, channelUp, channelDown

메서드를 가진다.

RemoteController 인스턴스의 channelUp 메서드를 호출하면 Tv 인스턴스의 channelUp 메서드가 호출된다. (테스트 코드 참고)

public class Tv {
    private Boolean isPowerOn;
    private int channel;
    private int volume;
    private final int MAX_VOLUME = 20; // 최댓값과 최솟값은 상수로 정의
    private final int MIN_VOLUME = 0;
    private final int MAX_CHANNEL = 50;
    private final int MIN_CHANNEL = 1;

    // (1) 전원 off, channel의 초기값 MIN_CHANNEL, volume의 초기값 5로 셋팅

    public void powerOnOff() {
       
// (2) isPowerOn의 값이 true이면 false로, false이면 true로
       
//     변경하시오. (true:전원이 켜진 상태, false:전원이 꺼진 상태)
    }
    public void volumeUp() {
       
// (3) volume 값이 MAX_VOLUME 보다 작을 때만 1증가 시킴
    }
    public void volumeDown() {
       
// (4) volume 값이 MIN_VOLUME 보다 클 때만 1감소 시킴
    }
    public void channelUp() {
       
// (5) channel 값을 1증가 시킴
       
//     만일 channel 값이 MAX_CHANNEL이면 channel 값을
       
//     MIN_CHANNEL 값으로 변경
    }
    public void channelDown() {
       
// (6) channel 값을 1감소 시킴
       
//     만일 channel 값이 MIN_CHANNEL이면 channel 값을
       
//     MAX_CHANNEL 값으로 변경
    }
    public void printStatus() {
       
// (7) 현재 전원상태와 channel과 volume 값을 콘솔화면에 출력
    }
}

public class RemoteController {
    // (8) RemoteController class 구현
}

public class Test {
    public static void main(String[] args) {
        Tv tv = new Tv(
[...]);
        RemoteController rc = new RemoteController(
[...]);
       
[…]
        rc.powerOnOff(
[...])
        rc.channelUp(
[...]);
        tv.printStatus();      // power : true, channel : 2, volume : 0
        rc.volumeUp(
[...]);
        tv.printStatus();      // power : true, channel : 2, volume : 1
    }
}



Tv.java

import java.util.*;


public class Tv {

    private Boolean isPowerOn;

    private int channel;

    private int volume;

    private final int MAX_VOLUME = 20;

    private final int MIN_VOLUME = 0;

    private final int MAX_CHANNEL = 50;

    private final int MIN_CHANNEL = 1;


Tv(Boolean inPowerState, int inVolume) {

isPowerOn = inPowerState;

channel = MIN_CHANNEL;

if(inVolume >= MIN_VOLUME && inVolume <= MAX_VOLUME) volume = inVolume;

else volume = MIN_VOLUME;

}


    public void powerOnOff() {

if(isPowerOn) isPowerOn = false;

else isPowerOn = true;

    }

    public void volumeUp() {

if(isPowerOn) {

if(volume <= MAX_VOLUME) ++volume;

}

    }

    public void volumeDown() {

if(isPowerOn) {

if(volume > MIN_VOLUME) --volume;

}

    }

    public void channelUp() {

if(isPowerOn) {

if(channel >= MAX_CHANNEL) channel = MIN_CHANNEL;

else ++channel;

}

    }

    public void channelDown() {

if(isPowerOn) {

if(channel <= MIN_CHANNEL) channel = MAX_CHANNEL;

else --channel;

}

    }

    public void printStatus() {

System.out.print("power : ");

if(isPowerOn) System.out.print("true");

else System.out.print("false");

System.out.println(", channel  "+channel+", volume  "+volume);

    }

}


RemoteController.java

public class RemoteController {

Tv obj;

RemoteController(Tv inObj) {

obj = inObj;

}


public void powerOnOff() {

obj.powerOnOff();

    }

    public void volumeUp() {

obj.volumeUp();

    }

    public void volumeDown() {

obj.volumeDown();

    }

    public void channelUp() {

obj.channelUp();

    }

    public void channelDown() {

obj.channelDown();

    }

}


TvController.java

public class TvController {

    public static void main(String[] args) {

        Tv tv = new Tv(false, 5);

        RemoteController rc = new RemoteController(tv);

        rc.powerOnOff();

        tv.printStatus();

        rc.channelUp();

        tv.printStatus();

        rc.powerOnOff();

        tv.printStatus();

        rc.channelUp();

        tv.printStatus();

        rc.powerOnOff();

        tv.printStatus();

        rc.volumeUp();

        tv.printStatus();

    }

}