본문 바로가기

알고리즘/문제 풀이

JAVA QUIZ 08

//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(); //신고 기능

}