Contents
📌 코드 분석 정리🍔 1. Burger
클래스 (부모 클래스, 기본 햄버거 정의)
역할
- 버거의 이름(name) 과 가격(price) 을 저장
- 생성 시 버거가 만들어졌다는 메시지를 출력
getName()
,getPrice()
메서드를 제공하여 정보 조회 가능
public class Burger {
private String name;
private int price;
public Burger(String name, int price) {
this.name = name;
this.price = price;
System.out.println(name + " 만들어졌어요.");
}
public String getName() { return name; }
public int getPrice() { return price; }
}
🔹 "Burger"는 모든 햄버거의 기본 클래스
🔹 다른 햄버거 종류(
ShrimpBurger
)가 이 클래스를 상속하여 확장🦐 2. ShrimpBurger
클래스 (Burger를 상속받아 확장)
역할
Burger
를 상속받아 추가적인 속성(재료material
)을 추가
- 기본적인
name
과price
는Burger
의 기능을 그대로 사용
getMaterial()
메서드를 추가하여 재료 조회 가능
public class ShrimpBurger extends Burger {
private String material; // 재료
public ShrimpBurger(String material, String name, int price) {
super(name, price); // 부모 클래스의 생성자 호출
this.material = material;
}
public String getMaterial() {
return material;
}
}
🔹
ShrimpBurger
는 Burger
를 상속하여 새로운 속성(material)을 추가🔹 "is-a 관계":
ShrimpBurger
is a Burger
🔹 코드 재사용성 증가 →
Burger
의 기능을 다시 작성하지 않아도 됨🥤 3. Coke
클래스 (독립적인 음료 클래스)
역할
- 콜라의 이름(name) 과 가격(price) 을 저장
getName()
,getPrice()
메서드를 제공하여 정보 조회 가능
- Burger와는 관계가 없음 (상속 X, 독립적인 클래스)
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;
}
}
🔹
Coke
는 Burger
와 상속 관계가 없음 (is-a 관계 X)🔹 독립적인 객체로 활용 가능
🔹 이후
BurgerSet
에서 컴퍼지션을 통해 포함될 예정🍔+🥤 4. BurgerSet
클래스 (버거와 콜라를 포함)
역할
Burger
와Coke
객체를 필드로 포함 → 컴퍼지션(Composition) 사용
getTotalPrice()
메서드로 버거와 콜라의 총 가격 반환
getAllNames()
메서드로 세트 구성 정보 반환
public class BurgerSet {
private final Burger burger;
private final Coke coke;
public BurgerSet(Burger burger, Coke coke) {
this.burger = burger;
this.coke = coke;
}
public Burger getBurger() {
return burger;
}
public Coke getCoke() {
return coke;
}
public int getTotalPrice() {
return burger.getPrice() + coke.getPrice();
}
public String getAllNames() {
return burger.getName() + " " + coke.getName();
}
}
🔹
BurgerSet
은 "has-a 관계": 버거와 콜라를 포함🔹 컴퍼지션(Composition) 사용 →
Burger
와 Coke
를 독립적으로 관리 가능🔹
Burger
와 Coke
의 변경이 BurgerSet
에 영향을 주지 않음 → 유연성 증가📌 코드 분석 정리
클래스 | 역할 | 사용 개념 |
Burger | 기본 버거 정보 | 부모 클래스 |
ShrimpBurger | 새우버거 (재료 추가) | 상속(Inheritance) |
Coke | 콜라 정보 (독립적) | 독립적인 클래스 |
BurgerSet | 버거 + 콜라 조합 | 컴퍼지션(Composition) |
Share article