//main매소드
package Chap_08;
import Chap_08.Camera.SpeedCam;
import Chap_08.detector.AccidentDetector;
import Chap_08.reporter.VideoReporter;
public class _Quiz_08 {
public static void main(String[] args) {
SpeedCam speedCam = new SpeedCam();
speedCam.setDetector(new AccidentDetector());
speedCam.setReporter(new VideoReporter());
speedCam.detect();
speedCam.report();
}
}
package Chap_08.detector;
public class AccidentDetector implements Detectable {
@Override
public void detect() {
System.out.println("교통 사고를 감지합니다.");
}
}
package Chap_08.Camera;
import Chap_08.detector.AccidentDetector;
import Chap_08.detector.Detectable;
import Chap_08.reporter.Reportable;
import Chap_08.reporter.VideoReporter;
public class SpeedCam extends Camera implements Detectable, Reportable {
public AccidentDetector accidentDetector;
public VideoReporter videoReporter;
@Override
public void showMainFeature() {
System.out.println("속도 측정, 번호 인식");
}
@Override
public void detect() {
accidentDetector.detect();
}
@Override
public void report() {
videoReporter.report();
}
//인수로 들어온 녀석을 이번 객체의 accidentDetector라는 변수에 넣어라
public void setDetector(AccidentDetector accidentDetector) {
this.accidentDetector = accidentDetector;
}
public void setReporter(VideoReporter videoReporter) {
this.videoReporter = videoReporter;
}
}
package Chap_08.reporter;
public class VideoReporter implements Reportable{
@Override
public void report() {
System.out.println("직전 30초 영상과 함께 신고를 진행합니다.");
}
}
//인터페이스들
package Chap_08.detector;
public interface Detectable {
void detect(); // 화재 감지
}
package Chap_08.reporter;
public interface Reportable {
void report(); //신고 기능
}