개체 다시 사용
개체 모델의 중요한 목표는 개체 작성자가 다른 사용자가 제공한 개체를 자체 구현의 조각으로 재사용하고 확장할 수 있도록 하는 것입니다. Microsoft Visual C++ 및 기타 언어에서 이 작업을 수행하는 한 가지 방법은 구현 상속을 사용하는 것입니다. 이를 통해 개체가 다른 함수를 재정의하는 동안 다른 개체에서 일부 함수를 상속("하위 클래스")할 수 있습니다.
기존 구현 상속을 사용하는 시스템 전체 개체 상호 작용의 문제는 구현 계층 구조의 개체 간의 계약(인터페이스)이 명확하게 정의되지 않았다는 것입니다. 사실 암시적이고 모호합니다. 부모 또는 자식 개체가 구현을 변경하면 관련 구성 요소의 동작이 정의되지 않거나 불안정하게 구현될 수 있습니다. 모든 구성 요소를 동시에 업데이트하는 단일 엔지니어링 팀에서 구현을 관리할 수 있는 단일 애플리케이션에서 항상 중요한 문제가 되는 것은 아닙니다. 한 팀의 구성 요소가 다른 팀에서 빌드한 다른 구성 요소의 블랙박스 재사용을 통해 빌드되는 환경에서 이러한 유형의 불안정은 재사용을 위태롭게 합니다. 또한 구현 상속은 일반적으로 프로세스 경계 내에서만 작동합니다. 이렇게 하면 많은 엔지니어링 팀에서 빌드한 소프트웨어 구성 요소로 구성된 진화하는 대규모 시스템에서 기존 구현 상속이 실용적이지 않습니다.
재사용 가능한 구성 요소를 빌드하는 핵심은 개체를 불투명 상자로 처리할 수 있다는 것입니다. 즉, 다른 개체를 다시 사용하려는 코드 조각은 아무 것도 알지 못하며 사용 중인 구성 요소의 내부 구조 또는 구현에 대해 아무것도 알 필요가 없습니다. 즉, 구성 요소를 다시 사용하려는 코드는 정확한 구현이 아닌 개체의 동작에 따라 달라집니다.
블랙박스 재사용 가능성을 달성하기 위해 COM은 포함/위임 및 집계와 같은 다른 설정된 재사용 가능성 메커니즘을 채택 합니다.
참고
편의를 위해 재사용되는 개체를 내부 개체라고 하며 해당 내부 개체 를 사용하는 개체는 외부 개체입니다.
이러한 두 메커니즘에서 외부 개체가 클라이언트에 표시되는 방식을 기억하는 것이 중요합니다. 클라이언트와 관련하여 두 개체는 클라이언트가 포인터를 가져올 수 있는 모든 인터페이스를 구현합니다. 클라이언트는 외부 개체를 불투명 상자로 취급하므로 외부 개체의 내부 구조에 대해 신경 쓰지 않으며 신경 쓸 필요가 없습니다."클라이언트는 동작에만 신경을 써야 합니다.
자세한 내용은 아래 항목을 참조하세요.