多少年来软件的开发过程并没有很大的改变,软件开发过程中需要面对的主要问题如:开发周期长,难于确保程序的正确性,难于维护等还没有得到非常好的解决,尽管出现了如面向对象,框架设计等等的概念和工具。组件对象模型是传统面向对象模型的扩充,传统面向对象模型的重点是源程序,以及系统分析和设计过程。组件的概念则强调大的软件系统如何由不同开发商的小型可执行组件构成。
· 面向对象编程
面向对象是一个被广大编程人员和工业界认同已久的概念。面向对象程序设计语言让开发者按照现实世界里人们思考问题的模式来编写程序,它让开发者更好地用代码直接表达现实中存在的对象,这样开发代码简单并且易于维护。面向对象语言有以下三个最重要的概念:
封装(Encapsulation)- 强调隐藏对象的实现细节,对象的使用者仅仅通过定义好的接口使用对象。
继承(Inheritance)- 新的对象可以利用旧的对象的功能。
多态(Polymorphism)- 根据所使用的对象展现多种不同行为的能力。
而从程序的整体来看,面向对象编程提供给用户的最重要的概念则是代码的共享与重用,它对于提高编写程序的效率极为重要。但是代码的共享与重用一旦应用于实践中仍然存在种种问题,如版本的升级、接口的变化、在不同程序设计语言之间共享代码等等。对于这些困难原有的面向对象程序设计方法并没有相应的答案,这就是组件对象模型提出的背景。
· 组件对象模型
将工程分解为逻辑组件是面向组件分析和设计的基础,这也是组件软件的基础。组件软件系统由可重用的二进制形式的软件组件模块组成,只需要相当小的改动就可以将这些来自不同开发商的组件模块组合在一起。特别重要的是这样的组合并不需要源代码,也不需要重新编译,组件之间通过基于二进制的规范进行通讯,这被称为二进制重用。组件模块是独立于编程语言的,使用组件的客户程序和组件之间除了通过标准的方法进行通讯以外,彼此不做任何限定。
组件可以划分为不同的类型,包括可视化组件如按钮或者列表框;功能组件如打印或者拼写检查。例如一个基于组件的架构可以提供将多个开发商的拼写检查组件插入到另一个开发商的字处理应用程序中的机制,这样用户可以根据自己的喜好方便地选择和替换字处理软件。
组件结构中最重要的概念是接口。接口是集合在同一个名称(通常是一个系统唯一的ID值)下的相关方法的的集合。组件之间的通讯是基于接口的,接口是组件和其客户之间严格类型化的契约。实现相同接口的两个对象就被认为是多态的,这里的多态不包含诸如基类指针指向派生类对象的意义,这里是指同一个接口可以由多个对象以不同方法实现。
· 面向对象编程
面向对象是一个被广大编程人员和工业界认同已久的概念。面向对象程序设计语言让开发者按照现实世界里人们思考问题的模式来编写程序,它让开发者更好地用代码直接表达现实中存在的对象,这样开发代码简单并且易于维护。面向对象语言有以下三个最重要的概念:
封装(Encapsulation)- 强调隐藏对象的实现细节,对象的使用者仅仅通过定义好的接口使用对象。
继承(Inheritance)- 新的对象可以利用旧的对象的功能。
多态(Polymorphism)- 根据所使用的对象展现多种不同行为的能力。
而从程序的整体来看,面向对象编程提供给用户的最重要的概念则是代码的共享与重用,它对于提高编写程序的效率极为重要。但是代码的共享与重用一旦应用于实践中仍然存在种种问题,如版本的升级、接口的变化、在不同程序设计语言之间共享代码等等。对于这些困难原有的面向对象程序设计方法并没有相应的答案,这就是组件对象模型提出的背景。
· 组件对象模型
将工程分解为逻辑组件是面向组件分析和设计的基础,这也是组件软件的基础。组件软件系统由可重用的二进制形式的软件组件模块组成,只需要相当小的改动就可以将这些来自不同开发商的组件模块组合在一起。特别重要的是这样的组合并不需要源代码,也不需要重新编译,组件之间通过基于二进制的规范进行通讯,这被称为二进制重用。组件模块是独立于编程语言的,使用组件的客户程序和组件之间除了通过标准的方法进行通讯以外,彼此不做任何限定。
组件可以划分为不同的类型,包括可视化组件如按钮或者列表框;功能组件如打印或者拼写检查。例如一个基于组件的架构可以提供将多个开发商的拼写检查组件插入到另一个开发商的字处理应用程序中的机制,这样用户可以根据自己的喜好方便地选择和替换字处理软件。
组件结构中最重要的概念是接口。接口是集合在同一个名称(通常是一个系统唯一的ID值)下的相关方法的的集合。组件之间的通讯是基于接口的,接口是组件和其客户之间严格类型化的契约。实现相同接口的两个对象就被认为是多态的,这里的多态不包含诸如基类指针指向派生类对象的意义,这里是指同一个接口可以由多个对象以不同方法实现。