티스토리 뷰

반응형

39. 인터페이스를 활용한 다형성 구현 - 2

package call_center;

public class LeastJob implements Schedular{

	@Override
	public void getNextCall() {
		System.out.println("상담 전호를 순서대로 대기열에서 가져옵니다.");
		
	}
	@Override
	public void sendCallToAgent() {
		System.out.println("현재 상담 업무가 없거나 상담 대기가 가장 적은 상담원에게 할당합니다.");
		
		
	}

}

 

 

package call_center;

public interface Schedular {
	public void getNextCall();

	public void sendCallToAgent();

}
//인터페이스는 모듈이 해야할 일을 정의해놓은 것이다.
package call_center;

public class PriorityALlocation  implements Schedular{

	@Override
	public void getNextCall() {
		System.out.println("고객 등급이 높은 고객의 call 을 먼저 가져옵니다.");
		
	}
	@Override
	public void sendCallToAgent() {
		System.out.println("업무 숙련도가 높은 상담원에게 먼저 배분합니다.");
		
		
	}

}
package call_center;

import java.io.IOException;

public class ScheduleTest {

	public static void main(String[] args) throws IOException {
		System.out.println("전화 상담원 할당 방식을 선택하셍");
		System.out.println("R: 한명씩 차례대로");
		System.out.println("L: 대기가 적은 상담원 우선");
		System.out.println("P: 우선순위가 높은 고객우선  숙련도 높은 상담원");

		int ch = System.in.read();
		Schedular schedular = null;
		if (ch == 'R' || ch == 'r') {
			schedular = new RoudRobin();
		} else if (ch == 'L' || ch == 'l') {
			schedular = new LeastJob();
		} else if (ch == 'P' || ch == 'p') {
			schedular = new PriorityALlocation();
		} else {
			System.out.println("지원안됨");
			return;

		}

		schedular.getNextCall();
		schedular.sendCallToAgent();
		/*
		 * 전화 상담원 할당 방식을 선택하셍 R: 한명씩 차례대로 L: 대기가 적은 상담원 우선 P: 우선순위가 높은 고객우선 숙련도 높은 상담원 R
		 * 상담 전호를 순서대로 대기열에서 가져옵니다. 다른 순서 상담원에게 배분합니다.
		 */

	}

}

 

 

 

40. 인터페이스의 요소들 - 1


| 인터페이스 요소

상수: 선언된 모든 변수는 상수로 처리됨

메서드: 모든 메서드는 추상메서드

디폴트 메서드: 기본 구현을 가지는 메서드, 구현하는 클래스에서 재정의 할 수 있음

정적메서드: 인스턴스 생성과 상관없이 인터페이스 타입으로 호출하는 메서드

private 메서드: 인터페이스 내에서 사용하기 위해 구현한 메소드

구현한 클래스에서 재정의 할 수 없음


| 여러개의 인터페이스 구현하기

인터페이스는 구현 코드가없으므로 하나의 클래스가 여러 인터페이스를 구현할 수 있음

디폴트 메서드의 이름이 중복되는 경우 재정의 함.

 

 

| 인터페이스 상속

인터페이스 간에 상속이 가능함

구현이 없으므롷 extends  뒤에 여러 인터페이스를 상속 받을 수 있음. 

구현 내용이 없으므로, 타입 상속이라고 한다. 

 

 

package interfaceex;

public class CompleteCalc extends Calculator {

	@Override
	public int times(int num1, int num2) {

		return num1 * num2;
	}

	@Override
	public int divide(int num1, int num2) {

		if (num2 == 0) {
			return ERROR;
		} else {
			return num1 / num2;
		}

	}
	public void showInfo() {
		// TODO Auto-generated method stub
		System.out.println("구현 완료");
	}
//
//	@Override
//	public void description() {
//	System.out.println("new 정수 계산기를 구현합니다.");
//	}

}
package interfaceex; public abstract class Calculator implements Calc{ @Override public int add(int num1, int num2) { // TODO Auto-generated method stub return num1 +num2; } @Override public int substract(int num1, int num2) { // TODO Auto-generated method stub return num1 -num2; } }

 

package interfaceex;

public interface Calc {
	double PI = 3.14; // 상수, 변수와 상관없이 상수 메모리 사용
	int ERROR = -99999999;

	int add(int num1, int num2);

	int substract(int num1, int num2);

	int times(int num1, int num2);

	int divide(int num1, int num2);

	default void description() {
		myMethod();
		System.out.println("정수 계산기를 구현합니다.");
		
	}

	static int total(int[] arr) {
		int total = 0;
		for (int i : arr) {
			total += i;
		}
		myStaticMethod();
		return total;
	}
	
	private void myMethod() {
		System.out.println("private Method");
	}

// static 에서만 사용 가능
	private static void myStaticMethod() {
		System.out.println("private static Method");
	}

}
package interfaceex;

abstract class CalcTest {

	public static void main(String[] args) {
		CompleteCalc calc = new CompleteCalc();
		int n1 = 10;
		int n2 = 2;// C:\Users\rha31\eclipse\java-2020-03\eclipse
		System.out.println(calc.add(n1, n2));
		System.out.println(calc.substract(n1, n2));
		System.out.println(calc.times(n1, n2));
		System.out.println(calc.divide(n1, n2));
		calc.showInfo();
		calc.description();
		int[] arr = { 1, 2, 3, 4, 5 };
		System.out.println(Calc.total(arr));

		/*
		 * 12 8 20 5 구현 완료 private Method 정수 계산기를 구현합니다. 15
		 * 
		 * 
		 */

	}

}

바 인강이 듣고 싶다면 =>https://bit.ly/3ilMbIO

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함