[Java] 62. 코드 분석 (클래스별 역할 정리)

백하림's avatar
Feb 17, 2025
[Java] 62. 코드 분석 (클래스별 역할 정리)

🍔 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)을 추가
  • 기본적인 namepriceBurger의 기능을 그대로 사용
  • 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; } }
🔹 ShrimpBurgerBurger상속하여 새로운 속성(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; } }
🔹 CokeBurger상속 관계가 없음 (is-a 관계 X)
🔹 독립적인 객체로 활용 가능
🔹 이후 BurgerSet에서 컴퍼지션을 통해 포함될 예정

🍔+🥤 4. BurgerSet 클래스 (버거와 콜라를 포함)

역할
  • BurgerCoke 객체를 필드로 포함 → 컴퍼지션(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) 사용BurgerCoke를 독립적으로 관리 가능
🔹 BurgerCoke의 변경이 BurgerSet에 영향을 주지 않음 → 유연성 증가

📌 코드 분석 정리

클래스
역할
사용 개념
Burger
기본 버거 정보
부모 클래스
ShrimpBurger
새우버거 (재료 추가)
상속(Inheritance)
Coke
콜라 정보 (독립적)
독립적인 클래스
BurgerSet
버거 + 콜라 조합
컴퍼지션(Composition)
Share article

harimmon