inblog logo
|
harimmon
    자바

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

    백하림's avatar
    백하림
    Feb 17, 2025
    [Java] 62. 코드 분석 (클래스별 역할 정리)
    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

    harimmon

    RSS·Powered by Inblog