자바

객체지향 키오스크 만들기

하이자바 2025. 3. 12. 16:34

목표 

객체지향적 설계를 통해 콘솔 환경에서 동작하는 키오스크 제작

 

요구사항

1. 키오스크, 카트, 메뉴, 메뉴아이템, 할인(enum) 클래스를 분리하여 작성

 

예외 처리

1. 잘못된 입력에 대한 IllegalArgumentException 처리

 

과정

1. 각 기능에 따른 클래스 분리

- 키오스크 :  동작 흐름 관리

- 카트 :  카트 보여주기, 비우기, 추가하기, 할인 메소드 구현

- 메뉴 :  메뉴 아이템들의 상위 클래스로 아이템들의 집합과 각 집합들을 구분할 카테고리 작성 및 아이템 추가, 보여주기 메소드 구현

- 메뉴아이템 : 낱개 메뉴 아이템들에 대한 변수 작성

- 할인 : 카트에 사용될 정적 변수 작성 및 switch 메소드 작성

 

2. 단계별 구현

Essential

LV1

-  입력에 따라 선택한 결과값이 뜨는 기본 키오스크 클래스 작성

LV2

- 메뉴 아이템 클래스를 이용하여 클래스 선언 후 값 추가, 그리고 반복문을 통해 메뉴 아이템들의 값을 출력 후 입력 값에 따른 결과 작성

LV3

- 키오스크 클래스를 작성하였고, 우선적으로 메뉴 아이템 추가 후 동작 메소드 작성

LV4

- 메뉴 클래스를 추가하였고, 먼저 키오스크에  add 메소드를 통해 메뉴들을 추가하여 파라미터가 없는 start() 메소드를 통해 동작

 

Challenge

LV1

- 카트 클래스를 추가하였고, 메뉴 아이템의 리스트를 변수로 받아 추가하였다. 그리고 장바구니 담기, 보여주기, 비우기, 할인 메소드를 추가했다. 

LV2

- 할인에 대하여 이넘 클래스로 분리하였고, 스위치문을 람다 표현식으로  수정하였다.

 

개선점

1. 디렉터리 및 파일 분리 - 클래스들의 접근 한정자를 통해 이름이 같더라도 해당 패키지 내만 접근할 수 있도록 분리하였다.

2. throw new IllegalArgumentException 을 통해 잘못된 입력에 대한 예외 처리를 하였다.

3. 이전에는 기능 메소드에 메인 선언 후 run 메소드를 통해 실행을 시켰으나, 본 프로젝트에서는 분리하여 실행시켰다.

 

트러블 슈팅

문제 : 변수의 이름을 바꿀 때 마다 매번 Getter,Setter의 변수를 수정해야하여 번거로움을 느꼈다.

해결 및 결과 : 빌드 툴 Maven을 추가하여 프로젝트를 생성하고 Lombok 의존성을 추가하였다. 

Lombok을 통해 Getter, Setter 자동 생성, 수정 그리고 추가적으로 NoArgConstructor, AllArgConstructor 어노테이션을 활용하여

매개변수없는 생성자, 모든 매개변수를 가지는 생성자를 자동적으로 생성하였다.