C# 컴포지션(Composition)의 개념
컴포지션(Composition)은 객체 지향 프로그래밍에서 두 객체 간의 부분-전체(part-of) 관계를 표현하는 방식입니다. 컴포지션은 집합(Aggregation)의 특수한 형태로, 부모 객체가 삭제되면 자식 객체도 함께 소멸한다는 점이 가장 큰 특징입니다.
즉, 전체 객체와 부분 객체의 생명주기가 완전히 묶여 있어서, 전체가 사라지면 그에 속한 부분도 더 이상 존재할 수 없습니다.
예시: 자동차와 엔진
자동차(Car)는 엔진(Engine)을 가지고 있습니다. 만약 자동차가 폐차되어 파괴된다면, 그 안에 탑재된 엔진 역시 더 이상 독립적으로 존재할 수 없게 됩니다. 이것이 바로 컴포지션의 대표적인 예입니다.
public class Engine {
. . .
}
public class Car {
Engine eng = new Engine();
.......
}위 코드에서 Car 클래스는 내부적으로 Engine 객체를 직접 생성하고 소유합니다. 따라서 Car 객체가 메모리에서 제거되면 그 안에 포함된 Engine 객체도 함께 사라지게 되며, 이처럼 강한 결합 관계가 컴포지션의 핵심입니다.