CAA
第一?/p>
1
CATIA CAA
第一讲:基本概念
1.
什么是组件?/p>
CAA
,全?/p>
C
omponent
A
pplication
A
rchitecture
,组件应用架构。这个东西对不搞软件
的人来说可能很陌生,我也很陌生啊,原来光知道“面向对象的技术”就很牛逼了?/p>
“组?/p>
技术”难道更牛逼吗?/p>
既然类和组件有着这么多类似的地方?/p>
那么传统的面向对象编程和面向组件编程有什?/p>
区别呢?简单的说,
面向对象关注的是组合在一个二进制可执行文件中的各个类的关系,
?/p>
面向组件的编程关注的是在彼此独立的基础上模块之间的交互性,
这种交互性使得你并不需
要熟悉它们内部的工作原理?/p>
这两种方法最基本的不同在于它们对最终的应用程序的观点。在传统的面向对象编?/p>
中,
尽管你可以精心的把所有的商业逻辑分布在不同的类中?/p>
一旦这些类被编译,
它们就被
固化成了一个巨大的二进制代码?/p>
所有的类共享同一个物理单?/p>
(通常是一个可执行文件?/p>
?/p>
被操作系统认为是同一个进程,
使用同一个地址空间以及共享相同的安全策略等等?/p>
如果?/p>
个开发者在同一份代码上进行开发,
他们甚至还要共享源文件?/p>
在这种情况下?/p>
修改一个类
可能会让整个项目被重新链接,
并重新进行必要的测试?/p>
更严重的?/p>
还有可能要修改其他的
类?/p>
但是?/p>
在面向组件开发中?/p>
应用程序是由一系列可以互相交互的二进制模块组合而成的?/p>
一个具体的二进制组件可能并不能完成什么工作?/p>
有些组件是为了提供一些常规服务而编?/p>
的,
例如通信的封装或者文件访问组件?/p>
也有一些是为了某些特定应用而专门开发的?/p>
一?/p>
应用程序的设计者可以通过把这些不同的组件提供的功能粘合在一起来实现他们需要的?/p>
业逻辑。很多面向组件的技术——例如:
COM
?/p>
J2EE
?/p>
CORBA
?/p>
.NET
都为二进制组?/p>
提供了的无缝链接的机制。而唯一的不同就是你需要在组件通信上花费的力气?/p>
把一个二进制应用程序分解成不同的二进制组件的动机和把不同的类放到不同的文?/p>
中是类似的?/p>
后者使得不同的类的开发人员可以彼此独立的工作?/p>
尽管即时修改了一个类?/p>
要重新链接整个应用程序,但是你只需要重新编译被修改的部分就可以了?/p>
但是?/p>
面向组件的开发还是和简单软件项目的管理更复杂一些?/p>
因为一个面向组件的?/p>
用程序是一个二进制代码块的集合,你可以把组件当作是
LEGO
的积木块一样,随心所?/p>
的拆装它们?/p>
如果你需要修改一个组件的实现?/p>
只需要修改那个组件就可以了,
而组件的?/p>
户机不需要重新编译也不需要重新开发?/p>
对于那些不常用到的组件,
组件甚至可以在一个程
序运行的时候被更新?/p>
这些改进和增强使得组件可以立即进行更新,
而所有该组件的客户都
将立即受益。无论是在同一台机器上还是通过网络远程访问?/p>
面向组件的应用程序也更易于扩展?/p>
当你需要实现新的需求的时候,
你可以提供一个新的组
件,
而不去影响那些和新需求无关的组件?/p>
这些特点使得面向组件的开发降低了大型软件?/p>
目长期维护的成本?/p>
这是一个最实际的商业问题,
也正是如此,
组件技术才如此迅速的被接
受?/p>
面向组件的应用程序通常可以更快的响应市场,
因为你可以有很大的选择空间?/p>
不仅?/p>
是自己开发的组件,还可以从第三方厂商来购买某些组件,从而避免了重复制造轮子。这
里,
VB
就是一个很好的例子?/p>
丰富?/p>
ActiveX
控件使得很多人在快速开发中得到了享受?/p>