본문 바로가기
내일배움캠프

내일배움 캠프 10일차 TIL - 개인과제 (자바 키오스크 구현) 진행중

by Kiwimel0n 2024. 1. 5.
  • 오늘의 키워드

키오스크, MVC, 클래스

  • 오늘배운내용

3주차 강의를 완강을 하게되고 개인과제를 진행하게 되었다.

개인과제는 자바로 만드는 내가좋아하는 가게 키오스크 구현이였다.

요구사항으로는

 

Java 클래스 설계 시 필수 요구사항!

  • 메뉴 클래스는 이름, 설명 필드를 가지는 클래스로 만들어주세요.
  • 상품 클래스는 이름, 가격, 설명 필드를 가지는 클래스로 만들어주세요.
  • 상품 클래스의 이름, 설명 필드는 메뉴 클래스를 상속받아 사용하는 구조로 개발해주세요.
  • 주문 클래스도 만들어서 상품 객체를 담을 수 있도록 해주세요.

이것과

여러 메뉴화면과 화면에서 메인메뉴판과 상품메뉴 선택시 상품메뉴판 구매화면 및 장바구니 주문화면을 구현하는 것이 었다. 그 외에 선택 요구사항으로 주문개수 기능 추가, 상품 옵션 기능 추가, 총 판매 금액 조회기능 추가, 총 판매 상품 목록 조회기능 추가 등이 있었다. 하지만 나로써는 구현할 수 있는 실력이 아직까지는 되지못한다고 생각이 들었지만 할 수 있는 데 까지는 최선을 다해보려고 한다.

 

기본적으로 키오스크가 어떻게 구현되는지 설계를 해보자 하고 구현되는 방식을 그림으로 그려보았다.

 

 

이런 방식으로 키오스크 구현을 동작시키기위해서

먼저 클래스들을 만들어 메뉴클래스, 상품 클래스, 주문 클래스를 만들어 주었고 상품들을 담을 리스트를 구성하여 데이터를 넣어주었다.

 

public class Menu {
    String menuName;
    String description;

    public Menu() {

    }

    public Menu(String menuName, String description){
        this.menuName = menuName;
        this.description = description;
    }

    public String getMenuName() {

        return this.menuName;
    }

    public String getDescription() {

        return this.description;
    }
}

 

처음에는 이 메뉴클래스 안에 리스트를 넣어 

 

public LinkedList<Menu> MenuList = new LinkedList<>();


public void initMenu(){
        Menu Menu1 = new Menu("Burgers", "주문 즉시 바로 조리해 맛있는 맘스터치 버거~!");
        Menu Menu2 = new Menu("Chickens", "맘스터치만의 조리법으로 겉바속촉한 맘스터치 치킨~");
        Menu Menu3 = new Menu("SideAndSnack", "어떤 메뉴와도 어울려 먹을 수 있는 사이드메뉴");
        Menu Menu4 = new Menu("Drinks", "맘스터치 요리와 궁합인 음료수들");

        MenuList.clear();
        MenuList.add(Menu1);
        MenuList.add(Menu2);
        MenuList.add(Menu3);
        MenuList.add(Menu4);

    }

 

이렇게 메뉴 데이터들을 초기화 시키려고 하였지만 출력클래스에서 메뉴클래스를 생성 후 초기화 메서드를 사용하였지만 동작하지가 않았다. 그래서 조언을 듣고 먼저 아웃풋클래스에서 에서 리스트와 초기화 후 데이터를 넣는 메서드를 구현한 뒤 동작시켰더니

 

// 메인메뉴 출력
public void displayMainMenu(){
        welcomeMessage();
        displayLine();
        initMenu();
        System.out.println("                    [맘스터치 메뉴]"+"\n");
        for (int i = 0 ; i<MenuList.size() ; i++) {
            Menu Menu = MenuList.get(i);
            System.out.printf("%d. %-15s| %s\n", i+1,Menu.getMenuName(), Menu.getDescription());
        }
        System.out.println();
        displayLine();
        System.out.println("                    [ 주문 메뉴 ]"+"\n");
        System.out.printf("%d. %-10s| %s\n", 5, "Order", "장바구니를 확인 후 주문합니다");
        System.out.printf("%d. %-10s| %s\n", 6, "Cancel", "진행중인 주문을 취소합니다");
        displayLine();


    }
    올바른 음식을 통해 건강, 행복, 즐거운 미래를 만들어가는
              맘스터치에 오신것을 환영합니다.
---------------------------------------------------------
                    [맘스터치 메뉴]

1. Burgers        | 주문 즉시 바로 조리해 맛있는 맘스터치 버거~!
2. Chickens       | 맘스터치만의 조리법으로 겉바속촉한 맘스터치 치킨~
3. SideAndSnack   | 어떤 메뉴와도 어울려 먹을 수 있는 사이드메뉴
4. Drinks         | 맘스터치 요리와 궁합인 음료수들

---------------------------------------------------------
                    [ 주문 메뉴 ]

5. Order     | 장바구니를 확인 후 주문합니다
6. Cancel    | 진행중인 주문을 취소합니다
---------------------------------------------------------

이러한 결과까지 만들어 내었다.

메인 메뉴말고 상품메뉴를 페이지를 구현을 해본 뒤에 데이터를 저장시키는 클래스로 캡슐화를 해보려고한다.

  • 오늘의 회고

강의를 듣는 것만으로는 이러한 작은 과제라도 해내기가 쉬운것 같지가 않은 것 같다. 좀더 실습에 중점을 두고 여러가지 학습을 통해 경험을 얻어야할 것 같다,