软件工程

本类阅读TOP10

·PHP4 + MYSQL + APACHE 在 WIN 系统下的安装、配置
·Linux 入门常用命令(1)
·Linux 入门常用命令(2)
·使用 DCPROMO/FORCEREMOVAL 命令强制将 Active Directory 域控制器降级
·DirectShow学习(八): CBaseRender类及相应Pin类的源代码分析
·基于ICE方式SIP信令穿透Symmetric NAT技术研究
·Windows 2003网络负载均衡的实现
·一网打尽Win十四种系统故障解决方法
·数百种 Windows 软件的免费替代品列表
·收藏---行百里半九十

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
构件与对象

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

 

构件与对象

作者: 贾育

email: [email protected]

 

[版权所有 任何形式的拷贝和引用必须得到作者的许可]

 

关于构件与对象之间,或基于构件的软件工程CBSE与面向对象技术OT之间的区别讨论存在已久,1998年著名构件专家Brown在《The Current State of CBSE》一文中总结道:“OT is neither necessary nor sufficient ( to CBSE)”。CBSE(即CBD)将革新系统设计、项目管理和组织机构形态,改善和超越产业界所积累的OT经验的基础。关于OT的不足,Brown指出构件的一个主要特征是它的替代性,这一特征必须在语境中明确指出,具体地说,就是在规约中必须存在描述“使用(use)”子句的能力,OT在这个方面存在缺陷。关于OTCBSE的必要性,Brown指出实践中非OT完全可以创建构件,有些人特意追求不用OT来实现构件。

由此可见internal DX认为构件是面向对象的一种应用是不正确的,应该构件技术是对象技术的发展,构件具有更强的独立性、封闭性和可复用性。注意,VCLMFC中的component一词并非专有名词,而是指“部件”、“组成部分”的普通词汇。

 

下面陈述若干我对“构件和“对象”的认识,有些可能是片面的、不正确的,请各位读者指正:

1.       构件和对象都是对客观世界实体的一种抽象描述,他们的共同特点是信息隐藏和一定的独立性。但是构件要求是自描述,独立性更强,而对象达不到这一要求,也较为“白盒”了一些。

2.       构件和对象的本质区别:构件提供的是服务,对象提供的是功能;构件接口描述了问题域(problem domain),而对象接口描述了方案域(solution domain)。

3.       对象是类的实例,对象是动态的;有人说构件是静态的,应该和类相对应;事实上并不尽然,可以这样看,在特定领域体系结构(DSSA)中定义的构件是静态的,而集成到应用系统中的构件是动态的,目前尚未见到有人对它们的区别。

4.       存取构件和对象中的信息都必须通过它们的接口,构件的结构有必要充分描述它的语义,对象做不到这一点,所以对象需要另加接口才可以成为构件,所以有人认为构件=对象+接口,我认为这只是构件的充分条件。

5.       分布式对象CORBA/DCOM/EJB的实现体是不是构件,或者是不是只有它们才是构件,我这样认为,构件的独立性、封闭性和异构性要求构件之间存在很强的通信能力,所以第三方协调是必要的,恰好这些基础设施(infrastructure)起了这样的作用,其实他们并非专门为构件而设计,它们的出发点是以“分布”为目的。人们在研究CBD集成/组装时由于没有其它的通信技术,所以它们自然地成为构件工业标准,我想强调构件复用可从来没用指明一定要分布式(放在服务器上),它看重的还是集成/组装的技术。不过这些标准很识时务,都在向构件方向发展,比如CORBA CCM标准。这里我想说一句题外话,就是这几个标准为什么有人说是中间件的标准,我想还是因为他们的异构能力和通信能力使他们成为开发以(消息)转换、交互为目的的一类软件的有力武器,你可千万别把中间件当成了构件(现在国内很多公司都在这么说),或者把中间件拓宽其范围成为构架,这也是不妥的。

6.       构件的接口是一种服务提供者对消费者的承诺:即契约(contract);用契约确保一组构件之间的行为组合。对象就没有这个说法。由于服务存在的持久性,所以服务都是永久性存储对象。

7.       构件的粒度一般较粗,它可能包括一个或多个对象(或类),它的接口一般也比对象复杂。

8.       ……

 

 




相关文章

相关软件