Tv, Radio, Light(전등)를 조작할 수 있는 만능리모콘을 만드시오.
PowerfulRemoteController 클래스는 Tv, Radio, Light 등을 모두 조작할 수 있는 만능리모콘이다.
아래 코드를 참고하고, 필요한 경우 클래스, 추상클래스, 인터페이스 등을 추가하시오.
문제 예시)
// 필요할 경우 클래스, 추상클래스, 인터페이스는 추가로 작성
public class Tv […] {
// 필요한 코드 작성 (이전 과제 Tv 코드 참고)
}
public class Radio […] {
// 필요한 코드 작성
}
public class Light […] {
// 필요한 코드 작성
}
public class PowerfulRemoteController […] {
// 필요한 코드 작성 (이전 과제 RemoteController 코드 참고)
}
public class Test {
public static void main(String[] args) {
[...] tv = new Tv([...]);
[...] radio = new Radio([...]);
[...] light = new Light([...]);
PowerfulRemoteController rc = new PowerfulRemoteController([...]);
// 리모콘을 Tv용으로 설정하는 코드 작성
rc.powerOnOff([...]);
rc.volumeUp([...]);
tv.printStatus();
// 리모콘을 Radio용으로 설정하는 코드 작성
rc.powerOnOff([...]);
radio.printStatus();
// 리모콘을 Light용으로 설정하는 코드 작성
rc.powerOnOff([...]);
light.printStatus();
}
}
RemoteController.java
public interface RemoteController {
int MAX_VOLUME = 20;
int MIN_VOLUME = 0;
int MAX_CHANNEL = 50;
int MIN_CHANNEL = 1;
void powerOnOff();
void channelUp();
void volumeDown();
void volumeUp();
void channelDown();
void printStatus();
}
Tv.java
public class Tv implements RemoteController {
Boolean isPowerOn = false;
int channel = 0;
int volume = 0;
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);
}
}
Radio.java
public class Radio implements RemoteController {
Boolean isPowerOn = false;
int channel = 0;
int volume = 0;
Radio(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);
}
}
Light.java
public class Light implements RemoteController {
Boolean isPowerOn = false;
Light(Boolean inPowerState) {
isPowerOn = inPowerState;
}
public void powerOnOff() {
if(isPowerOn) isPowerOn = false;
else isPowerOn = true;
}
public void volumeUp() {
System.out.println("동작하지 않는 기능 입니다.");
}
public void volumeDown() {
System.out.println("동작하지 않는 기능 입니다.");
}
public void channelUp() {
System.out.println("동작하지 않는 기능 입니다.");
}
public void channelDown() {
System.out.println("동작하지 않는 기능 입니다.");
}
public void printStatus() {
System.out.print("power : ");
if(isPowerOn) System.out.print("true");
else System.out.print("false");
}
}
PowerfulRemoteController.java
public class PowerfulRemoteController {
RemoteController obj;
PowerfulRemoteController(RemoteController inObj) {
obj = inObj;
}
public void changeType(RemoteController 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();
}
public void printStatus() {
obj.printStatus();
}
}
Test.java
public class Test {
public static void main(String[] args) {
Tv tv = new Tv(false, 5);
Radio radio = new Radio(false, 4);
Light light = new Light(false);
PowerfulRemoteController rc = new PowerfulRemoteController(tv);
rc.powerOnOff();
rc.channelUp();
rc.volumeUp();
tv.printStatus();
rc.changeType(radio);
rc.powerOnOff();
rc.channelUp();
rc.channelUp();
rc.volumeUp();
radio.printStatus();
rc.changeType(light);
rc.powerOnOff();
rc.channelUp();
rc.channelUp();
rc.volumeUp();
light.printStatus();
}
}
출력결과)
power : true, channel 2, volume 6
power : true, channel 3, volume 5
동작하지 않는 기능 입니다.
동작하지 않는 기능 입니다.
동작하지 않는 기능 입니다.
power : true
참고사이트: http://blog.naver.com/PostView.nhn?blogId=blueherald&logNo=120141051233
'개발이야기' 카테고리의 다른 글
이전 명함관리 프로그램을 이용하여 기능을 추가하시오. (0) | 2013.01.14 |
---|---|
명함관리 클래스를 완성하시오. (0) | 2013.01.04 |
웹 해킹 서버 분석과 웹쉘 대응방법 (0) | 2012.12.26 |
ARP Commands (0) | 2012.12.26 |
ARP 스푸핑(ARP Spoofing) 감지를 위한 arpwatch (0) | 2012.12.26 |