저번주부터 오늘까지 했던 개인 과제를 정리해보려고 한다.
필수 요구사항은 다음과 같다.
Java 클래스 설계 시 필수 요구사항!
- 메뉴 클래스는 이름, 설명 필드를 가지는 클래스로 만들어주세요.
- 상품 클래스는 이름, 가격, 설명 필드를 가지는 클래스로 만들어주세요.
- 상품 클래스의 이름, 설명 필드는 메뉴 클래스를 상속받아 사용하는 구조로 개발해주세요.
- 주문 클래스도 만들어서 상품 객체를 담을 수 있도록 해주세요.
- 메인 메뉴판 화면
- 메인 메뉴판이 출력되며 메뉴판에는 상품 메뉴가 출력 됩니다.
- 상품 메뉴는 간단한 설명과 함께 출력 되며 최소 3개 이상 출력 됩니다.
- 상품 메뉴 아래에는 Order(주문)와 Cancel(주문 취소) 옵션을 출력해줍니다.
- 상품 메뉴판 화면
- 상품 메뉴 선택 시 해당 카테고리의 메뉴판이 출력됩니다.
- 메뉴판에는 각 메뉴의 이름과 가격과 간단한 설명이 표시됩니다.
- 구매 화면
- 상품 선택 시 해당 상품을 장바구니에 추가할지 확인하는 문구가 출력 됩니다.
1.확인입력 시 장바구니에 추가되었다는 안내 문구와 함께 메인 메뉴로 다시 출력 됩니다.- 주문 화면
5.Order입력 시 장바구니 목록을 출력해줍니다.- 장바구니에서는 추가된 메뉴들과 총 가격의 합을 출력해줍니다.
1.주문입력 시 주문완료 화면으로 넘어가고,2.메뉴판입력 시 다시 메인 메뉴로 돌아옵니다.- 주문완료 화면
1.주문입력 시 대기번호를 발급해줍니다.- 장바구니는 초기화되고 3초 후에 메인 메뉴판으로 돌아갑니다.
- 주문 취소 화면
- 메뉴판에서
6.Cancel입력시 주문을 취소할지 확인을 요청하는 문구가 출력 됩니다.1.확인을 입력하면 장바구니는 초기화되고 취소 완료 문구와 함께 메뉴판이 출력 됩니다.
먼저 메뉴 클레스를 생성해주었습니다.
package main.java.food;
public class Menu {
private String name;
private String explanation;
public Menu(String name, String explanation) {
this.name = name;
this.explanation = explanation;
}
public String getExplanation() {
return explanation;
}
public String getName() {
return name;
}
}
그리고 매뉴 클래스를 상속받은 상품(음식) 클래스와 음식을 여러개 담을수 있는 타이틀 클래스를 만들어 줍니다.
package main.java.food;
public class Food extends Menu {
private double price;
private double largePrice;
public Food(String name, double price, String explanation) {
super(name, explanation);
this.price = price;
this.largePrice = price + 2000;
}
public double getPrice() {
return price;
}
public double getLargePrice() {
return largePrice;
}
}
package main.java.food;
import java.util.ArrayList;
public class Title extends Menu {
public static int numder = 1;
private int menuNumder = 1;
private int seq;
private ArrayList<Food> menus = new ArrayList<>();
public Title(String name, String explanation) {
super(name, explanation);
this.seq = numder++;
}
public void setMenus(String name, double price, String explanation) {
this.menus.add(new Food(name, price, explanation));
this.menuNumder++;
}
public Food getMenus(int numder) {
return this.menus.get(numder);
}
public ArrayList<Food> getMenusList() {
return this.menus;
}
public int getSeq() {
return seq;
}
public int getMenuNumder() {
return menuNumder;
}
}
그리고 주문클래스에 들어가는 주문상품클래스와 주문클래스를 만들어줍니다.
package main.java.order;
import main.java.food.Menu;
public class OrderFood extends Menu {
private String size;
private int count = 1;
private double realPrice;
public OrderFood(String name, double realPrice, String explanation) {
super(name, explanation);
this.realPrice = realPrice;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public int getCount() {
return count;
}
public void setCount() {
this.count++;
}
public double getRealPrice() {
return realPrice * count;
}
}
package main.java.order;
import java.util.ArrayList;
public class Order {
public ArrayList<OrderFood> OrderList = new ArrayList<>();
private int seq = 1;
private int menuCount = 0;
private int totalCount = 0;
public ArrayList<OrderFood> OrderListTotal = new ArrayList<>();
public void setOrderList(OrderFood orderFood, String size) {
this.OrderList.add(orderFood);
menuCount++;
OrderList.get(menuCount - 1).setSize(size);
this.OrderListTotal.add(orderFood);
totalCount++;
OrderListTotal.get(totalCount - 1).setSize(size);
}
public double price() {
double price = 0;
for (OrderFood f : OrderList) {
price = price + f.getRealPrice();
}
return price;
}
public ArrayList<OrderFood> getOrder() {
return this.OrderList;
}
public ArrayList<OrderFood> getOrderTotal() {
return this.OrderListTotal;
}
public void reset() {
this.OrderList.clear();
this.seq++;
this.menuCount = 0;
}
public int getSeq() {
return seq;
}
}