理解使用CAA创建组件(Creating Components)

2014-07-16 21:53:19|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:CAA, CATIA|来源:唯设编程网

CATImplementClass宏声明了类CAAEDataExtension是一个数据扩展,是对MyObject类进行扩展。第三个参数声明当前的组件OM派生(OM-derives)自哪一个对象,这个参数仅仅针对组件的主类有意义,对于一个扩展类通常被设置成CATBaseUnknown 。

代码扩展(Code Extensions)

一个代码扩展时一个仅仅包含方法,而没有数据的扩展。无论这个代码扩展的主对象存在多少个,一个给定的代码扩展类在运行时仅仅存在一个该代码扩展的实例。

理解使用CAA创建组件(Creating Components)

和数据扩展类似,当代码扩展向客户提交时不需要重新编译客户应用程序。

你使用与数据扩展类似的方法对一个代码扩展进行编码,在代码扩展类的源文件中仅仅使用CodeExtension替换DataExtension作为CATImplementClass宏的第二个参数。如下所示:

...

CATImplementClass(CAAECodeExtension,

                  CodeExtension,

                  CATBaseUnknown,

                  MyObject);

...

 

生命周期(Lifecycle):一旦一个给定对象实例被创建,代码扩展将始终不会被删除并且被所有相同对象的实例共用。

共享扩展(Sharing Extensions)

共享一个扩展使得多个类实现这个扩展本身实现的所有接口,而不仅仅是如上面关于扩展的内容所展示的一个类。这是实现代码分解、重用以及代码扩展的另一个步骤。

有两种方法可以实现共享扩展。第一种方法是使扩展本身声明哪一个类是一个扩展类。如果已经存在你想要通过在扩展中实现接口添加额外行为的类,这种方式非常方便。你不需要重新编译已经存在的类,仅仅提供扩展类即可。第二种方法是在通过扩展类进行扩展的类中声明扩展支持。如果已经存在一个扩展类并且你想要将它声明为一个新类的扩展,这种方式非常方便。你不需要重新编译扩展类,仅仅提供那个新类即可。

在扩展类的源文件(.cpp)中按照如下方式声明一个扩展类是对多个类的扩展:

CATBeginImplementClass(MyExtensionClassName,    // Begin declaration

                       DataExtension,

                       CATBaseUnknown,

                       TheFirstClassIExtend);

CATAddClassExtension(TheSecondClassIExtend);

CATAddClassExtension(TheThirdClassIExtend);

...

CATAddClassExtension(TheLastClassIExtend);

CATEndImplementClass(MyExtensionClassName);     // End declaration

 
发表评论0条 】
网友评论(共?条评论)..
理解使用CAA创建组件(Creating Components)