29강. 인터페이스와 다형성 구현(2)
- Do it! 자바 프로그래밍 입문 온라인 강의를 수강하며 작성하였습니다.
- Section 1. 자바의 핵심 - 객체지향 프로그래밍
- 29강 "인터페이스와 다형성 구현(2)"
- 인터페이스와 다형성
인터페이스와 다형성
- 인터페이스는 "Client Code"와 서비스를 제공하는 "객체" 사이의 약속이다.
- 어떤 객체가 어떤 interface 타입이라 함은 그 interface가 제공하는 메서드를 구현했다는 의미이다.
- Client는 어떻게 구현되었는지 상관없이 interface의 정의만을 보고 사용할 수 있다.(ex. JDBC)
- 다양한 구현이 필요한 인터페이스를 설계하는 일은 매우 중요한 일이다.
UserInfoWeb은 IUserInfoDao에 정의된 메소드 명세만 보고 Dao를 사용할 수 있고, Dao 클래스들은 IUserInfoDao에 정의된 메소드를 구현할 책임이 있다.
Scheduler 예제
public interface Scheduler {
void getNextCall();
void sendCallToAgent();
}
Scheduler 클래스를 interface로 정의하여 getNextCall(), sendCallToAgent() 메서드를 선언만 했다.
public class RoundRobin implements Scheduler{
@Override
public void getNextCall() {
System.out.println("상담 전화를 순서대로 대기열에거 가져옵니다.");
}
@Override
public void sendCallToAgent() {
System.out.println("다음 순서 상담원에게 배분합니다.");
}
}
public class LeastJob implements Scheduler{
@Override
public void getNextCall() {
System.out.println("상담 전화를 순서대로 대기열에거 가져옵니다.");
}
@Override
public void sendCallToAgent() {
System.out.println("현재 상담 업무가 없거나 상담 대기가 가장 적은 상담원에게 할당합니다.");
}
}
public class PriorityAllocation implements Scheduler{
@Override
public void getNextCall() {
System.out.println("고객의 등급이 높은 고객의 전화를 먼저 가져옵니다.");
}
@Override
public void sendCallToAgent() {
System.out.println("업무 skill이 가장 높은 상담원의 대기열에 앞에 우선 배분합니다.");
}
}
RoundRobin, LeastJob, PriorityAllocation 클래스에서 Scheduler 클래스를 implements하고 메서드를 구현하였다.
import java.io.IOException;
public class SchedulerTest {
public static void main(String[] args) throws IOException {
System.out.println("전화 상담 배분방식을 선택하세요. (R, L, P)");
int ch = System.in.read();
Scheduler scheduler = null;
if(ch == 'R' || ch == 'r') {
scheduler = new RoundRobin();
}else if(ch == 'L' || ch == 'l') {
scheduler = new LeastJob();
}else if(ch == 'P' || ch == 'p') {
scheduler = new PriorityAllocation();
}else {
System.out.println("지원하지 않는 기능입니다.");
return;
}
scheduler.getNextCall();
scheduler.sendCallToAgent();
}
}
main함수가 있는 SchedulerTest 클래스에서 다형성을 구현하였다.
System.in.read(); 는 사용자 입력을 받는 함수이고, IOException은 예외 처리 하는 문법이다. (추후 배울 예정)
각각의 경우에서 정상 출력되는 것을 확인할 수 있다.
Author And Source
이 문제에 관하여(29강. 인터페이스와 다형성 구현(2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@migratory_bird/Do-it-Java-Programming-28-ykvjx3v9저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)