inblog logo
|
devleekangho
    프로젝트

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

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

    프로젝트 깃허브 링크

    • https://github.com/LeeKangHo1/Lotto_Experience_Project

    <프로젝트 개요>

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

    1. 주요 기능

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

    2. 학습 목표

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

    3. 담당 업무

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

    <프로젝트 이야기>

    1. 가상 추첨 기능 구현

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

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

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

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

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

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

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

    devleekangho

    RSS·Powered by Inblog