2025. 11. 4. 08:00ㆍ우아한테크코스 8기
우아한테크코스 8기 글 목록
1. [0주 차] 지원 마감 하루 전 날, 우테코 8기 지원하기
2. [1주 차] 우테코 8기 프리코스 첫 번째 미션 – 문자열 덧셈 계산기
3. [2주 차] 우테코 8기 프리코스 두 번째 미션 – 자동차 경주
4. [현재글] [3주 차] 우테코 8기 프리코스 세 번째 미션 – 로또
5. [4주 차] 우테코 8기 오픈 미션 - Java로 구현하기 1
6. [4주 차] 우테코 8기 오픈 미션 - Java로 구현하기 2
7. [5주 차] 우테코 8기 오픈 미션 - Java로 구현하기 3
1. 과제 개요
세 번째 과제는 자동차 경주였다.
로또 구입 금액, 당첨 번호와 보너스 번호를 입력하면
로또 당첨 내역, 수익률을 출력하는 문제였다.
이전 미션과 다른 점은 Lotto 클래스 파일이 주어졌다.
문제를 보고 작성한 리드미 내용이다.
2. 문제 접근 방식
2.1. 접근 방식
이전 미션과 동일하게 사용자 흐름대로 진행했다.
주어진 Application 테스트는 통과했지만,
코드를 보기 좋게 리팩토링 하는 게 문제였다.
메인 App.js에 입출력, 계산 로직이
서로 엉켜 있어서 어떻게 정리할지 감이 안 왔다.
이게 주어진 Lotto 클래스 파일과
Lotto 클래스 구조를 변경하기 어려운 제약사항 때문이었다.
Lotto처럼 클래스 구조를 통일 시키기 위해
결국 미션을 처음부터 다시 진행했다.
재설계 할 때는 미션에서 필요한 기능을 '부품'으로 비유해서 작업했다.
2.2. 설계 방향
부품은 총 7가지로 구성했다.
검증, 로또, 보너스 번호, 현금, 로또 기계, 결과 계산기, 화면(입력/출력)
사용자가 입력하면 해당 부품이 생성되는데
생성될 때 검증을 통과하지 못하면 오류를 발생하는 컨셉으로 진행했다.
클래스 구조는 아래처럼 통일했다.
class <클래스이름> {
#validator;
// Properties...
constructor(props) {
this.#validator(props);
}
#validator(props) {}
// Methods...
}
사용자 입력을 받는 부품만 #validator 메서드를 적용했다.
2.3. 통합 테스트 전략
개발은 TDD로 진행했다.
각 부품들을 개발할 때는 단위 테스트를 하면 돼서 간단했다.
하지만 통합할 때는 어떻게 테스트를 해야 할지 방향이 잡히지 않았다.
통합하는 것은 코드 흐름을 테스트하는 것이라 생각하고,
입출력을 기준으로 테스트를 분류했다.
구입금액 입력
⭣
구입 로또 출력
⭣
당첨 로또 입력
⭣
보너스 번호 입력
⭣
로또 결과 출력
이렇게 나누고 보니 테스트가 명확해졌다.
잘못된 값을 입력하면 다시 입력 받고
입력된 값으로 출력을 테스트하면 되었다.
다만, 후속 메서드를 테스트할 때마다
이전 단계 메서드를 다시 실행해야 하는 번거로움이 있었지만
이건 통합테스트를 더 견고하게 만들었다.
3. 배운 점과 느낀 점
3주 차 미션을 통해서 부품 설계가 MVC 설계라는 것을 알게 되었다.
부품을 잘 만들면 부품을 조립하는 것만으로도
코드 흐름을 문제없이 구현할 수 있다는 게 신기했다.
그러려면 의미 있는 부품 설계가 필요했다.
부품 기능 설계가 미흡해도 부품 구성이 잘 되어 있다면
부품에 메서드를 추가만 하면 쉽게 보완할 수 있다.
4. 커뮤니티 참여
이번 주는 온라인에서 할 수 있는 코드리뷰, 회고록 읽는 활동만 했다.
재구현 하느라 오프라인 활동을 하지 못했다.
구현을 마치고 코드 리뷰 모임 모집하려고 했을 때,
이미 토요일이었다.
아마 4, 5주 차 과제를 할 때도 오프라인 모임을 하기 어려울 것 같다.
5. 학습 및 앞으로 계획
이번 주 차에는 TDD가 뭔지 배웠다.
지금까지 구현하고 테스트하는 과정을 TDD라 알고 있었다.
알고 보니 구현보다 테스트를 먼저 하는 게 TDD였다.
먼저 실패하는 테스트를 작성하라는 데
처음에 무슨 소리인지 이해가 되지 않았다.
테스트를 하려면 코드가 필요한데
코드를 작성하기 전에 테스트를 해야 한다는 게 말이 안 됐다.
테스트를 먼저 하면 정의되지 않았다는 문구가 뜨면서 실패했다.
아마 실패하는 테스트가 이런 게 아닐까 싶다.
MVC를 자연스레 도입하게 되었는데,
이번 주 차에는 MVC를 더 알아볼 계획이다.
6. 참고



'우아한테크코스 8기' 카테고리의 다른 글
| [4주 차] 우테코 8기 오픈 미션 - Java로 구현하기 2 (0) | 2025.11.11 |
|---|---|
| [4주 차] 우테코 8기 오픈 미션 - Java로 구현하기 1 (0) | 2025.11.08 |
| [2주 차] 우테코 8기 프리코스 두 번째 미션 – 자동차 경주 (0) | 2025.10.28 |
| [1주 차] 우테코 8기 프리코스 첫 번째 미션 – 문자열 덧셈 계산기 (0) | 2025.10.21 |
| [0주 차] 지원 마감 하루 전 날, 우테코 8기 지원하기 (0) | 2025.10.12 |