내배캠 TIL 14일차

오병택·2025년 3월 7일

내배캠

목록 보기
36/73

학습 요약

새로운 키오스크 과제 두둥등장, lv1,lv2,lv3 키오스크 만들기, 코드 리뷰

키오스크 lv1

Main 클래스

package com.example.kiosk;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        boolean flag = true;
        while (flag) {
            System.out.println("[ "+ "SHAKESHACK MENU"+ " ]");
            System.out.println("1. ShackBurger   | W 6.9 | 토마토, 양상추, 쉑소스가 토핑된 치즈버거");
            System.out.println("2. SmokeShack    | W 8.9 | 베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거");
            System.out.println("3. Cheeseburger  | W 6.9 | 포테이토 번과 비프패티, 치즈가 토핑된 치즈버거");
            System.out.println("4. Hamburger     | W 5.4 | 비프패티를 기반으로 야채가 들어간 기본버거");
            System.out.println("0. 종료      | 종료");
            int chooseMenu = sc.nextInt();
            switch (chooseMenu) {
                case 0 -> {
                    System.out.println("프로그램을 종료합니다");
                    flag = false;
                }
                case 1 -> System.out.println("ShackBurger를 선택하셨습니다");
                case 2 -> System.out.println("SmokeShack를 선택하셨습니다");
                case 3 -> System.out.println("Cheeseburger를 선택하셨습니다");
                case 4 -> System.out.println("Hamburger를 선택하셨습니다");
                default -> System.out.println("메뉴에 있는 숫자만 써주세요");
            }
        }
    }
}

lv1 요구사항

  • 입력 처리와 간단한 흐름 제어를 복습
  • Scanner 활용법, 조건문, 반복문을 재확인하며 입력 데이터를 처리하는 방법 강화

키오스크 lv2

Main 클래스

package com.example.kiosk;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        List<MenuItem> menuItems = new ArrayList<>();
        menuItems.add(new MenuItem("ShackBurger ",6.9, "토마토, 양상추, 쉑소스가 토핑된 치즈버거"));
        menuItems.add(new MenuItem("SmokeShack  ",8.9, " 베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거"));
        menuItems.add(new MenuItem("Cheeseburger",6.9, "포테이토 번과 비프패티, 치즈가 토핑된 치즈버거"));
        menuItems.add(new MenuItem("Hamburger   ",5.4, "비프패티를 기반으로 야채가 들어간 기본버거"));
        Scanner sc = new Scanner(System.in);
        boolean flag = true;

        while (flag) {
            System.out.println();
            System.out.println("[ "+ "SHAKESHACK MENU"+ " ]");
            int i = menuItems.size()-1;
            for (MenuItem menuItem : menuItems) {
                System.out.println(menuItems.size()-i +". " + menuItem.name + "  | W " + menuItem.price + " | " + menuItem.explanation);
                i--;
            }
            System.out.println("0. 종료      | 종료");
            System.out.print("숫자를 선택해주세요 : ");
            int chooseMenu = sc.nextInt();
            switch (chooseMenu) {
                case 0 -> {
                    System.out.println("프로그램을 종료합니다");
                    flag = false;
                }
                case 1 -> System.out.println("선택한 메뉴 :  1. " + menuItems.get(0).name + "  | W " + menuItems.get(0).price + " | " + menuItems.get(0).explanation);
                case 2 -> System.out.println("선택한 메뉴 :  2. " + menuItems.get(1).name + "  | W " + menuItems.get(1).price + " | " + menuItems.get(1).explanation);
                case 3 -> System.out.println("선택한 메뉴 :  3. " + menuItems.get(2).name + "  | W " + menuItems.get(2).price + " | " + menuItems.get(2).explanation);
                case 4 -> System.out.println("선택한 메뉴 :  4. " + menuItems.get(3).name + "  | W " + menuItems.get(3).price + " | " + menuItems.get(3).explanation);
                default -> System.out.println("메뉴에 있는 숫자만 써주세요");
            }
        }

    }
}
package com.example.kiosk;

public class MenuItem {
    String name;
    double price;
    String explanation;

    MenuItem(String name, double price, String explanation) {
        this.name = name;
        this.price = price;
        this.explanation = explanation;
    }
}

lv2 요구사항

  • 객체 지향 개념을 학습하고, 데이터를 구조적으로 관리하며 프로그램을 설계하는 방법 익히기
  • 햄버거 메뉴를 MenuItem 클래스와 List를 통해 관리

키오스크 lv3

Main 클래스

package com.example.kiosk;

public class Main {
    public static void main(String[] args) {
        Kiosk kiosk = new Kiosk();
        kiosk.start();
    }
}

Kiosk 클래스

package com.example.kiosk;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Kiosk {
    List<MenuItem> menuItems = new ArrayList<>();
    Scanner sc = new Scanner(System.in);
    boolean flag = true;

    public Kiosk() {
        menuItems.add(new MenuItem("ShackBurger ",6.9, "토마토, 양상추, 쉑소스가 토핑된 치즈버거"));
        menuItems.add(new MenuItem("SmokeShack  ",8.9, " 베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거"));
        menuItems.add(new MenuItem("Cheeseburger",6.9, "포테이토 번과 비프패티, 치즈가 토핑된 치즈버거"));
        menuItems.add(new MenuItem("Hamburger   ",5.4, "비프패티를 기반으로 야채가 들어간 기본버거"));
    }

    public void start() {
        while (flag) {
            System.out.println();
            System.out.println("[ "+ "SHAKESHACK MENU"+ " ]");
            int i = menuItems.size()-1;
            for (MenuItem menuItem : menuItems) {
                System.out.println(menuItems.size()-i +". " + menuItem.name + "  | W " + menuItem.price + " | " + menuItem.explanation);
                i--;
            }
            System.out.println("0. 종료      | 종료");
            System.out.print("숫자를 선택해주세요 : ");
            int chooseMenu = sc.nextInt();
            System.out.println();
            switch (chooseMenu) {
                case 0 -> {
                    System.out.println("프로그램을 종료합니다");
                    flag = false;
                }
                case 1 -> System.out.println("선택한 메뉴 :  1. " + menuItems.get(0).name + "  | W " + menuItems.get(0).price + " | " + menuItems.get(0).explanation);
                case 2 -> System.out.println("선택한 메뉴 :  2. " + menuItems.get(1).name + "  | W " + menuItems.get(1).price + " | " + menuItems.get(1).explanation);
                case 3 -> System.out.println("선택한 메뉴 :  3. " + menuItems.get(2).name + "  | W " + menuItems.get(2).price + " | " + menuItems.get(2).explanation);
                case 4 -> System.out.println("선택한 메뉴 :  4. " + menuItems.get(3).name + "  | W " + menuItems.get(3).price + " | " + menuItems.get(3).explanation);
                default -> System.out.println("메뉴에 있는 숫자만 써주세요");
            }
        }
    }
}

클래스가 하나 더 있는데 lv2와 다른 게 없어서 lv2의 MenuItem을 그대로 보면 좋을 것 같다.

lv3 요구사항

  • lv2 요구사항의 첫 번째 줄과 같음
  • main 함수에서 관리하던 전체 순서 제어를 Kiosk 클래스를 통해 관리

코드 리뷰

lv3까지 끝내서 lv3를 리뷰 받았다.

팀원분들이 말씀해주신 개선사항

  • 클래스 변수에 접근 제어자 붙이기
  • switch문에서 출력해줄 때 중복되는 로직이 있어서 toString 오버라이딩해서 하면 좋을 것 같다
    이유: 형식이 바뀌면 직접 수정해야 돼서 유지보수 힘듬.
  • swith문을 if문으로 바꾸기
    이유: 위와 같은 느낌인데 중복 로직을 else로 합쳐볼 수 있음.

느낀 점

복습하는 개념으로 또 과제를 주셨는데 확실히 한번 해본 것이라 그런지 낮은 레벨은 가속이 엄청 나게 붙었다. 확실히 한 번 코드를 짜보는 것이 여러 번 강의를 듣는 것보다 났다는 것을 알게 됐다. lv4를 하고 있는데 상당히 오래 걸리고 있지만 결실을 맺을 수 있을 것 같다. 물론 요구사항대로 하고 있는 지는 솔직히 모르겠다. ¯ _(ツ)_/¯

profile
걱정하지 말고 일단 해봐!

0개의 댓글