Giter Site home page Giter Site logo

tdd-lotto-service's Introduction


🎡 로또 서비스


💻 프로젝트의 목표와 성과

목표

  • 모든 기능을 단위 테스트를 작성하여 TDD로 구현한다.
  • 객체지향적 설계를 지키기 위하여 일급 콜렉션으로 설계한다.
  • java enum을 적용해 프로그래밍을 구현한다.
  • 자바 코드 컨벤션을 지키면서 프로그래밍한다.

성과



  • 로또 구입 금액을 입력하면 로또를 자동으로 랜덤 발급해준다.
  • 지난 주 당첨 번호를 입력하면 현재 몇 개의 로또가 당첨되었는지 알려준다.

  • 로또 구입 금액과 구입할 로또의 개수를 입력하고, 직접 구입할 로또의 번호를 지정하여 로또를 구입한다.
  • 지난 주 당첨 번호와 '보너스 번호'를 입력하면 '수익률'과 현재 몇 개의 로또가 당첨되었는지 알려준다.


image

📖 로또 기능 요구사항

자세한 로또 기능 요구사항 정리

  1. 구입 금액을 입력받는다 (input_view)
  2. (추가기능) 수동으로 구입할 로또 수를 입력받는다 (input_view)
  3. 로또 1장당 가격은 1000원이다. (lottoPrice)
  4. (추가기능) 구입 금액보다 구매할 로또 수가 많은 경우 Exception 발생 (lottoPrice)
  5. (추가기능) 수동으로 구매할 로또 번호들을 입력받는다 (input_view)
  6. (추가기능) 수동으로 구매한 로또 번호들이 1~45 사이의 범위를 벗어날 경우 Exception 발생 (lotto)
  7. (추가기능) 구입금액에서 수동으로 구입한 로또를 제외한 금액의 액수만큼 자동의 로또가 추가적으로 발급된다.
  8. 자동 로또의 숫자 범위를 Collections.shuffle( ) 메소드를 통해 섞는다. (lottoGenerator)
  9. 자동 로또 1장당 총 6개의 숫자를 발급받는다. (lottoGenerator)
  10. 자동 로또의 숫자들은 Collection.sort( ) 메소드를 통해 정렬시킨다. (lottoGenerator)
  11. (추가기능) 자동으로 구매한 로또들의 범위가 벗어날 경우 Exception 발생 (lotto)
  12. 수동 및 자동으로 구매한 로또들을 보여준다 (print_view)
  13. 지난 주 당첨 번호 숫자를 ',' 기준으로 6개를 String으로 입력받는다 (input_view)
  14. 입력받은 당첨번호 String을 ','를 기준으로 split 하여 List에 담아둔다. (input_view)
  15. 보너스 볼을 입력받는다. (input_view)
  16. 만약 범위 안의 숫자를 입력하지 않으면 Exception 발생 (lottoAnswer)
  17. 보너스 볼의 숫자 범위를 확인하고 아닐 경우 Exception 발생 (lottoAnswer)
  18. 모든 로또를 돌며 1장의 로또에서 당첨 번호가 몇 개가 일치하는지를 확인한다 (lotto)
  19. 5개를 일치하였을 경우, 보너스 볼이 일치 하였는지 확인한다 (lottoAnswer)
  20. 로또의 당첨 번호 개수를 업데이트 해준다 (lotto)
  21. 3~6개(+보너스 추가 일치) 일치한 로또들의 개수를 출력한다. (print_view)
  22. 3~6개(+보너스 추가 일치) 일치한 로또들의 당첨 금액을 계산한다. (lottoTickets)
  23. 당첨 금액 / 구입 금액 으로 총 수익률을 계산한다. (lottoTickets)
  24. 총 수익률을 출력한다. (print_view)

tdd-lotto-service's People

Contributors

yyy96 avatar javajigi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.