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();
}
}
'개발이야기' 카테고리의 다른 글
[Apache HTTPD] Log rotation(logrotate) - 시간당 로그 쌓기 (0) | 2012.12.04 |
---|---|
정규식 패턴 문법 (0) | 2012.11.28 |
과제1. 구구단 단수와 반복 횟수를 입력 받아서 구구단을 출력 (0) | 2012.10.30 |
Chap1. 안드로이드 개발환경 구축하기 (0) | 2012.08.09 |
2950,2960 패스워드 리커버리 (0) | 2012.07.13 |