构件是面向软件体系架构的可复用软件模块。构件(component)是可复用的软件组成成份,可被用来构造其他软件。它可以是被封装的对象类、类树、一些功能
模块、软件框架(framework)、
软件构架(或
体系结构Architectural)、文档、分析件、设计模式(Pattern)等。开发者可以通过组装已有的构件来开发新的应用系统,从而达到
软件复用的目的。软件
构件技术是软件复用的关键因素,也是软件复用技术研究的重点。
软件构件应具备以下属性
(1)有用性(Usefulness):构件必须提供有用的功能;
(2)可用性(Usability):构件必须易于理解和使用;
(3)质量(Quality):构件及其变形必须能正确工作;
(4)适应性(Adaptability):构件应该易于通过参数化等方式在不同语境中进行配置;
(5)可移植性(Portability):构件应能在不同的硬件运行平台和
软件环境中工作。
日历、
工作流构件、订单构件、用户界面控制等等都可以是构件。
构件具有以下几个特点:
(2)可定制:允许提供一个典型的图形方式环境,软件构件的属性只能通过控制面板来设置;
(3)可集成:构件必须可以被编程语言直接控制。构件也可以和
脚本语言或者与从代码级访问构件的环境连接,这个特点使得软件构件可以在非可视化开发项目中使用;
(4)连接机制:构件必须能产生事件或者具有让程序员从语义上实现相互连接的其他机制。
采用构件软件不需要重新编译,也不需要
源代码并且不局限于某一种编程语言。该过程叫做二进制复用(Binary Reuse),因为它是建立在接口而不是源代码级别的复用之上的。虽然软件构件必须遵守一致的接口,但是它们的内部实现是完全自动的。因此,可以用过程语言和
面向对象语言创建构件。
差别
(1)在纯
面向对象的设计中,对象(类)、封装和继承三者缺一不可,但对构件可以没有继承性,只要实现封装即可;
(2)从构件和对象的生成方式上,对象生成属于实例化的过程,比较单一,而生成构件的方式较多;
(3)构件是设计的概念,与具体编程语言无关,不像对象属于编程中的概念,要依赖于具体的编程语言;
(4)在对构件操作时不允许直接操作构件中的数据,数据真正被封装了。而对象的操作通过公共接口部分,这样数据是可能被访问操作的;
(5)对象对
软件复用是通过继承实现的,构件对软件复用不仅可以通过继承还可以通过组装时的引用来实现。
因此,构件不是对象,只是与对象类似。