본문 바로가기
개발 공부/소프트웨어

객체지향 연습하기 (Java) - 볼링 게임 점수판 - 생각해보기

by 개발인생 2020. 5. 19.
반응형

객체지향 연습하기 (Java) - 볼링 게임 점수판


객체지향의 사실과 오해

객체지향의 사실과 오해를 읽고,

객체지향 패러다임을 좀 더 이해하고, 연습하기 위한 자바 프로젝트입니다.

프로젝트의 주제는
객체 지향 프로그래밍 연습하기 좋은 방법은? 이라는 글을 읽고

볼링 게임 점수판으로 결정했습니다.

틀린 점, 개선해야할 부분이 있다면 피드백 주시기 바랍니다.
아무래도 경험이 부족하다보니 '~~ 것 같습니다' 같은 표현이 많이 등장하는 점 양해부탁드립니다.

구현에 앞서 프로젝트에 대한 분석과 설계를 해보겠습니다.

가장 먼저 해야할 것은 볼링 게임의 점수가 어떤식으로 계산이 되는지 알아보는 것 입니다.

점수판

위의 내용을 간략히 정리해보면

  • 볼링 핀은 10개 이다.

  • 프레임은 총 10번 진행된다.

  • 플레이어는 한 프레임에 두번 투구할 수 있다.

  • 프레임이 끝나면 볼링 핀은 다시 10개가 된다.

  • 플레이어가 한 프레임에서 넘어뜨린 볼링 핀의 갯수가 그 프레임에서 플레이어가 획득한 점수가 된다.

  • 단, 한 프레임에서 스트라이크, 스페어를 했을 경우 해당 프레임의 최종 점수는 다음 프레임의 점수와 합산된다.

    • 스트라이크는 해당 프레임의 첫번째 투구로 볼링 핀 10개를 모두 넘어뜨렸을 때를 말한다.

    • 스트라이크를 획득한 해당 프레임의 점수는 (10점 + 다음 프레임의 총 합산 점수) 이다.

    • 스트라이크인 경우 다음 프레임에서 두번 투구할 때까지 해당 프레임의 점수는 계산되지 않는다.

    • 스페어는 해당 프레임의 두번째 투구로 볼링 핀 10개를 모두 넘어뜨렸을 때를 말한다.

    • 스페어를 획득한 해당 프레임의 점수는 (10점 + 다음 프레임의 첫번째 투구 점수) 이다.

    • 스페어인 경우 다음 프레임에서 한번 투구할 때까지 해당 프레임의점수는 계산되지 않는다.

  • 10번째 프레임에서 스트라이크인 경우는 2번의 투구 기회가, 스페어인 경우 한번의 투구 기회가 주어진다.

  • 스트라이크 : X
    스페어 : /
    볼링 핀을 한개도 못 넘어뜨린 경우 : -

이렇게 대략적인 볼링의 규칙을 정리하였습니다.

이밖에 더블, 트리플과 같은 세부적인 점수가 있는데 이번 프로젝트에서는 생략하고 진행하겠습니다.


이제 구현에서 명심할 사항을 생각해보겠습니다.

더 많은 주의 사항이 있지만 크게는 다음과 같이 정리하겠습니다.

  • 객체는 독립적인 존재가 아니라 협력하는 공동체라는 생각을 하기

  • 객체의 상태를 생각하기보다는 객체의 협력에서 오고가는 메시지를 먼저 생각하기

  • 구현 과정에서 설계는 변할 수 있다.

  • 명세 관점과 구현 관점에서 클래스를 명확하게 나누기.

  • 테스트 코드 작성하기.


여기까지 개발에 들어가기에 앞서 필요한 사항들을 정리해봤습니다.

다음 포스트부터 본격적인 개발에 들어가도록 하겠습니다.

반응형

댓글