«CORBAInterface» 클래스 사이의 관계는 관계의 유형 및 다중성에 따라 생성된 IDL의 요소에 맵핑됩니다.
«CORBAInterface» 클래스에서 출발하는 대칭적 또는 출력되는 관계 화살표는 다른 «CORBAInterface» 클래스만 대상으로 지정할 수 있습니다. «CORBAInterface» 클래스로 들어오는 입력 관계 화살표는 일반 클래스나 다른 «CORBAInterface» 클래스에서 시작될 수 있습니다.
«CORBAInterface» 클래스에서 출력되거나 대칭적인 관계는 다음과 같이 생성된 IDL에서 액세서 및 뮤테이터 메소드(get(), set(), add() 및 clear())에 맵핑됩니다.
예를 들어, 다음 IDL은 다중성이 1인 B 인터페이스에 대해 지시 관계를 보유하는 A 인터페이스에 대해 생성됩니다.
interface A {
//// User-implicit entries ////
B getItsB();
void setItsB(in B p_B);
};
예를 들어, 다음 IDL 시퀀스 정의는 다중성이 2인 D 인터페이스에 대해 대칭적 관계를 보유하는 C 인터페이스에 대해 생성됩니다.
typedef sequence<C> CSeq;
CORBA::Class::IDLSequence 특성은 다음과 같이 IDL 시퀀스 이름의 구현을 지정할 수 있도록 합니다.
«CORBAInterface»는 다른 «CORBAInterface»에서만 상속할 수 있습니다.
두 «CORBAInterface» 클래스 사이의 상속은 해당되는 IDL 인터페이스 사이의 상속으로 생성됩니다. 예를 들어, «CORBAInterface» H가 «CORBAInterface» G에서 상속되는 경우 H에 대해 다음 IDL 코드가 생성됩니다.
interface H : G {};
일반 클래스와 «CORBAInterface» 사이의 상속 화살표는 인터페이스의 실현(구현)으로 해석됩니다. 이 구조는 CORBA 서버를 구현하기 위해 사용되는 일반적인 아키텍처입니다.
CORBA에서 오브젝트 어댑터를 실현하는 방법은 두 가지입니다.
CORBA::Class::DefaultImplementationMethod는 프로젝트에 대한 구현 메소드(Inheritance 또는 TIE)를 지정합니다. 즉, DefaultImplementationMethod가 Inheritance로 설정되는 경우 CORBA 인터페이스의 모든 실현은 기본적으로 상속을 사용하여 구현됩니다.
예를 들어, TAO 및 상속 구현 메소드를 사용하는 경우 «CORBAInterface» I에서 상속되는 클래스 J에 대해 다음 코드가 생성됩니다.
class J : virtual public IBOAImpl {
public :
// Constructors and destructors
J(const char* instanceName = "");
-J();
};
생성된 코드에서 실현하는 클래스 J는 TAO IDL 컴파일러에 의해 생성되는 IBOAImpl 클래스에서 상속됩니다.
특정 클래스에 대한 CORBA::Class::TIERealizes 또는 InheritanceRealizes 특성을, 클래스가 실현하는 «CORBAInterface» 클래스의 이름으로 설정하여 기본 구현 메소드를 대체할 수 있습니다. 즉, 프로젝트에 대한 기본 구현 메소드로 상속을 사용하는 경우에도 해당되는 TIERealizes 특성을, 클래스가 실현하는 «CORBAInterface»의 이름으로 설정하여 특정 클래스에 대한 구현 메소드로 TIE를 계속 사용할 수 있습니다. 동일한 클래스에 대한 TIERealizes 및 InheritanceRealizes 설정을, 클래스가 어느 하나의 메소드를 사용하여 실현하는 «CORBAInterface» 클래스의 이름으로 설정하여, 동일한 클래스가 서로 다른 메소드를 사용하여 다른 «CORBAInterface» 클래스를 실현하도록 할 수 있습니다.
«CORBAInterface» 클래스는 어떤 요소에도 포함될 수 없습니다. «CORBAInterface» 클래스 자체에는 «CORBAException» 클래스만 포함됩니다.