전체 보기
🍀

6일차_설계를 코드로 구현하기

작성일자
2023/10/24
태그
DIARY_DEVELOP
프로젝트
PreCourse
책 종류
1 more property
이번 주차에 적용한 디자인 패턴, 클린코드 기법
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 작성하기
몰입
코드로 구현하기
오늘의 각오
삽질하느라 쏟은 시간을 만회하기 위해 이제 남은 하루를 이틀처럼 달리자 ^^
Search
1일차_둘러보기, 환경설정하기
2023/10/19
DIARY_DEVELOP
1일차_둘러보기, 환경설정하기
2023/10/19
DIARY_DEVELOP