OOP는 실 사물을 프로그래밍의 오브젝트로 반영해서 조금더 리얼 세상과 비슷한 방식으로 프로그래밍을 하게해준다.
카드분석
OOP 개발의 첫걸부터 마지막까지 처음해야할것은 제일 처음 해야할것은 사물에대한 분석이고 이해이다.
다음과 같은 사고 방식으면 충분하다.
- 카드는 4가지 모양이 있다
- 카드는 고유 숫자와 그에 해당하는 Ace~King 각각의 고유 이름이 있다.
- 카드 셋팅은 카드의 숫자와 모양을 지정할수 있으며, King of Diamond라는 자연스러운 카드명을 사용할수 있다
카드구현
이제 분석을 토대로 , 언어의 특성을 고려하여 OOP로 구현해보자
- 카드는 4가지 모양이 있다 → enum이라는 열거형을 사용
- 카드는 고유 숫자와 그에 해당하는 Ace~King 각각의 고유 이름이 있다. → 각 랭크를 배열에 맵핑
- 카드 셋팅은 카드의 숫자와 모양을 지정할수 있으며, King of Diamond라는 자연스러운 카드명을 사용할수 있다 → toString 재정의
카드 Test 실행
오브젝트를 구현하면, 항상 그에 대응하는 Test코드를 작성해라
그것이 OOP의 설계능력을 늘릴수 있는방법이다.
Card테스트
@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"); } }