泛型编程和面向对象编程区别

ppk_master 2009-08-29 11:55:41
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
欢迎大家补充。。

...全文
759 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
24K純帥 2009-09-03
  • 打赏
  • 举报
回复
up
BuleRiver 2009-09-02
  • 打赏
  • 举报
回复
STL,GP的典范啊,呵呵
zgqiangha 2009-09-02
  • 打赏
  • 举报
回复
up!!
Victor_Dinho 2009-09-02
  • 打赏
  • 举报
回复
up~~~
crazyxf 2009-09-02
  • 打赏
  • 举报
回复
oop是个设计思想,泛型是个通用处理的实现手段,好像没啥可比性吧
zgjxwl 2009-09-02
  • 打赏
  • 举报
回复
要继续讨论啊。。。
tutu08 2009-09-02
  • 打赏
  • 举报
回复

知识更新速度
总是大于
知识积累速度
郁闷呀
amossavez 2009-09-02
  • 打赏
  • 举报
回复
支持一下!
bfhtian 2009-08-31
  • 打赏
  • 举报
回复
up
y_3llng 2009-08-30
  • 打赏
  • 举报
回复
接分...

写得不错~
mengde007 2009-08-30
  • 打赏
  • 举报
回复
要继续呀;
zhongjiekangping 2009-08-30
  • 打赏
  • 举报
回复
good good study
qqiuzaihui 2009-08-30
  • 打赏
  • 举报
回复
学习
zenny_chen 2009-08-30
  • 打赏
  • 举报
回复
说得很不错。
leizhe 2009-08-29
  • 打赏
  • 举报
回复
泛型和面向对象能结合起来是什么

模版类 派生模版类 。。。。。
fallening 2009-08-29
  • 打赏
  • 举报
回复
写得可真拗口
wanjingwei 2009-08-29
  • 打赏
  • 举报
回复
up
  • 打赏
  • 举报
回复
up
herman~~ 2009-08-29
  • 打赏
  • 举报
回复
呵呵 学习
thy38 2009-08-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 leizhe 的回复:]
泛型和面向对象能结合起来是什么
[/Quote]

看看《C++设计新思维》(《Modern C++ Design》)就知道了,Andrei Alexandrescu把泛型和面向对象(设计模式)完美地结合在了一起,连候捷都说:想不到。
内容简介   许多程序员可能并不知道,C++不仅是一个面向对象程序语言, 它还适用于泛型编程(generic programming)。这项技术可以大大增强你的能力,协助你写出高效率并可重复运用的软件组件(software components)。   本书由知名的C++专家Matthew H.Austern执笔,引导你进入泛型编程思维模型,并将你带往此一模型的最重要成品:C++ Standard Template Library(STL)。本书揭示STL的奥秘,告诉你STL不仅仅是一组方便运用的容器类(container classes)。对于泛型组件和可交互作用的组件而言,STL是一个具备扩充能力的框架(framework)、《泛型编程与STL》阐述了泛型编程的中心思想:concepts、modeling、refinement,并为你展示这些思想如何导出STL的基础概念:iterators、containers、function objects。循此路线,你可以把STL想像为一个由concepts(而非明确之functions或classes)组成的程序库:、你将学习其正式结构并因此获得其潜在威力所带来的完整优势。本书使你能够:   ●以你自己的“可移植组件”及“可交互作用之泛型组件”扩充STL;   ●产生一些算法,让它们和它们所处理之型别(types)及数据结构彻底划清界线;   ●撰写更精致、更高效、更有效力的代码,可跨平台重复使用。 -------------------------------------------------------------------------------- 媒体推荐 书评 《泛型编程与STL》阐述了泛型编程的中心思想:concepts、modeling、refinement,并为你展示这些思想如何导出STL的基础概念:iterators、containers、function objects。循此路线,你可以把STL想像为一个由来的完整优势…… -------------------------------------------------------------------------------- 编辑推荐 《泛型编程与STL》阐述了泛型编程的中心思想:concepts、modeling、refinement,并为你展示这些思想如何导出STL的基础概念:iterators、containers、function objects。循此路线,你可以把STL想像为一个由来的完整优势…… -------------------------------------------------------------------------------- 目录 译序(侯捷) 前言 第一篇 泛型编程导入 第1章 STL巡礼 1.1 一个简单的例子 ……

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧