'열거형'에 해당되는 글 1건

  1. 2013.10.21 1장. 잘 설계된 프로그램이 세상을 뒤흔든다. - 2
posted by 셀로브 2013. 10. 21. 07:14

대소문자가 구분되어진 문자열등을 비교할때에 열거형을 이용하면 많은 오류를 예방할 수 있습니다.
타입의 안전성과 값의 안전성이 증가하기 때문이니다. 아래와같이 열거형을 작성해봅시다.

Builder.java

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
public enum Builder {
    FENDER, MARTIN, GIBSON, COLLINGS, OLSON, RYAN, PRS, ANY;
    
    public String toString(){
        switch(this){
        case FENDER:
            return "Fender";
        case MARTIN:
            return "Martin";
        case GIBSON:
            return "Gibson";
        case COLLINGS:
            return "Collings";
        case OLSON:
            return "Olson";
        case RYAN:
            return "Ryan";
        case PRS:
            return "Prs";
        case ANY:
            return "Any";
        default:
            return "";
        }
    }
}



Type.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public enum Type {
    ACOUSTIC, ELECTRIC;
    
    public String toString(){
        switch(this){
        case ACOUSTIC:
            return "acoustic";
        case ELECTRIC:
            return "electric";
        default:
            return "";
        }
    }
}

Wood.java

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
public enum Wood {
    INDIAN_ROSEWOOD, BRAZILIAN_ROSEWOOD, MAHOGANY, MAPLE, COCOBOLO,
 CEDAR, ADIRONDACK, ALDER, SITKA;
    
    public String toString(){
        switch(this){
        case INDIAN_ROSEWOOD :
            return "Indian Rosewood";
        case BRAZILIAN_ROSEWOOD :
            return "Brazilian Rosewood";
        case MAHOGANY :
            return "Mahogany";
        case MAPLE :
            return "Maple";
        case COCOBOLO :
            return "Cocobolo";
        case CEDAR :
            return "Cedar";
        case ADIRONDACK :
            return "Adirondack";
        case ALDER :
            return "Alder";
        case SITKA :
            return "Sitka";
        default:
            return "";
        }
    }
}

이제, FindGuitarTester.java 의 이전의 main함수에서 whatJinLikes객체를 초기화할때 열거형을 사용할 수 있습니다. 열거형 이름 Builder를 입력한후 점('.')을 입력하면 아래와 같이 열거형 Builder의 값 집합들을 볼 수 있습니다.






기존에 문자열비교를 하였던 부분은 다음과같이 바뀌었습니다. 많이 간략해진것을 확인할수 있습니다.




그러나 모델(model)의 경우에는 무수히 많으며 예측하기 어려우므로 열거형으로 표현하기에 부적절합니다. 때문에 모델은 toLowerCase()함수를 통해 소문자로 변경한 후에 문자열비교를 해줍니다.

이제, 고객이 원하는 프로그램을 만들어 나가는데 한발 내딛었네요. 프로그램도 조금 더 견고해 졌습니다. 하지만 처리해야할 다른 요구사항이 있네요.



다음 내용 공부하기