다음과 같이 여러 정렬 구현 알고리즘이 입력에 따라 실행될 수 있도록 구현해 보세요.
public interface Sort {
void ascending(int[] arr);
void descending(int[] arr);
default void description() {
System.out.println("숫자를 정렬하는 알고리즘입니다");
}
}
Sort인터페이스를 만들고 int[] arr을 매개변수로하는 asceding()과 descending()메서드를 만든 후 default메서드로 description 을 추가합니다.
public class BubbleSort implements Sort {
public void ascending(int[] arr) {
System.out.println("BubbleSort ascending");
}
public void descending(int[] arr) {
System.out.println("BubbleSort decending");
}
@Override
public void description() {
Sort.super.description();
System.out.println("BubbleSort입니다");
}
}
인스턴스를 구현할 BubbleSort 클래스를 만들고 ascending()과 desceding() 메서드를 만들어 출력문을 출력합니다. default 클래스를 재정의하여 출력문을 추가합니다. 이후 HeapSort클래스와 QuickSort클래스를 만들어 같은 작업을 반복해 줍니다.
import java.io.IOException;
public class SortTest {
public static void main(String[] args) throws IOException {
System.out.println("정렬방식을 선택하세요.");
System.out.println("B : BubbleSort");
System.out.println("H : HeapSort");
System.out.println("Q : QuickSort");
int ch = System.in.read();
Sort sort = null;
if(ch == 'B' || ch == 'b') {
sort = new BubbleSort();
}
else if(ch == 'H' || ch == 'h') {
sort = new HeapSort();
}
else if(ch == 'Q' || ch == 'q') {
sort = new QuickSort();
}
else {
System.out.println("잘못된 입력입니다.");
return;
}
int[] arr = new int[10];
sort.ascending(arr);
sort.descending(arr);
sort.description();
}
}
// 결과
정렬방식을 선택하세요.
B : BubbleSort
H : HeapSort
Q : QuickSort
H
HeaSort ascending
HeaSort decending
숫자를 정렬하는 알고리즘입니다
HeaSort입니다
Test 클래스를 만들고 출력문을 출력 후 정렬방식을 입력받기 위해 System.in.read()를 작성 후 if if-else문을 통해 입력값에 따라 다른 정렬방식의 인스턴스를 생성합니다. 그후 생성된 인스턴스에 asceding(),desceding(),description() 메서드를 실행하면 결과값같이 나오게 됩니다.