🗂️ Model ComputerGameRound👩🏻💻 ViewInputViewOutputView📡 ControllerBaseballGameControllerExceptionHandler🔑 EnumErrorCodeGameStatusToday in 프리코스
이번 주차에 적용한 디자인 패턴, 클린코드 기법
- MVC
- TDA
- SRP (는 많이 고려하진 못했다)
🗂️ Model
Computer
- attributes
secretNumber: 컴퓨터가 생성한 랜덤 숫자
- methods
Computer(): 랜덤으로 생성한 숫자 저장getSecretNumber(): 저장된 숫자 반환
Game
- attributes
status: 현재 게임 상태 (진행 중, 대기, 종료)
- methods
Game(): 게임 상태 진행 중으로 초기화pauseGame(): 게임 상태 대기로 업데이트restartGame(): 게임 상태 진행 중으로 업데이트endGame(): 게임 상태 대기로 업데이트getStatus(): 게임 상태 반환
Round
- attributes
balls: 볼 개수strikes: 스트라이크 개수
- methods
calculateResult(): 볼과 스트라이크로 라운드 결과 반환
👩🏻💻 View
InputView
- methods
getSuggestedNumber(): “숫자를 입력해주세요 : “ 입력getGameContinueChoice(): “게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요.” 입력
OutputView
- methods
printGameStart(): “숫자 야구 게임을 시작합니다.” 출력printGameEnd(): “3개의 숫자를 모두 맞히셨습니다! 게임 종료” 출력printStrikeAndBallHint(): “[1..3]스트라이크 / [1..3]볼 / [1..3]볼 [1..3] 스트라이크” 출력
📡 Controller
BaseballGameController
- attributes
computer: 컴퓨터 숫자 관리game: 게임 상태 관리round: 각 라운드의 결과(볼과 스트라이크 수) 관리
- methods (view → model → view)
startGame(): 게임 시작- (v)printGameStart → (m)startGame, (m)generateSecretNumber, (m)getSecretNumber
startRound(): 라운드 진행- (v)getSuggestedNumber → (m)updateSuggestedNumber, (m)getSuggestedNumber, (m)calculateBallsAndStrikes → (v)printResult
restartOrEndGame(): 게임 재시작하거나 종료- (v)getGameContineuChoice → (m)restartGame, (m)generateSecretNumber, (m)getSecretNumber
- or (v)getGameContineuChoice → (m)endGame
ExceptionHandler
- methods
validateSuggestedNumber(): 플레이어가 제시한 숫자 유효성 검사validateGameStatus(): 플레이어가 제시한 게임 지속 여부 유효성 검사
🔑 Enum
ErrorCode
- 숫자의 길이가 3이 아닙니다.
- 중복된 숫자가 있습니다.
- 1~9 사이의 숫자가 아닙니다.
- 지속 여부를 표시하는 1~2 사이의 숫자가 아닙니다.
GameStatus
- 진행 중
- 대기
- 종료
Today in 프리코스
TIL 작성하기
몰입
코드로 구현하기
오늘의 각오
- 삽질하느라 쏟은 시간을 만회하기 위해 이제 남은 하루를 이틀처럼 달리자 ^^
1일차_둘러보기, 환경설정하기
Oct 19, 2023
DIARY_DEVELOP
2일차_컨벤션 정리하기
Oct 20, 2023
DIARY_DEVELOP
3일차_설계에 대해 고민하기
Oct 21, 2023
DIARY_DEVELOP
4,5일차_MVC 온전히 이해하기
Oct 22, 2023
DIARY_DEVELOP
6일차_설계를 코드로 구현하기
Oct 24, 2023
DIARY_DEVELOP
7일차_리팩토링과 마무리하기
Oct 25, 2023
DIARY_DEVELOP
8,9일차_코드 리뷰 통해 객체지향에 다가가기
Oct 27, 2023
DIARY_DEVELOP
10일차_지난 과제 돌아보며 객체지향 이해하기, 의존성과 설계의 관계 맛보기
Oct 28, 2023
DIARY_DEVELOP
11일차_객체지향을 미션 설계에 적용하기(with [책] 객체 지향의 사실과 오해)
Oct 29, 2023
DIARY_DEVELOP
12일차_기능 별로 구현하며 단위 테스트의 필요성 느끼기 (with [책]
자바와 JUnit을 활용한 실용주의 단위 테스트)Oct 30, 2023
DIARY_DEVELOP
13,14일차_일급 컬렉션과 레코드 적용해 리팩토링하기
Oct 31, 2023
DIARY_DEVELOP
15, 16일차_코드 리뷰를 통해 성장하기(1)_다른 사람의 코드 읽으면 배운 것 정리
Nov 2, 2023
DIARY_DEVELOP
17일차_코드 리뷰를 통해 성장하기(2)_내 코드 개선하며 배운 것 정리
Nov 4, 2023
DIARY_DEVELOP
18일차_내가 찾은 설계 방법 공유하기, 공유에 대해 고민하기
Nov 5, 2023
DIARY_DEVELOP
19일차_지난 과제 피드백 고려해 설계하기
Nov 6, 2023
DIARY_DEVELOP
20, 21일차_일단 돌아가는 코드를 만들기
Nov 7, 2023
DIARY_DEVELOP
22일차_현재 도움이 될 것 생각하기 (디자인패턴과 mvc2 과감히 패스)
Nov 9, 2023
DIARY_DEVELOP
23일차_코드리뷰하기 (feat. converter 파고들기)
Nov 10, 2023
DIARY_DEVELOP
24일차_기획을 문서화하기
Nov 11, 2023
DIARY_DEVELOP
25일차_설계하며 고민하기
Nov 12, 2023
DIARY_DEVELOP
26, 27일차_구현하며 고민하기
Nov 13, 2023
DIARY_DEVELOP
