필수 기능
- Lv 1. 기본적인 키오스크를 프로그래밍해보자
- Lv 2. 객체 지향 설계를 적용해 햄버거 메뉴를 클래스로 관리하기
- Lv 3. 객체 지향 설계를 적용해 순서 제어를 클래스로 관리하기
- Lv 4. 객체 지향 설계를 적용해 음식 메뉴와 주문 내역을 클래스 기반으로 관리하기
- Lv 5. 캡슐화 적용하기
도전 기능
- Lv 1. 장바구니 및 구매하기 기능을 추가하기
- Lv 2. Enum, 람다 & 스트림을 활용한 주문 및 장바구니 관리
필수 기능
Lv 1. 기본적인 키오스크를 프로그래밍해보자
학습 목표
- 입력 처리와 간단한 흐름 제어 복습
- Scanner 활용법, 조건문, 반복문을 재확인하며 입력 데이터를 처리하는 방법 강화
요구사항 정의
- 햄버거 메뉴 출력 및 선택하기
- 햄버거 메뉴를 출력
- print 문을 사용하여, 햄버거 메뉴를 terminal 에 출력
- 선택한 메뉴 입력
- Scanner 를 사용하여, 숫자를 입력 받음
- 입력받은 숫자에 따라 다른 로직을 실행 → if문 또는 switch-case 문 사용
- 반복
- 메뉴 출력 → 입력 → 결과 반복
- 0 입력 시 프로그램 종료
- 0과 메뉴번호 외 다른 값 입력 시 예외처리
- 햄버거 메뉴를 출력
Lv 2. 객체 지향 설계를 적용해 햄버거 메뉴를 클래스로 관리하기
학습 목표
- 객체 지향 개념을 학습하고, 데이터를 구조적으로 관리하며 프로그램을 설계하는 방법을 익힌다.
- 햄버거 메뉴를 MenuItem 클래스와 List를 통해 관리한다.
요구사항 정의
- MenuItem 클래스 생성
- 메뉴 항목을 관리하는 클래스
- 속성
- name: 음식명
- price: 음식 가격
- description: 음식 설명
- 생성자
- 인스턴스 생성시 속성(name, price, description) 값을 할당한다.
- 기능
- 음식 정보를 가져오는 게터
- main 함수에서 MenuItem 클래스를 활용하여 메뉴를 출력한다.
- main 함수에서 MenuItem 클래스의 인스턴스 생성
- 게터, 세터를 통해 값을 저장하고, 가져온다.
- main 함수에서 List를 선언하여 여러 MenuItem 을 추가한다.
Lv 3. 객체 지향 설계를 적용해 순서 제어를 클래스로 관리하기
학습 목표
- 객체 지향 개념을 학습하고, 데이터를 구조적으로 관리하며 프로그램을 설계하는 방법을 익힌다.
- main 함수에서 관리하던 전체 순서 제어를 Kiosk 클래스를 통해 관리한다.
요구사항 정의
- Kiosk 클래스 생성
- 키오스크 프로그램의 메뉴를 관리하고 사용자 입력을 처리하는 클래스
- 속성
- List<MenuItem> menuItems: menuItem 리스트
- 생성자
- menuItems 값을 할당한다.
- 기능: start()
- main 함수에서 관리하던 입력과 반복문 로직을 start() 메서드에서 관리한다.
Lv 4. 객체 지향 설계를 적용해 음식 메뉴와 주문 내역을 클래스 기반으로 관리하기
요구사항 정의
- Menu 클래스 생성
- MenuItem 클래스를 관리하는 클래스
- ex. 버거 메뉴, 음료 메뉴 등 카테고리 내 여러 MenuItem 포함
- 속성
- name: 카테고리명
- List<MenuItem> menuItems: menuItem 리스트
- 생성자
- 카테고리와 카테고리 내 음식 리스트 값을 할당한다.
- 기능
- 메뉴 카테고리 이름을 반환하는 메서드 구현
Lv 5. 캡슐화 적용하기
요구사항 정의
- MenuItem, Menu 그리고 Kiosk 클래스의 필드에 직접 접근하지 못하도록 설정
- 속성에 접근 제어자 설정 - private
- Getter와 Setter 메서드를 사용해 데이터 관리
- 필요한 게터, 세터 메서드 생성
도전 기능
(간략하게 ... )
Lv 1. 장바구니 및 구매하기 기능을 추가하기
학습 목표
- 클래스 간 역할 분리를 이해하고, 적절히 협력하는 객체를 설계
- 프로그램 상태 변경 및 데이터 저장을 연습
- 사용자 입력에 따른 예외 처리와 조건 분기를 연습
요구사항 정의
- 장바구니 생성 및 관리 기능
- 메뉴명, 수량, 가격 정보를 저장
- 항목을 동적으로 추가 및 조회할 수 있도록 함
- 장바구니 담기 기능
- 메뉴를 클릭하면 장바구니에 추가할 지 물어보고, 입력값에 따라 “추가”, “취소” 처리
- 주문 기능
- 결제 전, 장바구니에 담긴 모든 메뉴와 총 금액을 출력
- 총 금액을 계산하고, “주문하기”를 누르면 장바구니를 초기화
Lv 1. Enum, 람다 & 스트림을 활용한 주문 및 장바구니 관리
학습 목표
- Enum을 통해 상수를 안전하게 관리하고, 프로그램 구조를 간결하게
- 스트림 API를 사용하여 데이터를 필터링하고, 간결한 코드로 동작을 구현
요구사항 정의
- Enum을 활용한 사용자 유형별 할인율 관리하기
- 사용자 유형의 Enum 정의 및 각 사용자 유형에 따른 할인율 적용
- 람다 & 스트림을 활용한 장바구니 조회 기능
- 기존에 생성한 Menu의 MenuItem을 조회 할 때 스트림을 사용하여 출력하도록 수정
- 기존 장바구니에서 특정 메뉴 빼기 기능을 통한 스트림 활용
'내일배움캠프(Spring 7기) > CH 2 키오스크 과제' 카테고리의 다른 글
키오스크 과제 정리 & 회고 (0) | 2025.04.29 |
---|