Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

이지은님의 블로그

Java 기반 키오스크 - enum, 제네릭, 람다와 스트림 등을 이용한 키오스크 기능 본문

프로젝트

Java 기반 키오스크 - enum, 제네릭, 람다와 스트림 등을 이용한 키오스크 기능

queenriwon3 2025. 1. 17. 17:10

👉 키오스크 구현 과제 소개

프로젝트 명 : 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