요구사항
•
주문 목록에 음료 추가/삭제 기능
•
주문 목록 전체 지우기
•
주문 목록 총 금액 계산하기
•
주문 생성하기
코드 작성
•
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
복사