找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 20212|回复: 10
打印 上一主题 下一主题

个人对CAA中Component和Interface等问题的理解和疑问

[复制链接]
跳转到指定楼层
1
发表于 2007-5-8 12:08:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
(一)Component和Interface
        对Component可以从两个角度去理解。对于使用VC++进行开发人员,把 component看作由“一个或多个类组成”比较合适。其中有一个主实施类(main implementation class)和若干个对主实施类扩展。如图,CATCircle类就是主实施类,CATMove,CATAttributes,CATDraw类就是CATCircle类的扩展,通过扩展主实施类,可以为它/Component提供额外的接口(Interface),实现额外的操作。如图,每个类中都提供接口,或者可以这样说认为,每个类都是接口,即每个类中都包含有对Component的操作(通过成员函数实现)。不同的是,在对主实施类用CATImplementClasss();时用参数Implementation(如图对CATCircle的申明),其他则用Extension申明(对于两种不同的Extension这里不作说明)。
        所以,在VC++中每一个Module中LocalInterfaces下的都是组成一个Component的类,其中一个为主实施类,其它为它的扩展。

[ 本帖最后由 ashio 于 2007-5-8 12:32 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 赞一下!赞一下!
2
发表于 2007-5-8 12:10:55 | 只看该作者
(二)关于TIE
        不论是Main Implementation还是它的Extension都需要一些Interface来实现对他们的操作,而这些Interface就是通过TIE与相关的类相连,一个Implementation或Extension可以TIE上多个Interface。通过TIE连接的Interface就可以通过QueryInterface来查询并且使用。
        QueryInterface能查询得到的是Component所支持的Interface集。这些Interface就是通过TIE与component相连。也就是说这些通过TIE与Main Implementation和它的Extension连接的Interface,以及继承得到的Interface都能被QueryInterface查询到。
        创建一个TIE对象,在Dictionary文件中也要加入相应项。
3
发表于 2007-5-8 12:12:35 | 只看该作者
(三)关于OM继承
        Interface继承:既要进行描述Interface的C++抽象类继承和又要进行Interface的OM继承(用CATImplementInterface();实现),这样才能实现Interface继承
        通过继承之后,子Interface所属的Component就能使用到继承来的Interface

        Component继承:通过主实施类(用在CATImplementClass()中用Implementation声明的类)需要C++类继承来实现,其他扩展类(即Extension)都不用进行C++继承。
        通过继承之后,继承得到的Component也能使用父Component及其Extension的所有Interface
4
发表于 2007-5-8 12:14:53 | 只看该作者
不知道我的理解是不是正确,还请各位指教!!

参考:CAA V5 For CATIA Foundations,Creating Interfaces ,Creating Components ,Using Components ,Object Modeler Inheritances(后四项都出自CAA V5 Encyclopedia-Middleware-Object Modeler)

在此还要感谢 ririyeyjl 给予的指点和引导!!
5
发表于 2007-5-8 12:26:37 | 只看该作者
问题来了:)
在CAA Help文档里,常会看到这样的描述,这些描述是什么意思:
1. you must use this class as is. You should never derive it.(CATFrmEditor)
2. an implementation of this interface is supplied and you must use it as is. You should not reimplement it.(CATIIniInteractiveSession)
3. you can freely reimplement this interface.(CATIEditor)
4. you must use this class as is.(CATDocumentServices)

--这里讲的class是不是就是component的组成部分,应该如何使用?

--you must use it as is是什么意思,该如何使用?是不是这样,如果是Class就实例化它,如果是Interface就是初始化指针?
如:Class:                CATFrmEditor *pFrmEditor = new CATFrmEditor;
        Interface:        CATIIniInteractiveSession *pIniInteractiveSession=NULL;
                        pIniInteractiveSession-〉Open(…);

--reimplement/implement interface是什么意思?这样的Interface怎么使用,是要使用CATImplementInterface()?

--什么时候要用到QueryInterface?有些接口指针能通过其他接口提供的方法得到,这就用不到QueryInterface,反之就要用,是不是这种情况?

--我看到use case里有这样的语句:CATDlgFrame * pFrameWindow = GetViewerFrame() ;
GetViewerFrame()是类CATFrmWindow提供的方法,这里为什么可以直接使用,而不是对class CATFrmWindow先进行实例化再使用CATFrmWindow::GetViewerFrame()?



问题有些多,都是关于使用CAA的基础,希望能够得到大家的指点!在此谢了先!

[ 本帖最后由 ashio 于 2007-5-8 12:34 编辑 ]
6
发表于 2007-5-10 18:39:12 | 只看该作者
问题多了点,主要是不知道CAA Help里的那些描述是什么意思,该怎么用这些类或者接口。还请大家多指教~
7
发表于 2007-5-13 23:23:20 | 只看该作者
有点明白了,想要implement一个interface,先要建立一个class,通过它来执行interface。
希望各位大虾给一些指点!
8
发表于 2007-5-18 11:28:49 | 只看该作者
那里 我们互相学习嘛  感谢你对心得的共享  
对于"CATDlgFrame * pFrameWindow = GetViewerFrame() ;"
是不是就是函数的构造  

对于那些CAA Help文档里的描述  我认为它是对接口/函数/宏等应用的说明  比如那些使用完后应当释放  见"CAA V5 Resource Exposition, Usage, Deprecation, and Stability"中CAA Resource Usages部分
9
发表于 2007-5-18 12:59:29 | 只看该作者
谢谢  ririyeyjl !!

GetViewerFrame()返回的是CATDlgFrame指针,"CATDlgFrame * pFrameWindow = GetViewerFrame() ;"是用于获取CATDlgFrame指针。这个问题我可能断章取义了,这个类是继承CATFrmWindow,GetViewerFrame() 是继承来的方法,不过我没找到定义类的.h文件

另外,请问"CAA V5 Resource Exposition, Usage, Deprecation, and Stability"这个文件在哪里,是在百科全书里吗?
10
发表于 2007-5-21 12:10:59 | 只看该作者
多谢。学习中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-25 20:55 , Processed in 0.036885 second(s), 14 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表