泛型编程 vs. 面向对象

来源:互联网 发布:linux tcpip协议栈 编辑:程序博客网 时间:2024/06/04 19:31

  泛型编程 vs. 面向对象
1、面向对象:封装(数据抽象)是基础,继承是手段,多态是目的;泛型编程:参数化类型(概念抽象)是基础,模板是手段,通用是目的

2、面向对象是运行时问题空间的多态,泛型编程是编译时算法空间的多态

3、OO以Type为中心,GP以Concept为中心,而Concept完全独立于Type;OO的type是显式定义的,type之间的关系也是显式定义的,是语言支持的 ;GP的Concept是由算法隐式定义的,Concept之间的关系,是无法用目前的C++语法直接表达的;Concept的Model完全可以是毫无关系的Type,refinement独立于inheritence,original concept与其refinement concept的model之间可以毫无关系

4、以GP写就的算法,自动满足最小接口原则,无需为其参数定义形式化的类型;在OO中,这种形式化的Type具有的操作往往不是所有用到该Type的算法都会用到的

5、OOP支持二进制组件形式的复用,GP支持源码层级的复用;与二进制码相比较,源码天生具有更多信息和更高级别,所以泛型编程支持更丰富的构件,但其代价是较弱的执行期动态性;你无法通过STL完成CORBA所能完成的功能,反之亦然,两种技术相互补充


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wuliaoshengji/archive/2005/08/10/449870.aspx

原创粉丝点击