본문 바로가기
반응형

Java15

Enum 활용 & Enum 리스트 가져오기 이번 시간엔 실제 업무에서 enum을 활용할 수 있는 방법을 소개해보려고 합니다. 모든 코드는 Github에 있으니 참고하셔서 보시면 더 좋으실 것 같습니다. (공부한 내용을 정리하는 blog-code와 세미나+책 후기를 정리하는 review, 이걸 모두 정리하는 블로그가 있습니다.) 여러 스터디를 하다보면 많은 분들이 domain의 컬럼 타입을 String만 사용하는 경우를 많이 봤습니다. 그래서 String 외에 enum이 필요한 경우를 한번 가정해보고 직접 적용하는 과정을 진행해보려 합니다. 혹시나 틀린 내용이 있다면 댓글 혹은 Pull Request를 부탁드리겠습니다.기본설정예를 들어 중개료 계약서 관리 라는 시스템을 만든다고 하겠습니다. 계약서의 항목은 다음과 같습니다.회사명수수료수수료타입기록된.. 2017. 2. 11.
객체지향 좀 더 이해하기 - 블랙잭 게임 구현 (6) 코드리뷰 이 프로젝트를 OKKY에 올리고 나서 OKKY의 연예인이신 fender님의 리뷰을 받을 수 있었습니다. 개인적으로는 블로그에 글을 올리고나서 OKKY에 항상 바로 올리는 이유가 이런 선배님들의 피드백때문입니다. 바로 리뷰에 대한 수정을 진행하려고 했으나, 이전부터 작업하던 Spring AOP 정리를 마무리하는게 먼저라 시작이 늦었습니다. 다행히 이번주 평일전체를 연차로 쉴수 있게되어 AOP 내용도 정리하고, 이제라도 리뷰 수정을 진행할 수 있게 되었습니다. fender님의 리뷰에서 나온 수정사항들은 아래와 같습니다. Card의 패턴과 끗수를 enum으로 자연스러운 네이밍 isReceiveCard, receiveCardAllPlayers 등은 정상적인 문법은 아님 list 대신 stack을 사용 .. 2016. 12. 10.
객체지향 좀 더 이해하기 - 블랙잭 게임 구현 (5) 2-5. Rule 구현하기 Rule은 승자를 판단하는 역할을 갖고 있습니다. 그래서 게임에 참여한 Player들의 카드를 비교해 승자를 구하는 코드를 구현해보겠습니다. public Player getWinner(List players){ Player highestPlayer = null; int highestPoint = 0; for(Player player : players) { int playerPointSum = getPointSum(player.openCards()); if(playerPointSum > highestPoint){ highestPlayer = player; highestPoint = playerPointSum; } } return highestPlayer; } private int.. 2016. 11. 28.
객체지향 좀 더 이해하기 - 블랙잭 게임 구현 (4) 2-4. Player 구현 코드를 보시면 불편해 보이는 코드가 대거 보이실것 같습니다. 2개의 메소드 모두 dealer와 gamer만 다르지 같은 일을 하는 코드가 대부분입니다. 반대로 생각해보면 dealer와 gamer만 하나로 볼 수 있으면 코드 중복을 제거할 수 있지 않을까요?? Gamer와 Dealer는 여러 조건들에 의해 서로 다른 구현 코드를 가지고 있습니다. 하지만 카드를 받아야하고, 가진 카드를 보여줘야 한다는 공통점을 가지고 있습니다. 우린 이 공통점을 묶어 Player라는 객체를 생성하여 Gamer와 Dealer를 Player에 속하도록 수정하겠습니다. (참고로, 이렇게 서로 다른 객체들의 차이점을 배제하고, 공통점만을 취해 단순화 하는 것을 추상화 라고 합니다. 객체지향을 좀 더 단순.. 2016. 11. 27.
객체지향 좀 더 이해하기 - 블랙잭 게임 구현 (3) 2-3. Dealer 구현 다음 단계로 Dealer를 구현해보겠습니다. Dealer의 역할은 아래와 같습니다. 추가로 카드를 받는다. 단, 2카드의 합계 점수가 16점 이하이면 반드시 1장을 추가로 뽑고, 17점 이상이면 받을 수 없다. 뽑은 카드를 소유한다. 카드를 오픈한다. 이렇게 될 수 있었던 이유는 게임의 승패를 판단하는 것은 Rule 객체가, 카드를 뽑는 것은 카드덱 객체가 맡았기 때문입니다. 그럼 위 역할들만 구현해보겠습니다. Dealer에는 Gamer와 달리 16점 이하일 경우에만 추가로 카드를 받을 수 있다는 제한이 있습니다. 이를 구현하기 위해 각 카드별로 포인트를 가질 수 있도록 하는 것이 좋습니다. 해당 기능은 카드를 뽑을때마다 계산할 수도 있지만, 처음 CardDeck에서 카드를 생.. 2016. 11. 27.
객체지향 좀 더 이해하기 - 블랙잭 게임 구현 (2) 2-2. Gamer 구현 Gamer의 역할은 아래와 같습니다. 추가로 카드를 받는다. 뽑은 카드를 소유한다. 카드를 오픈한다. receiveCard와 cards를 담을 구현체를 생성자에 추가하였습니다. public class Gamer { private List cards; public Gamer() { cards = new ArrayList(); } public void receiveCard(Card card) { this.cards.add(card); } public List openCards(){ return null; } } Gamer의 경우 사용자가 현재 카드들의 총 Point를 보며 카드를 더 뽑을지 말지를 결정하게 됩니다. 이를 위해서는 Gamer는 현재 카드들을 확인 할 수 있어야 합니다... 2016. 11. 27.

728x90