이지은님의 블로그
Java 기반 키오스크 - enum, 제네릭, 람다와 스트림 등을 이용한 키오스크 기능 본문
👉 키오스크 구현 과제 소개
프로젝트 명 : Java로 키오스크를 구현해보자
배운 내용을 바탕으로 키오스크를 구현하는 과제입니다.
패스트 푸드점에서 제공하는 메뉴들을 장바구니에 넣고 이를 주문할 수 있는 키오스크 기능을 담았습니다.
CUI로 동작합니다.
개발 기간 : 2025.01.13 ~ 2025.1.16 (약 4일)
github : https://github.com/queenriwon/KioskProject
개발 환경
- environment : IntelliJ IDEA, git, github
- development : JAVA JDK 17
👉 구현 내용
필수 구현사항
- Lv.1
- Scanner를 이용하여 햄버거 메뉴 출력 및 선택하기
- Lv.2
- MenuItem 클래스 생성하여 이름, 가격, 설명의 필드를 갖습니다.
- MenuItem 객체 생성을 통해 이름, 가격, 설명을 세팅합니다.
- List를 선언하여 여러 MenuItem을 추가합니다.
- main 함수에서 MenuItem 클래스를 활용하여 햄버거 메뉴를 출력합니다.
- Lv.3
- Kiosk클래스를 생성하여 MenuItem을 관리하는 리스트, start함수로 관리합니다.
- 키오스크 프로그램을 시작하는 메서드가 구현되여 사용자의 입력에 따라 메뉴를 선택하거나 프로그램을 종료합니다.
- 유효하지 않은 입력에 대해 오류 메시지를 출력합니다.
- List<MenuItem> menuItems 는 Kiosk 클래스 생성자를 통해 값을 할당합니다.
- Lv.4
- Menu클래스를 만들어 MenuItem을 관리합니다.
- Lv.5
- 캡슐화를 적용하여 MenuItem, Menu 그리고 Kiosk 클래스의 필드에 직접 접근하지 못하도록 설정합니다.
선택 구현사항
- Lv.6
- 장바구니를 성성하고 관리하는 기능을 제공합니다.(구현)
- 메뉴를 클릭하면 장바구니에 추가할 지 물어보고, 입력값에 따라 “추가”, “취소” 처리합니다.(구현)
- enum을 사용하여 사용자 유형별 할인율을 관리합니다. (구현)
- 제네릭을 활용하여 데이터 유연성을 높이고 재사용이 가능한 코드를 설계합니다. (구현)
- 람다와 스트림을 활용해 장바구니 조회기능을 제공합니다. (구현)
- 장바구니에 담긴 모든 항목과 금액 합계를 출력하고 주문을 진행합니다. 주문하기를 누르면 장바구니를 초기화합니다.(구현)
- 사용자가 결제를 하기 전에 장바구니 출력 및 금액을 계산하는 기능을 제공합니다.(구현)
과제 체크리스트
👉 구현 핵심
- 예외 상황을 나누어 출력
- 사용자가 이용하기 편하도록 실수로 입력한 값에 따른 반복 처리
- 사용목적에 따른 클래스를 나누기
- 제네릭 메서드를 사용하여 코드의 중복을 줄이기
- 인덱스를 입력 받는 만큼 메서드마다 인덱스를 반환하거나 ArrayList.get(인덱스)를 이용
👉 부족하거나 아쉬운 점, 공부하고 싶은 내용
- 제네릭을 사용할 때 타입변수를 효과적으로 다뤄보기
- 더 많은 양의 메뉴데이터를 다뤄보기
- 각 레이어에 맞추어 구성해보기
- Indent depth 줄여보기
👉 클래스 다이어그램/ 플로우차트
(Lv.1,2,3 다이어그램은 생략)
KioskProject Lv.4
KioskProject Lv.6
👉구현결과
KioskProject Lv.1
KioskProject Lv.2
KioskProject Lv.3
![]() |
KioskProject Lv.4
![]() |
|
![]() |
KioskProject Lv.6
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
👉 기능소개(Lv.6)
Java 기반 키오스크 - level6 구현 코드 및 설명
Java 기반 키오스크 - level6 구현 코드 및 설명
차례Main.java (시작)MenuItem.java (하위 카테고리 클래스)Menu.java (상위 카테고리 클래스) Menu(카테고리 이름, MenuItem(메뉴 이름, 가격, 설명))ManuData.java (키오스크 MenuItem 데이터 로드)Kiosk.java (키오스크
queenriwon3.tistory.com
👉 트러블슈팅
250114 - Java 키오스크 구현과 트러블슈팅: 카테고리화, 문자열 출력, 제네릭 메서드, indexOf()의 한계
250114 - Java 키오스크 구현과 트러블슈팅: 카테고리화, 문자열 출력, 제네릭 메서드, indexOf()의 한
▷ 코드 문제풀이[JAVA] 코드카타 - (36)~(40) [JAVA] 코드카타 - (36)~(40)문제 (36) : 문자열 다루기 기본문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요.
queenriwon3.tistory.com
250116 - Java 키오스크 구현과 트러블슈팅: 기능 확장 및 효율성 강화(enum, 람다, stream().forEach(), AtomicInteger, .idea폴더)
250116 - Java 키오스크 구현과 트러블슈팅: 기능 확장 및 효율성 강화(enum, 람다, stream().forEach(), Atomi
▷ 오늘 배운 것키오스크 level6과제를 해결하면서 생긴 문제나 해결 과정에 대해 작성해보도록 하겠다. >1. 선택한 아이템을 장바구니에 넣을지 말지 유저의 선택을 받기2. 장바구니에 물건이
queenriwon3.tistory.com
'프로젝트' 카테고리의 다른 글
Java Spring 기반 일정관리 앱(develop) - 3 Layered Architecture, JPA 등을 이용한 CRUD 기능 (0) | 2025.02.13 |
---|---|
Java Spring 기반 일정관리 앱 - 3 Layered Architecture, JDBC 등을 이용한 CRUD 기능 (0) | 2025.02.03 |
Java 기반 키오스크 - level6 구현 코드 및 설명 (0) | 2025.01.17 |
Java 기반 계산기 - 구현 코드 및 설명 (0) | 2025.01.09 |
Java 기반 계산기 - enum, 제네릭, 람다와 스트림 등을 이용한 계산기 기능 (0) | 2025.01.09 |