与 «CORBAInterface» 类的关系

«CORBAInterface» 类之间的关系会根据关系的类型和多重性映射到所生成的 IDL 的元素中。

关联和聚集

离开某个 «CORBAInterface» 类的外发或对称关系箭头只能指向另一个 «CORBAInterface» 类。进入某个 «CORBAInterface» 类的传入关系箭头可以来源于普通类或另一个 «CORBAInterface» 类。

来源于 «CORBAInterface» 类的外发或对称关系会映射到所生成 IDL 中的访问器和增变器方法(例如,get()set()add()clear()),如下所示:

泛化关系

«CORBAInterface» 只能从另一个 «CORBAInterface» 继承。

两个 «CORBAInterface» 类之间的继承会生成为相应 IDL 接口之间的继承。例如,如果 «CORBAInterface» H«CORBAInterface» G 继承,则会为 H 生成以下 IDL 代码:

interface H : G {};

普通类和 «CORBAInterface» 之间的继承箭头会解释为接口的实现(实施)。该结构是用于实施 CORBA 服务器的典型体系结构。

注: 通常,对于具有类似构造的配置,CORBA::Configuration::CORBAEnable 属性必须设置为 CORBAServer 以避免代码生成错误。

在 CORBA 中有两种方法来实现对象适配器:

CORBA::Class::DefaultImplementationMethod 指定项目的实施方法(InheritanceTIE)。换言之,如果 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::TIERealizesInheritanceRealizes 属性设置为它所实现的 «CORBAInterface» 类的名称来覆盖缺省实施方法。换言之,即使您使用继承作为项目的缺省实施方法,仍然可以通过将特定类的 TIERealizes 属性设置为其实现的 «CORBAInterface» 的名称来使用 TIE 作为该类的实施方法。您可以让同一个类使用不同方法来实现不同的 «CORBAInterface» 类,即将同一个类的 TIERealizesInheritanceRealizes 属性设置为它使用两种方法所实现的 «CORBAInterface» 类的名称。

组合

«CORBAInterface» 类不能包含在任何元素中。«CORBAInterface» 类本身只能包含 «CORBAException» 类。


反馈