Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

OOP는 실 사물을 프로그래밍의 오브젝트로 반영해서 조금더 리얼 세상과 비슷한 방식으로 프로그래밍을 하게해준다.

동물 - 포유류 - 새 이런것은 너무 따분하고 ( 쓸일이 없다) / 스타크래프트의 시져탱크,벌쳐의 구현예는 어려울수 있다. ( 게임을 모른다)

포커카드+포커핸드는 OOP를 연습하기에 좋은 오브젝트이다. 적어도 고스톱 패보다 직관적이며 단순하다.

다음코드는 단독으로 실행되는 멀티플레이어 포커를 목표로 작성되고 있으며, 이 강좌의 코드를 포함하고 있습니다.

언젠가는 작동될것입니다.

git : http://git.webnori.com/projects/PLPOK/repos/playjava-poker-standalone/browse/app/game/poker



카드분석

OOP 개발의 첫걸음부터 마지막까지 먼저 해야할것은 사물에대한 관찰이고 이해이며 공감할수 있어야하는것이다.

코딩 First가 아니다. 경험을 통해 훈련해야하는것이다.

그럼 카드에대해 아는만큼 분석해보자

  • 카드는 4가지 모양이 있다 
  • 카드는 고유 숫자와 그에 해당하는 Ace~King 각각의 고유 이름이 있다.
  • 카드 셋팅은 카드의 숫자와 모양을 있으며,  King of Diamond라는 자연스러운 카드명을 사용할수 있다
  • 한번 정해진 카드는 모양과 숫자를 바꿀수없다. ( 영웅본색모드가아닌이상 불변성을 보장을 하자 / Test를 위해 생성된 카드의 주요속성을 변경할수 있지만, 이것을 허용하게될 경우 수많은 디펙에 시달릴것이다.)

카드구현

이제 분석을 토대로 , 언어의 특성을 고려하여 OOP로 구현해보자

...

그것이 OOP의 설계능력을 늘릴수 있는방법이며, JUnit은 그것을 도와준다. 

다음은 우리주위에 존재하는 두가지 부류의 개발자이다.

...



Code Block
languagejava
themeEmacs
titleCard테스트
@Test
public void cardTest(){
    for(int i=1;i<14;i++){
        Card card1 = new Card(i, Card.Suit.DIAMONDS);
        System.out.println(card1);
        //check
        if(i==13) assertThat(card1.toString()).as("cardTest").isEqualTo("King of DIAMONDS");
    }
}

...