Skip to content

Conversation

@khcho96
Copy link

@khcho96 khcho96 commented Oct 4, 2025

기능 구현 목록

Model

domain.Lotto

  • 주어진 필드와 메서드 구현
  • 당첨번호를 받아서 몇개 일치하는지 반환하는 메서드 구현
  • 당첨번호를 받아서 2등인지 반환하는 메서드 구현

domain.LottoList

  • 로또 객체를 저장하는 리스트 저장

domain.WinningNumber

  • 당첨 번호 리스트로 저장
  • 보너스 번호 저장
    • 값이 당첨번호중 하나와 같을 경우 예외 발생

domain.LottoResult

  • 등수별 개수 저장
  • WinningConstant를 객체로 사용해 등수별 일치해야 하는 개수와 당첨 금액 데이터 사용
  • 수익률 계산하는 메서드 구현

service.LottoService

  • 구입 금액에 대한 로또를 발행하는 메서드 구현
    • 구입 금액 입력값에 대한 검증
      • 검증 실패시(예외 발생시) 예외 메시지 출력 후 null 반환
    • 구입 금액에 맞는 개수의 로또 발행
    • 발행한 로또를 리스트로 저장
    • 로또 리스트 객체 반환
  • 당첨 번호를 저장하는 객체를 생성하고 반환하는 메서드 구현
    • 당첨 번호 파싱
      • 검증 실패시(예외 발생시) 예외 메시지 출력 후 null 반환
    • 당첨 번호 객체 생성 후 반환
  • 당첨 번호 객체에 보너스 번호 추가
    • 보너스 번호 입력값에 대한 검증
      • 검증 실패시(예외 발생시) 예외 메시지 출력 후 null 반환
    • 객체 내부에 추가한 후 해당 객체 반환(예외일 경우 null 반환)

View

view.InputView

  • 사용자로부터 구입 금액 입력받아서 반환하는 메서드 구현
  • 사용자로부터 당첨 번호 입력받아서 반환하는 메서드 구현
  • 사용자로부터 보너스 번호 입력받아서 반환하는 메서드 구현

view.OutputView

  • 발행한 로또 오름차순으로 출력

Controller

controller.LottoController

  • 입력값에 따른 예외 발생 시 다시 입력받을 수 있도록 반복문 사용
  • 구입 금액 입력값을 받아서 Service로 넘김
  • 구입 금액에 맞게 발행된 로또 리스트 받음
    • 만약 null이 반환되었으면 사용자로부터 재입력 받음
  • 당첨 번호 입력값을 받아서 Service로 넘김
  • 당첨 번호 리스트가 저장된 객체 받음
    • 만약 null이 반환되었으면 사용자로부터 재입력 받음.
  • 보너스 번호 입력값을 받아서 Service로 넘김
    • 만약 null이 반환되었으면 사용자로부터 재입력 받음.

Others

util.Validator

검증 실패 시 메시지와 함께 예외 던짐

  • null 또는 공백만 입력한 경우 검증하는 메서드 구현
  • 0이하의 값 입력한 경우 검증하는 메서드 구현
  • 1000원 단위가 아닌 경우 검증하는 메서드 구현
  • 10만원 초과하는 경우 검증하는 메서드 구현
  • 당첨 번호 6개 아닌 경우 검증하는 메서드 구현
  • 당첨 번호가 1~45의 정수가 아닌 경우(리스트) 검증하는 메서드 구현
  • 당첨 번호가 1~45의 정수가 아닌 경우(값) 검증하는 메서드 구현

util.parser

  • 당첨 번호 입력값 쉼표로 구분하는 메서드 구현
  • 쉼표로 구분해서 만든 리스트 검증
    • 당첨 번호 6개 아닌 경우
    • 당첨 번호가 1~45의 정수가 아닌 경우
  • 당첨 번호 리스트 반환

random.RandomGenerator

  • 로또 번호 발행하는 메서드 구현

constant.ErrorMessage

  • 에러메시지 상수 보관

constant.Rank

  • 등수별 일치해야 하는 개수와 당첨 금액을 상수로 저장

피드백

  1. 아직 테스트 코드는 작성을 못했는데, 내일 중으로 시간이 된다면 추가할 계획입니다.
  2. 테스트라고 생각하고 시간 제한을 두고 풀어보려고 했는데 아직은 무리라고 느꼈습니다.
  3. 이번에 중점을 둔 부분은 단일 책임 원칙입니다. 문제 조건에도 나와있듯이 최대한 하나의 메서드에서 하나의 일만 하도록 구현했습니다.
  4. 기능 구현 목록을 완벽하게 작성하고 코드를 구현하는 게 쉽지 않았습니다. 코드를 구현하면서 목록이 추가되고 수정되었습니다.
  5. 2주차 과제에서는 기능 구현 목록을 기능 작동 순서대로 작성했는데, 이번엔 클래스 별로 작성했습니다. 일장일단이 있었지만 개인적으로 기능 구현 목록을 커밋의 단위로 활용하기에는 전자가 더 편했습니다. 그래서 4주차 과제에서는 다시 기능 작동 순서대로 작성할 계획입니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant