하나의 인터페이스를 여러 객체가 구현하게 되면 클라이언트는 인터페이스의 메서드를 이용해서 여러 객체의 구현을 사용할 수 있다
db.properties에 따라 mysql, oracle 중 선택하여 같은 인터페이스의 다른 클래스를 사용한다
모든 변수는 상수로 변환된다
public static final
모든 메서드는 추상 메서드이다
모든 선언된 메서드는 추상 메서드 public abstract
디폴트 메서드: 구현을 갖는 메서드, 인터페이스를 구현하는 클래스들에서 공통으로 사용할 수 있는 기본 메서드
default 키워드 사용
하위 클래스에서 재정의할 수 있음
정적 메서드: 인스턴스 생성과 상관 없이 인터페이스 타입으로 사용할 수 있는 메서드
static 클래스
private 메서드
인터페이스를 구현한 클래스에서 사용하거나 재정의할 수 없음
인터페이스 내부에서만 사용하기 위해 구현하는 메서드
default메서드나 static메서드에서 사용함
Player가 있고 Player는 GameLevel 속성을 가집니다. 각 GameLevel 단계 마다 run(), jump(), turn() 세 가지 기능이 업그레이드 됩니다.
초보자 레벨 : 천천히 달립니다. run() 만 가능
중급자 레벨 : 빠르게 달리고, 점프할 수 있습니다. run(), jump() 가능
고급자 레벨 : 엄청 빠르게 달리고, 높게 점프하고, 턴할 수 있습니다. run(), jump(), turn() 가능
Player는 한번에 하나의 레벨 상태만을 가질 수 있습니다.
Player가 play() 중에 레벨에 있는 go(int count) 라는 메서드를 호출하면 run() 하고 count 횟수 만큼 jump() 하고 turn() 합니다. 다음 클래스 다이어그램을 참고하여 각 레벨에서 go() 가 호출 될때 다음과 같이 출력 되도록 하세요
Player
변수: level
메서드: 레벨을 반환, 입력된 레벨로 레벨을 업그레이드, 입력한 값만큼 플레이
public class Player {
private PlayerLevel level;
public Player(){
level = new BeginnerLevel();
level.showLevelMessage();
}
public PlayerLevel getLevel(){
return level;
}
public void upgradeLevel(PlayerLevel level){
this.level = level;
level.showLevelMessage();
}
public void play(int i) {
level.go(i);
}
}
PlayerLevel
메서드: run하고 go에 들어온 만큼 for를 돌려서 jump하고 turn, showLevelMessage함수 생성
BeginnerLevel
run, jump, turn, showLevelMessage 정의
AdvancedLevel
run, jump, turn, showLevelMessage 정의
SuperLevel
run, jump, turn, showLevelMessage 정의
세 가지 정책은 필요에 따라 바뀌어 운영될 수 있습니다. 다음 클래스 다이어그램을 참고하여 각 배분 규칙이 적용되도록 구현해 보세요
메서드: getNextCall, sendCallToAgent 생성
Scheduler implement 후 구현
Scheduler implement 후 구현
Scheduler implement 후 구현