//요구사항] // - 인터페이스 1개 선언(IModel) // - 상속받는 클래스 3개 선언(Monitor, Speaker, Printer)
//행동규범] - 인터페이스에서 추상메서드 선언 // 1. powerOn() - 전원 켬 // 2. powerOff() - 전원 끔
//일반클래스 추가 멤버 // Monitor - 불량화소 체크 메서드 추가 // Speaker - 볼륨 조절 메서드 추가 // Printer - 인쇄 메서드 추가
//메인에서 할 일 // 1. 모니터 3대, 스피커 2대, 프린터 5대 생성 // 2. 모든 제품의 전원 On -> Off 테스트 // 3. 각 제품들의 추가 기능 테스트
import java.util.*;
public class Ex102_CastingTest
{
public static void main(String[] args)
{
//Ex102_CastingTest.java
// 1. 모니터 3대, 스피커 2대, 프린터 5대 생성
ArrayList list = new ArrayList();
list.add(new Monitor("모니터1"));
list.add(new Monitor("모니터2"));
list.add(new Monitor("모니터3"));
list.add(new Speaker("스피커1"));
list.add(new Speaker("스피커2"));
list.add(new Printer("프린터1"));
list.add(new Printer("프린터2"));
list.add(new Printer("프린터3"));
list.add(new Printer("프린터4"));
list.add(new Printer("프린터5"));
// 2. 모든 제품의 전원 On -> Off 테스트
for( IModel result : list ) {
result.powerOn();
result.powerOff();
}
// 3. 각 제품들의 추가 기능 테스트
for( IModel result : list ) {
if(result instanceof Monitor) {
((Monitor)result).checkDisplay();
}else if(result instanceof Speaker) {
((Speaker)result).upVolume();
((Speaker)result).downVolume();
}else if(result instanceof Printer) {
((Printer)result).print();
}
}//end for
}//end main
}//end Ex102_CastingTest
interface IModel
{
void powerOn();
void powerOff();
}//end IModel
class Monitor implements IModel
{
private String model; //제품명
//생성자
public Monitor(String model) {
this.model = model;
}
// 전원 시작 메서드
public void powerOn() {
System.out.printf("%s의 전원이 켜졌습니다.%n",this.model);
}
// 전원 종료 메서드
public void powerOff() {
System.out.printf("%s의 전원이 꺼졌습니다.%n",this.model);
}
//불량화소 체크 메서드
public void checkDisplay() {
System.out.printf("%s의 불량화소를 체크합니다.%n",this.model);
}
}//end Monitor
class Speaker implements IModel
{
private String model; //제품명
//생성자
public Speaker(String model) {
this.model = model;
}
// 전원 시작 메서드
public void powerOn() {
System.out.printf("%s의 전원이 켜졌습니다.%n",this.model);
}
// 전원 종료 메서드
public void powerOff() {
System.out.printf("%s의 전원이 꺼졌습니다.%n",this.model);
}
//볼륨 업 메서드
public void upVolume() {
System.out.printf("%s의 소리를 키웁니다.%n",this.model);
}
//볼륨 다운 메서드
public void downVolume() {
System.out.printf("%s의 소리를 줄입니다.%n",this.model);
}
}//end Speaker
class Printer implements IModel
{
private String model; //제품명
//생성자
public Printer(String model) {
this.model = model;
}
// 전원 시작 메서드
public void powerOn() {
System.out.printf("%s의 전원이 켜졌습니다.%n",this.model);
}
// 전원 종료 메서드
public void powerOff() {
System.out.printf("%s의 전원이 꺼졌습니다.%n",this.model);
}
// 인쇄 메서드
public void print() {
System.out.printf("%s에서 인쇄를 시작합니다.%n",this.model);
}
}//end Printer