[JAVA] ch07-02. 객체 지향 2

2017. 8. 22. 11:16·JAVA/예제
728x90
반응형
 
public class Ex02 {
    public static void main(String[] args){
        Deck deck = new Deck();
        Card card = deck.pick(0);
        System.out.println(card);

        deck.shuffle();
        card = deck.pick(0);
        System.out.println(card);
    }
}

class Card{
    static final int KIND_MAX = 4; //final을 변수에 쓰게되면 상수화.
    static final int NUM_MAX = 13;
    
    static final int SPADE = 4;
    static final int DIAMOND = 3;
    static final int HEART = 2;
    static final int CLOVER = 1;
    
    int kind;
    int number;
    
    Card(){
        this(SPADE, 1);
    }
    Card(int kind, int number){
        this.kind = kind;
        this.number = number;
    }
    public String toString(){
        String kind = " ";
        String number = " ";
        
        switch(this.kind){
        case SPADE: kind = "SPADE"; break; // 킬(명예,권력) //SPADE를 final을 사용하여 상수화가 되었기 때문에. 
 //상수만 넣을수 있던 SPAED 칸에 SPADE를 넣을 수 있었다.
        case DIAMOND: kind = "DIAMOND"; break; // 재화, 부귀
        case HEART: kind = "HEART"; break; //심장
        case CLOVER: kind = "CLOVER"; break; //교제, 행운
        }
        switch(this.number){
        case 13: number = "K"; break;
        case 12: number = "Q"; break;
        case 11: number = "J"; break;
        default: number = this.number + ""; //숫자값
        }
        return "kind: "+kind+", number: "+number;    
    }
}

class Deck{
    final int CARD_NUM = 52; // 52장의 카드
    Card[] c = new Card[CARD_NUM];
    
    Deck(){
        int i = 0;
        for(int k=Card.KIND_MAX; k>0; k--) //카드 숫자 위에서 아래로
            for(int n=1; n<=Card.NUM_MAX; n++)//카드번호 1부터 13까지 증가
                c[i++] = new Card(k,n);//카드값이 1씩증가
    }
    Card pick(int index){
        if(0<=index && index<CARD_NUM)
            return c[index];
        else
            return pick();
    }
    Card pick(){
        int index = (int)(Math.random()*CARD_NUM);
        return pick(index);
    }
    void shuffle(){ // 섞는
        for(int n=0;n<1000;n++){
            int i = (int)(Math.random()*CARD_NUM);
            Card temp = c[0]; // 버블정렬
            c[0] = c[i];
            c[i] = temp;
        }
    }
}

728x90
반응형

'JAVA > 예제' 카테고리의 다른 글

[JAVA] ch07-04. 객체 지향 4  (0) 2017.08.22
[JAVA] ch07-03. 객체 지향 3  (0) 2017.08.22
[JAVA] ch07-01. 객체 지향  (0) 2017.08.22
[JAVA] ch06-10. 배열 (Array) 10  (0) 2017.08.22
[JAVA] ch06-09. 배열 (Array) 9  (0) 2017.08.22
'JAVA/예제' 카테고리의 다른 글
  • [JAVA] ch07-04. 객체 지향 4
  • [JAVA] ch07-03. 객체 지향 3
  • [JAVA] ch07-01. 객체 지향
  • [JAVA] ch06-10. 배열 (Array) 10
밍글링글링
밍글링글링
mingling - 밍글링, 밍글밍글링. 코드와 어우러지다. IT/ 프로그래밍/소스
    반응형
    250x250
  • 밍글링글링
    mingling
    밍글링글링
  • 전체
    오늘
    어제
    • 밍글링글링 (407) N
      • Flutter (2)
      • 일상생활 (8)
        • 리뷰 (1)
        • 생활정보 (4)
        • 맛집 (0)
        • 여행 (0)
        • 모든정보 (3)
      • JAVA (126)
        • 개념 (6)
        • 예제 (115)
        • Exception (2)
      • C (1)
        • C (1)
        • C++ (0)
        • C# (0)
      • JS (29)
        • JavaScript (18)
        • JQuery (5)
        • AJax (0)
        • NODE.JS (6)
        • Angular.JS 2.0 (0)
      • WEB (87)
        • HTML (6)
        • CSS (61)
        • JSP (20)
        • JSTL (0)
      • FrameWork (8)
        • Spring (8)
        • BootStrap (0)
        • MyBATIS (0)
        • JUnit (0)
      • 외부 라이브러리 (5)
      • 공유 소스 관리 (5)
        • Git (5)
        • SVN (0)
      • 빅데이터 프로그래밍 (37)
        • Python (37)
        • R Programming (0)
      • DB (7)
        • ORACLE (0)
        • MySql (6)
      • Development Tools (7)
        • StarUML (0)
        • eXERD (0)
        • Eclipse (4)
      • SKILL (6)
        • Migration (0)
        • Security (6)
      • MicroSoft (0)
        • Excel (0)
        • Word (0)
      • Android (0)
      • Server (21)
        • Ubuntu (5)
        • Linux (15)
      • IOS (0)
      • XML (0)
      • 미디어 (0)
      • 공지사항 (3)
      • NETWORK (1)
      • 게임 (4)
        • 피파 (1)
        • 리니지M (0)
        • 배틀그라운드 (1)
        • 듀랑고 (2)
      • 세상 이슈 (6)
      • 일렉트론 (0)
      • 대회 소식 (4)
      • 업무 (2)
      • Express, Vue (6)
      • docker (11)
      • svelte (3)
      • 블록체인 (1)
      • IT (10) N
      • Rust (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리눅스 설치
    에디터 팁
    css tb
    오류
    java casting
    servlet class
    Java Array
    css block
    자바 exception
    css perspective
    클론코딩
    프런트엔드
    css transition
    ubuntu
    VS Code 팁
    AI 코딩 에이전트
    mysql db
    svelte
    Extension Bisect
    러스트
    jsp include
    nginx ssl 설정
    css list
    vue cli
    API 설계
    vue 설치
    브라우저 자동화
    자바 for문
    Node
    자바 생성자
    css table
    proxy pass
    SSL 인증서
    React Compiler
    자바 배열
    ssl 인증서 발급
    jsp parameter
    Rust lang
    spring java
    rust linux
    자바 객체 지향
    gitlab 설치
    nginx
    vscode
    docker
    css float
    nginx ssl 적용
    티스토리 자동화
    lang rust
    자바 클래스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
밍글링글링
[JAVA] ch07-02. 객체 지향 2
상단으로

티스토리툴바