[팀 프로젝트] 로또 체험 프로그램

KangHo Lee's avatar
Dec 30, 2024
[팀 프로젝트] 로또 체험 프로그램
Lotto Experience Project
2024.07.29 ~ 2024.08.06 (9일)
총 3명

프로젝트 깃허브 링크

<프로젝트 개요>

  • 로또 6/45 구매 경험이 없는 사용자를 위한 가상 로또 체험 프로그램

1. 주요 기능

  • 로또 구매(대량 가능), 구매한 로또 번호 확인, 가상 추첨
  • 로또 구매 이력 저장 → 이전 회차 확인, 손익결산, 당첨 번호 통계

2. 학습 목표

  • Java Swing을 활용해서 프로그램의 GUI를 구현
  • Java IO를 활용, 당첨 기록을 파일로 저장

3. 담당 업무

  • 가상 추첨 기능, 현재 구매한 로또 확인하는 기능
  • 로또 번호를 숫자가 적힌 공으로 보여주는 화면 제작

<프로젝트 이야기>

1. 가상 추첨 기능 구현

  • 랜덤으로 중복되지 않는 6개 + 1개의 당첨 번호를 정하기 위해 Set을 활용
  • 정렬된 순서가 중요하기 때문에 TreeSet 활용
  • 디스플레이 되는 공의 색상으로, 당첨 번호 일치를 쉽게 확인 가능

2. 당첨 화면 구현에서 겪은 어려움과 배운 점

  • 로또 번호 공의 위치나 각종 버튼의 위치를 각 창을 기준으로 Absolute Layout으로 설정
  • 추가적인 기능 구현을 위해 버튼이나 라벨을 창에 추가할 경우 다시 좌표 계산이 필요
  • 생산성 향상을 위해, 화면을 모듈 단위로 작게 나눠서 제작할 필요성에 대해 학습

3. 변수 이름, 주석, 리팩토링의 중요성

  • 화면 구성 요소들의 객체 변수 이름을 축약어를 사용해서 네이밍하여, 구성 요소를 재활용하는 기능의 담당 팀원이 내가 작성한 코드를 이해하기 어려운 문제 발생
  • 이에 따라 팀원에게 추가적인 설명 시간이 소요
  • 팀원을 배려해서 변수 이름을 정하고 주석으로 설명 추가 및 메서드를 보기 좋게 정리하는 리팩토링의 중요성 학습

4. 다회차 추첨을 고려하지 않은 코드 작성으로 겪은 어려움

  • 변하지 않는 요소(요소들의 위치)와 변하는 요소(공 안의 숫자, 라벨의 텍스트)를 정하는 코드를 분리해서 작성하지 않음
  • 로또를 여러 장 구매할 경우 화면을 전환 시 숫자와 텍스트 변경 필요
  • 화면 전환 시 모든 요소를 지우고 다시 만드는 불필요한 과정이 발생
  • 메서드 분리를 통해 화면 전환 시 필요한 코드만 실행하도록 코드를 리팩토링
 
Share article

devleekangho