이번 주차에 적용한 디자인 패턴, 클린코드 기법
•
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