롯데리아 앱
- 버거, 음료수, 새우버거, 버거 세트를 주문하는 프로그램을 컴퍼지션을 활용하여 작성하시오.
문제 분석
- 버거 : 클래스
- 음료수 : 클래스
- 새우버거 : 상속 클래스 (버거 - 부모 클래스)
- 버거 세트 : 컴퍼지션 (has 버거, 음료수)
- 버거 세트는 버거와 음료수가 먼저 생성되어야 생성 가능!
- 버거 세트의 생성 책임을 잘 생각해볼 것
코드 작성
- 버거
package comp;
public class Burger {
private String name;
private int price;
public Burger(String name, int price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public int getPrice() {
return price;
}
}
- 음료수
package comp;
public class Coke {
private String name;
private int price;
public Coke(String name, int price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public int getPrice() {
return price;
}
}
- 새우버거
package comp;
public class ShrimpBurger extends Burger {
private String material;
public ShrimpBurger(String name, int price, String material) {
super(name, price);
this.material = material;
}
public String getMaterial() {
return material;
}
}
- 버거세트
package comp;
// Composition
// DI (Dependency Injection : 의존성 주입 (has))
public class BurgerSet {
// DI : final(상수)로 선언
// why? final은 생성자로 초기화시켜야 값이 들어갈 수 있음.
private final Burger burger;
private final Coke coke;
// 기본 생성자 : 오류 발생
// 1. final에 값을 넣을 수 없기 때문
// 2. 생성자 중복
/*
public BurgerSet() {
}
*/
// final로 인해 생성자를 만들면서 초기화해야 함
public BurgerSet(Burger burger, Coke coke) {
this.burger = burger;
this.coke = coke;
}
// 기본 getter는 만들어 두기
public Burger getBurger() {
return burger;
}
public Coke getCoke() {
return coke;
}
// 사용자를 위한 getter 추가
public String getAllNames() {
return burger.getName() + " " + coke.getName();
}
public int getTotalPrice() {
return burger.getPrice() + coke.getPrice();
}
}
- main
package comp;
public class LotteApp {
public static void main(String[] args) {
// 1. 버거만 주세요. (1000, 버거)
Burger b1 = new Burger("버거", 1000);
System.out.println("주문하신 제품 : " + b1.getName());
System.out.println("가격 : " + b1.getPrice());
System.out.println();
// 2. 콜라만 주세요. (500, 콜라)
Coke c1 = new Coke("콜라", 500);
System.out.println("주문하신 제품 : " + c1.getName());
System.out.println("가격 : " + c1.getPrice());
System.out.println();
// 3. 쉬림프 버거 주세요. (새우, 2000, 새우버거)
ShrimpBurger sb1 = new ShrimpBurger("새우버거", 2000, "새우");
System.out.println("주문하신 제품 : " + sb1.getName());
System.out.println("제품 구성 : " + sb1.getMaterial());
System.out.println("가격 : " + sb1.getPrice());
System.out.println();
// 4. 버거 세트 주세요. (버거, 사이다)
Burger b2 = new Burger("버거", 1000);
Coke c2 = new Coke("사이다", 500);
BurgerSet bs1 = new BurgerSet(b2, c2);
System.out.println("주문하신 제품 : " + b2.getName() + "세트");
System.out.println("품목 : " + bs1.getAllNames());
System.out.println("가격 : " + bs1.getTotalPrice());
System.out.println();
}
}
결과

Share article