[Java 객체지향] 인터페이스 구현 예제 프로그램 (상담원 연결 구현)

2022. 2. 2. 22:07·Java
고객 센터에 전화 상담을 하는 상담원들이 있다. 고객에게 전화가 오면 대기열에 저장해놓고 각 상담원에게 배분된다.

배분 정책
1) 들어오는 상담 전화를 대기열에 순서대로 저장해 놓고 상담원에게 순서대로 배분한다. 
2) 쉬고 있거나 할당된 통화 수가 가장 적은 상담원에게 배분한다.
3) 등급이 높은 고객의 전화를 업무능력이 우수한 상담원에게 배분한다.

 

클래스 다이어그램

 

Scheduler.java
package scheduler;

public interface Scheduler {
	
	void getNextCall();	// 고객의 전화를 가져옴
	void sendCallToAgent();	// 상담원에게 배분
}

 

LeastJob.java
package scheduler;

public class LeastJob implements Scheduler{

	@Override
	public void getNextCall() {
		System.out.println("상담 전화를 순서대로 대기열에서 가져옵니다.");
	}

	@Override
	public void sendCallToAgent() {
		System.out.println("현재 상담업무가 없거나 상담대기가 적은 상담원에게 배분합니다.");
	}
	
}

 

PriorityAllocation.java
package scheduler;

public class PriorityAllocation implements Scheduler{

	@Override
	public void getNextCall() {
		System.out.println("등급이 높은 고객의 상담 전화를 가져옵니다.");
	}

	@Override
	public void sendCallToAgent() {
		System.out.println("업무 능력이 우수한 상담원에게 배분합니다.");		
	}
	
}

 

RoundRobin.java
package scheduler;

public class RoundRobin implements Scheduler{

	@Override
	public void getNextCall() {
		System.out.println("상담 전화를 순서대로 대기열에서 가져옵니다.");
	}

	@Override
	public void sendCallToAgent() {
		System.out.println("다음 순서의 상담원에게 배분합니다.");
	}
	
}

 

SchedulerTest.java
package scheduler;

import java.io.IOException;

public class SchedulerTest {

	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();
		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();
	}

}

 

수행 결과

 

저작자표시 비영리 변경금지 (새창열림)

'Java' 카테고리의 다른 글

[Java 클래스] Object 클래스  (0) 2022.02.02
[Java 객체지향] 추상 클래스와 템플릿 메서드 활용 예제 프로그램 (GameLevel 구현)  (0) 2022.02.02
[Java 객체지향] 여러 개의 인터페이스 구현, 인터페이스 간 상속  (0) 2022.02.01
'Java' 카테고리의 다른 글
  • [Java 클래스] Object 클래스의 메서드 활용
  • [Java 클래스] Object 클래스
  • [Java 객체지향] 추상 클래스와 템플릿 메서드 활용 예제 프로그램 (GameLevel 구현)
  • [Java 객체지향] 여러 개의 인터페이스 구현, 인터페이스 간 상속
suaring
suaring
개발 공부 로그
  • suaring
    Sue's devlog
    suaring
  • 전체
    오늘
    어제
    • 분류 전체보기 (123)
      • Algorithm (2)
      • WEB (8)
      • Spring (26)
      • Java (83)
      • Kotlin (1)
      • Database (1)
      • Infra (0)
      • Git (1)
      • devlog (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
suaring
[Java 객체지향] 인터페이스 구현 예제 프로그램 (상담원 연결 구현)
상단으로

티스토리툴바