«CORBAInterface» 类之间的关系会根据关系的类型和多重性映射到所生成的 IDL 的元素中。
离开某个 «CORBAInterface» 类的外发或对称关系箭头只能指向另一个 «CORBAInterface» 类。进入某个 «CORBAInterface» 类的传入关系箭头可以来源于普通类或另一个 «CORBAInterface» 类。
来源于 «CORBAInterface» 类的外发或对称关系会映射到所生成 IDL 中的访问器和增变器方法(例如,get()、set()、add() 和 clear()),如下所示:
例如,以下 IDL 是为接口 A 而生成的,该接口与多重性为 1 的接口 B 具有定向关系。
interface A {
//// User-implicit entries ////
B getItsB();
void setItsB(in B p_B);
};
例如,以下 IDL 序列定义是为接口 C 而生成的,该接口与多重性为 2 的接口 D 具有对称关系:
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 和继承实施方法时,将会为类 J(从 «CORBAInterface» I 继承)生成以下代码:
class J : virtual public IBOAImpl {
public :
// Constructors and destructors
J(const char* instanceName = "");
-J();
};
所生成的代码中,实现类 J 继承于 IBOAImpl 类,而该类是由 TAO IDL 编译器生成的。
您可以通过将特定类的 CORBA::Class::TIERealizes 或 InheritanceRealizes 属性设置为它所实现的 «CORBAInterface» 类的名称来覆盖缺省实施方法。换言之,即使您使用继承作为项目的缺省实施方法,仍然可以通过将特定类的 TIERealizes 属性设置为其实现的 «CORBAInterface» 的名称来使用 TIE 作为该类的实施方法。您可以让同一个类使用不同方法来实现不同的 «CORBAInterface» 类,即将同一个类的 TIERealizes 和 InheritanceRealizes 属性设置为它使用两种方法所实现的 «CORBAInterface» 类的名称。
«CORBAInterface» 类不能包含在任何元素中。«CORBAInterface» 类本身只能包含 «CORBAException» 类。