視關係類型和對應關係而定,«CORBAInterface» 類別之間的關係會在產生的 IDL 中對映至元素。
離開 «CORBAInterface» 類別的送出或對稱關係箭頭,只能將另一個 «CORBAInterface» 類別當作目標。進入 «CORBAInterface» 類別的送入關係箭頭,可以起源自一般類別或另一個 «CORBAInterface» 類別。
從 «CORBAInterface» 類別送出或對稱的關係,會在產生的 IDL 中對映至存取元及轉換元方法(如 get()、set()、add() 及 clear())如下:
例如,針對介面 A 所產生的下列 IDL,有一個對介面 B(對應關係為 1)的直接關係:
interface A {
//// User-implicit entries ////
B getItsB();
void setItsB(in B p_B);
};
例如,針對介面 C 所產生的下列 IDL 序列定義,有個對介面 D(對應關係為 2)的對稱關係:
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» 類別名稱。換言之,即使您將繼承用作專案的預設實作方法,仍可以使用將 TIE 用作特定類別的實作方法,方法是將其 TIERealizes 內容設定為其實現的 «CORBAInterface» 名稱。您可以讓相同類別來實現使用不同方法的不同 «CORBAInterface» 類別,方法是將相同類別的 TIERealizes 及 InheritanceRealizes 內容,設定為其使用其中一種方法所實現的 «CORBAInterface» 類別名稱。
無法在任何元素中取得 «CORBAInterface» 類別。«CORBAInterface» 類別本身只會包含 «CORBAException» 類別。