객체지향설계-블랙잭(12)

들어가며

  • 업무에 Java를 사용하고 있지만, 깊은 이해도가 부족하다는걸 절감.
  • 단순 객체 생성 및 비즈니스 로직 구현에만 매달리고 있음. 회의감이 듦.
  • 신규 개발 뿐만 아니라 유지 보수 및 리팩토링시 객체 지향의 묘미를 살려보고자 함
  • 객체 지향적 시야와 사고는 연습뿐이라는 것을 여러 커뮤니티에서 수집
  • 객체 지향 설계 연습을 통해 객체 지향적 시야와 이해력을 높이고지 함

이제부터 객체 지향 생활 체조를 준수하겠습니다.

요구 사항 분석 v2

  • 요구 사항은 지속적으로 수정한다.
구분내용
저자조정하
시나리오유저는 게임을 키면 딜러의 플레이 설명을 본뒤, 게임 스타트를 하면 카드 2장을 나눠 받는다.
유저는 나눠 받은 2장과 딜러의 2장 카드를 보며 Hit와 Stay를 선택하며, 블랙잭 게임 룰에따라 끝날때까지 게임을 진행한다.
초반 코인은 1,000원으로 진행하며 돈이 없어질때까지 또는 게임을 포기할때 까지 블랙잭 게임은 계속된다.
회피목표실제 블랙잭 모델은 딜러 1명과 7명의 유저까지 게임 플레이가 가능하지만, 현재 V2는 딜러 1명과 유저 1명이 게임 진행 가능하게 만든다.
V2 버전에서는 세부 규칙 외 기본 딜러 규칙과 기본 유저 규칙만 적용한다.
세부사항1코드는 객체 지향 생활 체조를 준수 한다.
클래스 다이어그램을 상세하게 다시 작성해야 한다.
딜러 세부사항딜러는 카드의 합이 16이하면 무조건 HIT, 17이상이면 무조건 STAY
딜러는 초기 카드 2장 중 카드 한장을 항상 가려두고 나머지만 오픈한다
플레이어 세부사항플레이어는 딜러의 카드 합이 16이하이면 무조건 HIT한다
미해결 문제유저의 세부 규칙이 미적용 되어 있다. 스플릿, 더블다운, 인셔런스, 푸시, 이븐머니, 서렌더 등

UML

  • 객체 지향과 디자인 패턴에만 너무 빠져, 과유 불급인것 같아 불필요한 부분은 솎아냈습니다.
  • Rule 부분을 STRATEGY 패턴으로 묶어 적용 중입니다.
  • Rule은 딜러와 플레이어가 적용 받는 규칙이 다르며, 해당 규칙은 특정 행동으로 묶여있습니다.
  • 현재까지 ACE 카드 룰과 STAY, HIT 룰을 적용했습니다.
  • 객체 지향 생활 체조를 준수하려고 했지만, 마음대로 되지가 않습니다.
  • 조금더 나은 UML이 될때까지 수정 수정 수정, 블랙잭 V2 버전 코드는 설계 후에 진행하겠습니다.

blackjack_v8.JPG

Reference