목표
객체지향적 설계를 통해 콘솔 환경에서 동작하는 키오스크 제작
요구사항
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 어노테이션을 활용하여
매개변수없는 생성자, 모든 매개변수를 가지는 생성자를 자동적으로 생성하였다.
'자바' 카테고리의 다른 글
| Checked Exception과 UnChecked Exception (RuntimeException) (0) | 2025.03.24 |
|---|---|
| enum 클래스란? (0) | 2025.03.11 |
| 다양한 방법으로 사칙연산 계산기 만들기 (0) | 2025.02.27 |
| 자바 최신 문법 활용해보기 (스트림, 옵셔널, 스위치 표현식, 레코드, 인스턴스오프) (0) | 2025.02.20 |
| 자바 생성자 오버로딩(Overloading) // this, this()의 차이 (0) | 2024.05.27 |