首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于对象和面向对象的区别

基于对象和面向对象的区别

作者头像
用户1221057
发布2018-01-31 16:25:02
8710
发布2018-01-31 16:25:02
举报
文章被收录于专栏:Aloys的开发之路Aloys的开发之路

基本上每个程序员都听过面向对象(Object-oriented)和基于对象(Object-based)这两个概念。其实这两个概念并没有很明显的界线,不过现在业界比较统一的认为只有完全具有封装、继承、多态三大特点的才能够叫做面向对象,否则即使设计中蕴含了一些对象的概念,也顶多称为基于对象。

基于对象是过程化语言自然演进而来,随着ADT思想的成熟而成熟,七十年代到八十年代初曾经非常流行,但是很快被风头更盛的面向对象给遮盖了,最典型的代表是Ada83。一贯被人认为是过程化语言代表的C语言,在实际应用中基本上使用的是基于对象的思想。虽然默默无闻,但是基于对象思想下开发的软件,实际上构成了我们现在的软件工业基础。

面向对象发源于60年代的挪威,第一个面向对象语言是Simula,思想成熟于80-90年代。其标志就是继承和多态。面向对象思想的主要历史贡献是催生了面向组件思想,简化了日常编程。从严肃的软件工程意义上来讲,面向对象究竟是不是“一个历史性的进步”,还有待历史检验,但是这种思想方法现在已经成为主流,所以无论是不是进步,已经成为现实。

通常基于对象是使用对象,意味着它们有像C++的结构加函数这样的对象,然而这只是到达面向对象语言的一部分,停留在把函数捆绑在结构内部的语言是基于对象的。但是无法利用现有的对象模板产生新的对象类型,继而产生新的对象,也就是说基于对象一般没有继承的特点。没有了继承的概念也就无从谈论多态。现在的很多流行技术都是基于对象的,它们使用一些封装好的对象,调用对象的方法,设置对象的属性。但是它们无法让程序员派生新对象类型。他们只能使用现有对象的方法和属性。所以当你判断一个新的技术是否是面向对象的时候,通常可以使用后两个特性来加以判断。例如:C++是面向对象的,而VB只是基于对象的。当然,搜索现在国内大量的书籍与资料(包括大量教材)的作者都无法分清两者之间的区别,把VB称为面向对象,误人子弟。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-10-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档