8000 GitHub - woo-yu/java-racingcar: 자동차 경주용 게임을 관리하는 저장소
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

woo-yu/java-racingcar

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

자동차 경주 게임

✔ 과정에 대한 전반적인 회고

  • 본 미션을 통해 테스트 코드의 작성법과 TDD에 대해 학습할 수 있었다.
  • 코드 컨벤션을 지키고, git commit message의 작성법을 배울 수 있었다.
  • Clean code를 작성하는 방법을 익히고, 메소드를 분리하는 리팩토링 과정을 깨달을 수 있었다.

1단계 - 학습 테스트

String, Collection의 테스트 학습을 통해 테스트 코드 작성을 익힌다.

피드백

2단계 - 문자열 계산기

구현하는 코드에 단위 테스트를 적용하는 방법을 익힌다.

피드백

3단계 - 자동차 경주

3단계 기능 요구사항

기능 요구사항

  • 초간단 자동차 경주 게임을 구현한다.
  • 주어진 횟수 동안 n대의 자동차는 전진 또는 멈출 수 있다.
  • 사용자는 몇 대의 자동차로 몇 번의 이동을 할 것인지를 입력할 수 있어야 한다.
  • 전진하는 조건은 0에서 9 사이에서 random 값을 구한 후 random 값이 4이상일 경우이다.
  • 자동차의 상태를 화면에 출력한다. 어느 시점에 출력할 것인지에 대한 제약은 없다.
3단계 체크리스트

기능 목록

  • 자동차 기능

    • 자동차는 자신이 전진한 횟수를 가진다.
    • 자동차는 조건에 따라 전진하거나 멈출 수 있다.
    • 자동차 집합은 인자로 주어진 수만큼의 자동차 리스트와, 시도할 횟수를 가진다. -> 자동차리스트를 수정주입, 생성관할은 팩토리에서 진행
    • 자동차 집합은 자동차 리스트들이 전진한 횟수를 확인할 수 있다.
    • 자동차 집합은 시도 횟수만큼 보유중인 자동차 리스트에게 전진할지 여부를 확인한다.
  • 입출력 관련

    • 자동차 수와 시도할 횟수를 입력받는다.
    • 전진한 횟수의 배열을 넘겨받아 실행결과를 출력한다.
  • 게임과 게임 팩토리

    • 게임은 자동차경주의 실행과 종료를 관할한다. (입출력)
    • 게임은 입력받은 값을 게임 팩토리에게 넘겨서 자동차와 자동차들을 생성한다.
    • 게임 팩토리는 게임, 자동차들, 자동차의 생성을 주관한다.
3단계 피드백

[피드백 링크] (next-step#2030)

4단계 - 자동차 경주(우승자)

4단계 요구사항

기능 요구사항

  • 각 자동차에 이름을 부여할 수 있다. 자동차 이름은 5자를 초과할 수 없다.
  • 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다.
  • 자동차 이름은 쉼표(,)를 기준으로 구분한다.
  • 자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한명 이상일 수 있다.
4단계 체크리스트

기능목록

  • 자동차 기능 및 생성
  • 각 자동차는 고유의 이름을 가질 수 있다.
  • 자동차 집합은 고유의 이름을 가진 자동차들로 구성된다.
  • 우승자 결정
  • 심판은 게임이 보유중인 자동차 집합중에서 우승자를 가린다.
  • 전진한 횟수들 중에서 가장 많이 전진한 수를 구한다.
  • 가장 많이 전진한 횟수를 보유한 자동차 이름을 우승자로 선정한다.
  • 입출력
  • 자동차 이름을 입력받는다.
  • 실행 결과를 각 자동차의 이름들과 함께 전진한 정도를 출력한다.
  • 우승자를 출력한다.
4단계 피드백

5단계 - 자동차 경주(리팩토링)

5단계 요구사항 리팩토링 요구사항 핵심 비지니스 로직을 가지는 객체를 domain 패키지, UI 관련한 객체를 view 패키지에 구현한다. MVC 패턴 기반으로 리팩토링해 view 패키지의 객체가 domain 패키지 객체에 의존할 수 있지만, domain 패키지의 객체는 view 패키지 객체에 의존하지 않도록 구현한다. ![image](https://user-images.githubusercontent.com/59992230/118605770-98978400-b7f1-11eb-8125-13121e3b5192.png) 테스트 가능한 부분과 테스트하기 힘든 부분을 분리해 테스트 가능한 부분에 대해서만 단위 테스트를 진행한다.

image

피드백

About

자동차 경주용 게임을 관리하는 저장소

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%
0