본문 바로가기
반응형

Java20

객체지향 좀 더 이해하기 - 블랙잭 게임 구현 (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.
객체지향 좀 더 이해하기 - 블랙잭 게임 구현 (1) 순수 Java로 이루어진 프로젝트 객체지향을 이해하는데 있어 게시판은 좋은 예제가 아니라는 자바지기(박재성)님과 OKKY fender님의 이야기로 시작한 프로젝트 Java로 웹을 한다고 하면서 실제로 Java와 객체지향을 공부한적이 없던것 같다는 생각이 있었습니다. 그래서 데이터베이스, JSP를 전혀 사용하지 않고 Java와 객체에 좀 더 집중할 예정입니다. 모든 코드는 Github에 있으니 전체 코드를 보고싶으시면 참고하시면 될것 같습니다. (공부한 내용을 정리하는 Github와 세미나&책 후기를 정리하는 Github 를 star 하시면 실시간으로 feed를 받을 수 있습니다.) 주제 블랙잭 게임(나무위키 참고)을 개량해서 구현할 예정입니다. 블랙잭 규칙 전부를 구현하는건 지나친 감이 있어서 조금은 스.. 2016. 11. 27.
Java SE 코드 성능 비교 Java SE 성능 비교 Spring환경에서 개발을 하고 있지만, Java 공부를 안할수는 없다. 여러 선택의 순간에 어떤 코드가 더 좋은지 안좋은지는 개인의 취향 혹은 팀의 코딩 컨벤션이 가장 중요하겠지만, 그럼에도 불구하고 동일한 조건이라면 더 좋은 코드는 분명히 존재한다고 생각한다. 그래서 큰 이슈는 아니지만 성능상 더 좋은 코드가 어떤 것인지 직접 테스트해보고 기록하기로 하였다. (뭐든 기본이 중요하다!!!) 아래 테스트들은 모두 성능만 고려하였다. 사내 규약 혹은 사수의 조언이 있다면 그걸 우선시 하는게 맞다. 그런게 없다면 아래 기준에 따라 코드 선택을 하는것도 나쁘지 않을것 같다. 모든 테스트는 Java 8을 기준으로 진행하였다. 사내 신규 프로젝트가 전부 8로 진행되기도 하였고, 조금 있으.. 2016. 11. 3.
Map으로 Iterator (반복문) 를 진행할 경우 주의 사항 FindBugs를 사용하기 시작했다.포프님의 유닛테스트 vs 정적테스트 라는 주제의 영상을 보면서 으잉? 정적분석기가 그렇게 좋은거였어? 라는 생각에 부랴부랴 오늘부터 시작하게 되었다.FindBugs에 대해선 다음에 한번 정리를 해보겠다. 어찌됐든 오늘 진행한 상황은 아래와 같다. 배포 예정 중인 프로젝트에 대해 FindBugs를 돌려보았다. 아래와 같은 경고가 등장하였는데 어떤 문제인지 한번 생각해보자. (문제가 있던 코드) 코드 자체는 크게 어려운게 없다.Map으로 들어온 인자값을 keySet()으로 set으로 변환후 for를 돌며 key값으로 Map의 value를 template() 에 넘겨주는 일이다. FindBugs에서는 아래와 같은 경고가 나왔다.(findbugs에서 경고) 경고 메세지를 보면.. 2016. 9. 26.
[Joda-time] 월, 일, 요일, 오전/오후 표현하기 Java는 1.7까지 Date가 구리기로 소문났다. (참고)1.8부터는 많이 개선되었지만.... 회사에서 개발을 하다보면 1.8에서 개발할수있는 경우가 별로없다.대부분 1.6 ~ 1.7 일경우가 많은데 (리팩토링은 먹는건가요? ㅠㅠ)그렇다보니 1.8의 개선된 Date나 람다, 스트림은 회사에선 꿈도 못꾸고 최대한 그에 준하는 서드파티 라이브러리들을 사용하면서 만족해야한다. 이번에 소개할 내용은 Java의 구리고도 구린 Date를 해결하기 위해 나온 Joda Time이다.Joda Time의 상세한 설명은 위 네이버 블로그를 통해 보면 될것 같고, 여기선 생각보다 많이 쓰이는 특정일자의 월,일,요일,오전/오후를 Joda time으로 출력하는 코드를 작성하겠다.(작성하고보니 짧.......다 ㅠ) Joda t.. 2016. 7. 26.

728x90