요구사항
•
주문 목록에 음료 추가/삭제 기능
•
주문 목록 전체 지우기
•
주문 목록 총 금액 계산하기
•
주문 생성하기
코드 작성
•
Beverage
package sample.cafekiosk.unit.beverage;
public interface Beverage {
    String getName();
    int getPrice();
}
Java
복사
•
Americano
package sample.cafekiosk.unit.beverage;
public class Americano implements Beverage {
    @Override
    public String getName() {
        return "아메리카노";
    }
    @Override
    public int getPrice() {
        return 4000;
    }
}
Java
복사
•
Latte
package sample.cafekiosk.unit.beverage;
public class Latte implements Beverage {
    @Override
    public String getName() {
        return "라떼";
    }
    @Override
    public int getPrice() {
        return 4500;
    }
}
Java
복사
•
Order
package sample.cafekiosk.unit.order;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import sample.cafekiosk.unit.beverage.Beverage;
import java.time.LocalDateTime;
import java.util.List;
@Getter
@RequiredArgsConstructor
public class Order {
    private final LocalDateTime orderDateTime;
    private final List<Beverage> beverages;
}
Java
복사
•
CafeKiosk
package sample.cafekiosk.unit;
import lombok.Getter;
import sample.cafekiosk.unit.beverage.Beverage;
import sample.cafekiosk.unit.order.Order;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Getter
public class CafeKiosk {
    private List<Beverage> beverages = new ArrayList<>();
    public void add(Beverage beverage) {
        beverages.add(beverage);
    }
    public void remove(Beverage beverage) {
        beverages.remove(beverage);
    }
    public void clear() {
        beverages.clear();
    }
    public int calculateTotalPrice() {
        int totalPrice = 0;
        for (Beverage beverage : beverages) {
            totalPrice += beverage.getPrice();
        }
        return totalPrice;
    }
    public Order createOrder() {
        return new Order(LocalDateTime.now(), beverages);
    }
}
Java
복사
•
CafeKioskRunner
package sample.cafekiosk.unit;
import sample.cafekiosk.unit.beverage.Americano;
import sample.cafekiosk.unit.beverage.Latte;
public class CafeKioskRunner {
    public static void main(String[] args) {
        CafeKiosk cafeKiosk = new CafeKiosk();
        cafeKiosk.add(new Americano());
        System.out.println(">>> 아메리카노 추가");
        cafeKiosk.add(new Latte());
        System.out.println(">>> 라떼 추가");
        int totalPrice = cafeKiosk.calculateTotalPrice();
        System.out.println("총 주문가격 : " + totalPrice);
    }
}
Java
복사
•
CafeKioskTest
package sample.cafekiosk.unit;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import sample.cafekiosk.unit.beverage.Americano;
import static org.junit.jupiter.api.Assertions.*;
class CafeKioskTest {
    @DisplayName("카페 키오스크 테스트")
    @Test
    public void add() {
        CafeKiosk cafeKiosk = new CafeKiosk();
        cafeKiosk.add(new Americano());
        System.out.println(">>> 담긴 음료 수 : " + cafeKiosk.getBeverages().size());
        System.out.println(">>> 담긴 음료 : " + cafeKiosk.getBeverages().get(0).getName());
    }
}
Java
복사

