-
Notifications
You must be signed in to change notification settings - Fork 75
[박효정] 연료 주입, 블랙잭 (Step 1) #47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: judy5050
Are you sure you want to change the base?
Conversation
기능 요구사항 - 각 보유 차량 (5대) 렌트할 때 대략적인 이동거리를 입력 - 자동차 객체 생성 시 생성자에 이동거리 주입 - 연료량 계산 - 연료 주입에 필요한 연료량 보고서 생성 프로그래밍 요구사항 - 상속 / 추상 메서드 활용 - 조건문 X Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- 주입 연료량 출력 보고서 정상 동작 여부 확인 Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- 필요 기능 정의 Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- Sonata - K5 - Avante Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- 자동차 추가 (addCar) - 주입 연료량 보고서 출력 (generateReport) Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
…utable Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- List<Card> 최종 점수 반환 메서드 작성 Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- 각 카드 별 점수관련 클래스 Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- 모든 카드(52개)를 생성시점에 초기화 - 덱에서 한장을 카드를 뽑음 - 덱이 비면 예외 Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- 카드끼리의 비교를 위해 구현 Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- 카드를 더 뽑을 수 있는지를 boolean으로 반환하는 canDrawCard() Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- 가지고있는 cards 객체에서 위임 Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- 21보다 작다면 한장 더 뽑을 수 있음 Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- Dealer - Deck - Players Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- Player Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- Card - Cards - Dealer - Deck - Person - Player - Score Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- Players Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- InputView - ResultView Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- 파산 여부 - 블랙잭 점수 (21점) 여부 Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- activePlayer - scoreInfo - matchScore Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- 딜러 / 플레이어 점수 비교 Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>"
- CardNumberTest - DealerTest - DeckTest - PlayersTest - PlayerTest - ScoreBoardTest - ScoreTest Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- Card - CardNumber - Cards - Dealer - Deck - Person - Player - Players - Score - ScoreBoard Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- CardInfo - MatchInfo - NameInfo - ScoreInfo Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
- InputView - ResultView Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
Co-authored-by: judy5050 <qkrgywjd456@naver.com> Co-authored-by: minchul-son <smc5236@gmail.com> Co-authored-by: kworkbee <g1.tommy.jeon@gmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
효정님 안녕하세요. 블랙잭 미션을 함께하게 된 김경록입니다. 🙇♂️
몇몇 코멘트들 남겨두었으니 확인해서 반영해주세요! 🙏
늦어서 정말 죄송합니다. 🙇♂️🙇♂️🥲
이해가 잘 안되거나 어려운 부분은 언제든지 DM주세요! 🙏
double getDistancePerLiter(); | ||
double getTripDistance(); | ||
String getName(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
메서드 사이에는 한 줄 띄어서 가독성을 높여주세요! 🙏
double getDistancePerLiter(); | |
double getTripDistance(); | |
String getName(); | |
double getDistancePerLiter(); | |
double getTripDistance(); | |
String getName(); |
private final int distance; | ||
|
||
public K5(final int distance) { | ||
this.distance = distance; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PassengerCar의 하위 구현체들은 모두 똑같은 상태 값(distance
)과 (내부 구현이 완전히 똑같은 ) getTripDistance
를 가지는 것 같아요. 👀
이 두 요소는 상위 클래스인 PassengerCar에 구현하면 중복된 코드를 줄일 수 있지 않을까요? 🤔
private final Players players; | ||
private final Dealer dealer; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Controller는 상태를 가지면 안돼요. 👀
필요하다면 Controller의 메서드 안에서 객체를 직접 생성해서 사용해야해요. 😃
또한 Controller에 비즈니스 로직이 상당수 존재하는 것 같아요. 🙄
players
와 dealer
를 상태로 가지는 새로운 객체(= BlackJack)를 만들어보면 어떨까요? 🤗
package blackjack.domain; | ||
|
||
import blackjack.dto.CardInfo; | ||
import blackjack.dto.MatchInfo; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
불필요한 import문은 제거해주세요! 🙏
public static final int DEALER_DRAW_LIMIT = 16; | ||
private static final String DEALER_NAME = "딜러"; | ||
|
||
public Dealer(final String userName,final Cards cards) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
습관적으로 코드를 자동 정렬
하는 습관을 들이시면 좋아요. 🤗
mac의 경우 ⌘ + ⌥+ L
단축키로 코드 자동 정렬을 할 수 있어요. 😉
} | ||
|
||
@Override | ||
public CardInfo openCards() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
추가로 도메인 객체의 리턴 값을 DTO로 바로 변환하여 반환하는 것 또한 View에 의존적인 코드
라고 생각돼요. 🤔
반환 타입은 List 형태로 전달해보면 어떨까요? 🤔
|
||
@Override | ||
public boolean canDrawCard() { | ||
return !cards.blackjack() && !cards.isBust(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Dealer는 cards.totalScore() <= DEALER_DRAW_LIMIT
조건을 만족하면 카드를 draw 할 수 있었어요. 🤗
Player 또한 cards.totalScore() <= 21
를 만족하면 카드를 draw할 수 있지 않을까요? 🤔
} | ||
|
||
public Score compareScore(final Dealer dealer) { | ||
return Score.judge(cards, dealer.cards); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
객체의 상태 값에 바로 호출하지 말아주세요! 🙏
가급적 상태 값의 접근 제한자를 private
로 둬서 외부에서 직접 접근하지 못하도록 방지해주세요! 😃
상속을 받는 경우 하위 구현체가 이 상태 값을 필요로 할 때가 있을거에요. 이런 경우에는 private
접근 제한자 때문에 이 상태 값에 직접 접근하지 못할거에요. 🥲 이런 경우에는 getter를 통해서 상위 부모 클래스의 상태 값에 접근하는 방법이 있어요. 😉
players.initializeDeck(deck); | ||
dealer.initializeDeck(deck); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
players가 아니라 더 상위 클래스인 Persons로 dealer와 players들을 동시에 묶는다면 이 로직은 persons.initializeDeck(deck);
으로 한 번만 호출하도록 바꿔볼 수 있을 것 같아요. 🤗
@Override | ||
public boolean equals(Object o) { | ||
if (this == o) { | ||
return true; | ||
} | ||
if (o == null || getClass() != o.getClass()) { | ||
return false; | ||
} | ||
Card card = (Card) o; | ||
return suit == card.suit && cardNumber == card.cardNumber; | ||
} | ||
|
||
@Override | ||
public int hashCode() { | ||
return Objects.hash(suit, cardNumber); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Card 객체의 동등성을 정의할 필요가 있나요? 🤔
만약 테스트 코드를 위한 equals & hashCode 정의라면 그 방법보다는 getter를 만들어서 상태 값이 실제 결과 값과 같은지 확인하는 테스트 코드로 변경하는 것이 좋다고 생각해요. 🤔
안녕하세요! 경록 리뷰어님 😊
연료주입과 블랙잭을 페어인 민철님,지원님과 함께 구현했습니다.
블랙잭 게임을 해본적이 없어 블랙잭 룰을 찾아보며 구현했는데
이번 미션이 제일 어려웠던거 같네요 😂
리뷰 잘 부탁드립니다. 감사합니다.