키오스크 과제 트러블 슈팅

OneTwo·2025년 1월 20일

이번에는 햄버거,디저트,음료를 주문하는 키오스크 과제를 진행해보았다.

LV1 기본적인 키오스크를 프로그래밍

Scanner를 활용하여 조건문,반복문을 통해
종료버튼을 누르기 전까지 제시된 햄버거 메뉴를 고른다.

LV2 객체 지향 설계를 적용해 햄버거 메뉴를 클래스로 관리

햄버거 메뉴를 MenuItem클래스로 관리한다.
List를 활용하여 여러 메뉴들을 관리한다.

LV3 객체 지향 설계를 적용해 순서 제어를 클래스로 관리

Kiosk클래스를 통해 프로그램 제어를 관리한다.
Kiosk클래스 내에서 사용자의 입력을 처리하고 메뉴를 관리한다.
유효하지 않은 입력에 대한 예외도 처리한다.

LV4 음식 메뉴와 주문 내역을 클래스 기반으로 관리

버거,음료,디저트를 관리하기 위해 별도의 클래스를 작성하고
각각의 클래스들은 MenuItem을 상속받는다.
버거,음료,디저트 클래스는 각각의 클래스의 용도에 맞는 최소한의
필드만 정의해두고 공통적인 필드는 MenuItem에 정의한다.

LV5 캡슐화 적용하기

Getter,Setter 메서드를 사용해 데이터를 관리하고 접근지정자를 사용하여 캡슐화를
적용한다.

LV5까지 진행과정에서는 매우 순조롭게 진행이 되었다.
버거,음료,디저트에서 공통적인 기능들을 묶어 MenuItem클래스에 정의하니
코드가 훨씬 더 간결해지고 유지보수도 용이해졌다.

도전과제

도전 과제에서는 장바구니 기능과 구매하기 기능을 추가하고
마지막에는 총 가격에서 할인까지 적용해야한다.

우선 할인정보를 관리하기 위해 따로 Enum클래스를 작성하여
할인 대상과 할인율을 관리했다.

Kiosk클래스에서 장바구니를 구현하기 위해 MenuItem타입의 리스트를 정의하였다.
이를 통해 MenuItem타입의 메뉴들(버거,디저트,음료)들을 저장할 수 있었다.

각각의 로직들은 모두 Kiosk내에서 별도의 메서드로 작성하였다.

이번 과제에서는 데이터의 흐름을 천천히 생각해보고 순서대로 진행해보니
어려운 부분이 없었다.
프로그램 내에서 데이터의 흐름,제어를 그려보고 이를 토대로 코드를 작성해보는 좋은 경험이 되었다.

profile
매일 성장하는 개발자

0개의 댓글