Page History
...
- 카드는 4가지 모양이 있다 → enum이라는 열거형을 사용
- 카드는 고유 숫자와 그에 해당하는 Ace~King 각각의 고유 이름이 있다. → 각 랭크를 배열에 맵핑
- 카드 셋팅은 카드의 숫자와 모양을 지정할수 있으며, King of Diamond라는 자연스러운 카드명을 사용할수 있다 → toString 재정의
- 한번 정해진 카드는 모양과 숫자를 바꿀수 없다 → 접근자(public/private) 의 올바른 사용 사용 - 이것은 추후 세터를 무분별하게 지정하지 않는 객체의 불변성으로 이어집니다.
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
package game.poker; public class Card { public enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES }; private final Suit suit; private final int rank; private final String[] NAMES = {"Dummy", // element 0 not used "Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"}; public Card(int givenRank, Suit givenSuit) { rank = givenRank; suit = givenSuit; } public int getRank() { return rank; } public Suit getSuit() { return suit; } public String toString() { return NAMES[rank] + " of " + suit; } public static String toString(Card[] arr) { StringBuilder sb = new StringBuilder(); sb.append("["); for (int i = 0; i < arr.length; ++i) { if (i > 0) { // every element after first one has comma before it sb.append(", "); } sb.append(arr[i]); } sb.append("]"); return sb.toString(); } } |
...