- 한 클래스가 다른 클래스를 포함하는 관계이다.
- has-a" 관계로도 알려져 있으며, 객체 간의 강한 연관성을 나타낸다.
- 하나의 객체가 다른 객체 없이는 의미가 없을 때 사용한다.
package com.composition;
public class Engine {
String name;
int price;
void start(){
System.out.println("엔진이 시작됩니다.");
}
void stop(){
System.out.println("엔진을 멈춥니다.");
}
}
package com.composition;
public class Car {
String name;
int price;
// 포함 관계(컴포지션)
// Car 클래스는 Engine 객체를 포함 합니다.
Engine engine;
public Car(){
// 자동차 객체가 생성될 때 엔진 객체도 함께 생성 된다.
// 강한 의존성
engine = new Engine();
}
void startCar(){
engine.start(); // car 객체를 통해 engine 의 start() 메서드를 호출합니다
System.out.println("자동차가 출발합니다.");
}
void stopCar(){
engine.stop();
}
// 테스트 코드 작성
public static void main(String[] args) {
// **컴포지션 관계를**
//자동차 클래스 내부에서 엔진 객채를 생성 시켜야 컴포지션 관계이다.
Car car = new Car();
car.startCar();
car.stopCar();
}
}