构件与对象

原创 2002年10月23日 09:33:00
 

构件与对象

作者: 贾育

email: jia_yu@263.net

 

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

 

关于构件与对象之间,或基于构件的软件工程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.       ……

 

 

“构件”和“对象”

下面陈述若干我对“构件”和“对象”的认识,有些可能是片面的、不正确的,请各位读者指正:1.       构件和对象都是对客观世界实体的一种抽象描述,他们的共同特点是信息隐藏和一定的独立性。但是构件要求...
  • wishfly
  • wishfly
  • 2008年01月05日 08:55
  • 622

构件和组件区别

一.构件             构件是系统中实际存在的可更换部分,它实现特定的功能,符合一套接口标准并实现一组接口。构件代表系统中的一部分物理实施,包括软件代码或其等价物。 二.组件        ...
  • slqSLQSHILIQIANG
  • slqSLQSHILIQIANG
  • 2017年05月08日 16:33
  • 595

Maven学习笔记九:Maven坐标和依赖(坐标详解)

 Maven坐标和依赖(坐标详解) ---------- maven坐标为各种构件引入了秩序,任何一个构件都必须明确定义自己的坐标,而一组maven坐标是通过一些元素定义的,它们是gro...
  • zhouzhiwengang
  • zhouzhiwengang
  • 2014年05月27日 00:24
  • 428

Effective Java - 类和接口 - 使可变性最小化

读书笔记 仅供参考不可变类不可变类就是实例不能被修改的类,每个实例中包含的所有信息都必须在创建该实例的适合提供,并一直固定不变 不可变类比可变类更加易于设计、实现和使用,不容易出错,且更加安全五条规...
  • wujunyucg
  • wujunyucg
  • 2017年11月14日 13:45
  • 44

基于构件复用的软件方法与COM支持

摘要 作为研究的热点,近年来提出构件模型层出不穷.出于相互之间互操作性的考虑,必须具备一个公共的构件底层框架.分析各种实际的因素,COM是一个可行的选择.本文讨论了COM规范对组件复用的支持及其发展前...
  • xxcc
  • xxcc
  • 2001年10月18日 10:55
  • 814

软件体系结构与设计模式笔记

软件体系结构与设计模式笔记 第1章软件体系结构概述 ü  SEI软件体系结构讨论群定义如下:一个程序/系统构件的结构,它们之间的相互关系,以及在设计和交付的整个过程中的原则和指导方针。 ü  Mar...
  • aoxiangzhiguanjun
  • aoxiangzhiguanjun
  • 2012年12月26日 22:35
  • 2072

结构化设计和面向对象设计

再探结构化设计和面向对象设计方法http://www.csai.cn 作者:fasiondog 来源:CSDN 2006年9月8日  进入社区   结构化设计历来备受责备的就是需求和设计之间的鸿沟,以...
  • thunder09
  • thunder09
  • 2010年01月31日 14:34
  • 2814

构件化与SOA,推进软件生产力

引子:  伴随福特流水线模式的百周年,回顾软件业也已经走了近四十年的光景。而全球软件行业似乎已进入到了中年期,成熟的商业模式,缺乏雨后春笋般的创新型小公司,大公司增长乏力进而带来诸多的并购等。这些都让...
  • wishfly
  • wishfly
  • 2008年01月05日 08:22
  • 1640

JMS的基本构件

连接工厂: 连接工厂是客户用来创建连接的对象,例如ActiveMQ提供的ActiveMQConnectionFactory。 连接: JMS Connection 封装了客户与 JM...
  • qq_21336789
  • qq_21336789
  • 2016年10月19日 13:30
  • 147

架构,构件,组件,框架,中间件之…

中间件作为一大
  • danssion
  • danssion
  • 2014年06月25日 12:01
  • 669
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:构件与对象
举报原因:
原因补充:

(最多只允许输入30个字)