Menu Class
- 이름, 설명 필드를 가지는 클래스
package Practic;
//메뉴 클래스는 이름, 설명 필드를 가지는 클래스로 만들어주세요.
public class Menu {
//속성
private String name;
private String description;
//함수 (생성자)
public Menu(String name, String description) {
this.name = name;
this.description = description;
}
//메서드
public String getName() {
return name;
}
public String getDescription() {
return description;
}
}
Product Class
- 이름, 가격, 설명 필드를 가지는 클래스
- 메뉴 클래스를 상속는 구조로 개발
package Practic;
public class Product extends Menu{
public String category;
private int price;
public Product(String category, String name, String description, int price) {
super(name, description);
this.price = price;
this.category = category;
}
public String getCategory() {
return category;
}
public void setPrice(int price) {
this.price = price;
}
public int getPrice() {
return price;
}
}
Cart Class
- 선택한 상품 객체를 담고, 총 결제금액을 계산하는 클래스
package Practic;
import Practic.Product;
import java.util.ArrayList;
import java.util.List;
public class Cart {
ArrayList<Product> cartItem = new ArrayList<>();
public void addCart (Product product){
cartItem.add(product);
}
public void clearCart(){
cartItem.clear();
}
public ArrayList<Product> getCartItem() {
return cartItem;
}
public int totalCartPrice(){
int sum =0;
for (int a=0; a<cartItem.size(); a++){
sum += cartItem.get(a).getPrice();
}return sum;
}
// String addedNamePrice;
StringBuilder addedNamePrice = new StringBuilder();
public String showCart(){
for (int a=0; a<cartItem.size();a++){
addedNamePrice.append(cartItem.get(a).getName()).append(" | ").append(cartItem.get(a).getPrice()).append("원\n");
}return addedNamePrice.toString();
}
}
Main
package Practic;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//메뉴
Menu coffee = new Menu("커피", "커피 샷이 들어간 음료");
Menu softdrink = new Menu("탄산음료", "탄산이 들어간 음료");
ArrayList<Menu> menuList = new ArrayList<>();
menuList.add(coffee);
menuList.add(softdrink);
Menu order = new Menu("주문하기", "장바구니를 확인 후 주문합니다.");
Menu cancel = new Menu("취소하기", "진행중인 주문을 취소합니다.");
//커피
Product americano = new Product("커피", "아메리카노", "커피 음료", 3800);
Product cafelatte = new Product("커피", "카페라떼", "우유에 샷이 들어간 커피 음료", 4500);
Product cafemocha = new Product("커피", "카페모카", "초코맛이 나는 커피 음료", 4000);
//탄산음료
Product kola = new Product("탄산음료", "콜라", "검정색 탄산음료", 2000);
Product sprite = new Product("탄산음료", "사이다", "무색 탄산음료", 2000);
Product lemonade = new Product("탄산음료", "레몬에이드", "레몬맛 탄산음료", 4000);
//커피 이름 카테고리에 담기
ArrayList<Product> products = new ArrayList<>();
products.add(americano);
products.add(cafelatte);
products.add(cafemocha);
products.add(kola);
products.add(sprite);
products.add(lemonade);
//ArrayList<Product> cart = new ArrayList<>();
Cart cart = new Cart();
//메뉴 선택, 세부메뉴 출력
Scanner sc = new Scanner(System.in);
while (true) { //취소시 메인 화면으로 돌아오도록
//메뉴 선택하기
System.out.println("[메뉴를 선택 해 주세요.]");
for (int i = 0; i < menuList.size(); i++) {
int index = i + 1;
System.out.println(index + "." + menuList.get(i).getName() + " | " + menuList.get(i).getDescription());
}
// 주문하기/취소하기
System.out.println("\t");
System.out.println("[주문 / 취소]");
System.out.println("3." + order.getName() + " | " + order.getDescription());
System.out.println("4." + cancel.getName() + " | " + cancel.getDescription());
int choice = sc.nextInt();
List<Product> selectedList = new ArrayList<>();
if (choice <= 2) {
String category = menuList.get(choice - 1).getName(); //커피 or 탄산 출력
for (int i = 0; i < products.size(); i++) {
Product targetProduct = products.get(i); //커피와 탄산음료 전체를 출력
String targetCategory = targetProduct.getCategory();
if (category.equals(targetCategory)) {
selectedList.add(targetProduct);
}
}
System.out.println("[" + category + "]");
for (int i = 0; i < selectedList.size(); i++) {
int index = i + 1;
System.out.println(index + "." + selectedList.get(i).getName() + " | " +
selectedList.get(i).getPrice() + "원 | " +
selectedList.get(i).getDescription());
}
} else if (choice == 3) {
//장바구니 출력
List<Product> cartItem = cart.getCartItem();
System.out.println("주문 메뉴:");
System.out.println(cart.showCart());
System.out.println("");
int totalPrice = cart.totalCartPrice();
System.out.println("총 결제금액:" + totalPrice + "원");
} else if (choice == 4) {
cart.clearCart();
System.out.println("주문이 취소되었습니다.\n");
continue;
}
//음료명 입력
int choice2 = sc.nextInt();
int c2 = choice2 - 1;
String choice2name = selectedList.get(c2).getName();//세부 음료 이름 출력
for (int i = 0; i < selectedList.size(); i++) {
//선택헌 음료 출력
if (choice2name.equals(selectedList.get(i).getName())) {
System.out.println(selectedList.get(i).getName() + " | " +
selectedList.get(i).getPrice() + "원" + " | " +
selectedList.get(i).getDescription() + "\n");
//메뉴 선택/취소
System.out.println("위 메뉴를 장바구니에 추가하시겠습니까?");
System.out.println("1. 확인");
System.out.println("2. 취소");
int select = sc.nextInt();
if (select == 1) {
// 장바구니 담기
cart.addCart(selectedList.get(c2));
System.out.println(selectedList.get(c2).getName() + "가 장바구니에 추가되었습니다.\n");
} else if (select == 2) {
System.out.println("주문이 취소되었습니다.");
break;
}
}
}
}
}
}
나의 첫 자바 프로젝트를 제출했다 ㅠㅠㅠㅠ후엥
튜터님과 팀원들이 정말 많이 도와주셨다....
일주일동안 급하게 강의들으면서 다양한 메소드, 개념, 정의를
머리에 쑤셔넣는 느낌이라
머리속에서 다 뒤섞이고 난리도 아니었지만
프로젝트를 하면서 조금씩 다시 이해하고 쓸 수 있게 된 느낌이다
특히 ArrayList를 쓸 줄 알게 되었고,
클래스를 어떻게 나눠야하는지 조금씩 감이 잡혔다.
너무 천천히 늘고 있는 것 같지만
어쨋든 먼가는 배우고 있다는거에 만족하기로 했다..ㅎㅎ
담 프로젝트도 화 이 팅....
'Java' 카테고리의 다른 글
[TIL] 231120 Java의 정석 연습문제 7장 오답 (1) | 2023.11.20 |
---|---|
[TIL] 231029 Java Hashmap, ArrayList, Char/String형 변수 true/false 확인, 오버로딩, 오버라이딩 (0) | 2023.10.29 |
[TIL] 231019 첫 프로젝트 시작....클래스 이해해보기....클래스의 생김새와 기능(메소드) (0) | 2023.10.19 |
[TIL] 231019 Java 메소드, 객체, 상속 (생활코딩) (0) | 2023.10.19 |
[TIL] 231017 Java 객체 지향 프로그래밍 (생활코딩) (0) | 2023.10.18 |