面向对象地本质-抽象

原创 2006年06月07日 20:28:00

 

  什么是面向对象的本质?近日在阅读一位网友在CSDN博客上发表的文章,作者认为对象,对象的职责,以及对象之间的交互构成了OO思想的本质。在我看来,抽象更接近OO思想的本质。我是从以下几点考虑的:
1.抽象使我们更接近于事物的本质。抽象的过程就是一个提炼存在于事物之间共同拥有的元素,而这些事务之间共同拥有的元素往往是这一事物区别于其他事物关键的东西,这些元素就构成了事物的本质。


2.抽象的思维方式使我们能够控制问题域或者系统的复杂度,从而使我们能够找到解决问题的方式。一个问题域或者系统有很多具体的,细节的东西,这些具体的,细节的东西相互交织,使我们很难对问题域(或者系统)进行正确的分析,也就是我们平常所说的无从下手。而抽象的强大优势就在于它可以使我们暂时忽略这些具体的,细节的东西,这样呈现在我们面前的就是一个相对简单的问题域(或者系统)。通常的情况下,我们会根据抽象度的不同,将问题域(或者系统)划分成不同的层次,越往上,抽象度越高,涉及到细节的东西就越少。通过这样的分析,我们就更能把握问题域(或者系统)。


3.抽象是继承和多态的基础。在抽象的过程中,我们获得是事物本质的东西和事物独特的东西,这样我们很自然的认识到抽象的事物和具体的事物之间是一种继承的关系,而他们之间的不同性可以通过多态来表现出来。

在分析什么是OO思想本质的时候,我们不得不提及一本OO领域相当经典的一本书:GoF的<设计模式>。这本书向我们传达OO思想中最为重要的一个思想:任何可能变化的地方都可以抽象出一个抽象基类,当我们利用抽象基类进行操作,进行交互的时候,我们已经为随后的扩展敞开了一扇大门。在这里核心的思想就是抽象,由于抽象的过程很难把握,所有抽象就成了OO设计的难点。

在另一本经典巨著<Code Complete>中,作者强调了控制系统复杂度的在计算机软件系统中的重要性,我们可以通过在设计阶段使用抽象的方法进行系统分析;在系统的实现阶段,通过封装和信息隐藏来控制系统的复杂度。这本书也强调了抽象在计算机软件系统的重要性。

对抽象的分析和理解,使我们越来越不关系对象的内部细节(至少在开始编码之前),而是关心这些对象能提供那些功能。抽象的结果表现为一组(或者多组)具有内部联系的接口的组合。这时候虽然我们的设计思想还处在OO思想的范畴内,但是更确切的说,我们已经转化到"面向接口"的设计思想上了。面向接口思想已经得到了广泛的应用,无论从Java语言规范,到COM标准规范,无不体现了"面向接口"的思想。

以上就是我对抽象在OO思想中的一点点理解,由于本人还处于刚参加工作不久,工作经验有限,在认识上难免存在不足和错误之处,我很乐意能够和大家通过shichongdong80@gmail.com进行交流,共同进步:)

谈谈面向对象 之 抽象

一、引言 在上一篇博客中,我们谈了面向对象的基本概念,从这篇开始,我们谈谈面向对象的几个特征:抽象、封装、继承、多态。我们首先要谈的特征是抽象。 不止一位同事将抽象这一特征排除在外,认为面向对象有三个...
  • hxtan
  • hxtan
  • 2013年12月09日 08:45
  • 3561

面向对象—抽象

面向对象分析与设计的主要任务是,找出类和对象,构建对象模型。 对象模型的主要要素:抽象、封装、模块化与层次结构。 对象模型的次要要素:类型、并发、持久。 抽象描述了一个对象的基本特征...
  • luoxinwu123
  • luoxinwu123
  • 2012年12月28日 09:42
  • 5826

抽象的概念,对象的概念,面向对象和面向过程的区别

1.什么是抽象 抽象就是把一个对象的分析出各个属性,来代替表达的手法 抽就是分离,象就是表示出来的部分 比如说把一个学生对象抽象一下,就剩下他的一些属性和行为,例如姓名,性别,年龄,身高,学习的...
  • maixinyue
  • maixinyue
  • 2016年10月20日 23:03
  • 1180

深入Java系列——面向对象之(一)——抽象

此次对于java的学习,可谓是很轻松的一个过渡。在软考过程中不知不觉就和她成为好盆友了。从之前的VB、C#、 C++基础学习,到现在的java,一个感受就是编程语言大概都是一样的,无非都是指挥机器按照...
  • u011500356
  • u011500356
  • 2015年11月18日 16:30
  • 1396

面向对象概念及对象、抽象、类的解释

具有相同或相似性质的一组对象的抽象就是类,类是对一类事物的描述,是抽象的、概念上的意义; 对象是实际存在的该类事物的每个个体,因此也称为实例; 对象的抽象是类,类的具体化就是对象,...
  • zjkyx888
  • zjkyx888
  • 2017年05月11日 09:20
  • 334

面向对象的本质是什么?

  什么是面向对象的本质呢?   万物皆对象?No  抽象?No  复用?No   那到底是什么呢?   万物皆对象。问了几位网友,这是答复之一。看到了某个事物就来一个class?显然没有那么简...
  • jyk
  • jyk
  • 2010年02月08日 22:06
  • 12925

怎么理解面向对象和面向过程到底的本质区别?

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为...
  • kp_liu
  • kp_liu
  • 2014年07月22日 15:31
  • 3210

面向对象的本质是什么?

1 对象的本质对象的本质是我执,是自我的孤立,边界的区分 2 面向对象的本质面向对象的本质 是 归类与抽象从纷繁复杂的事务中 找出你需要的 相对独立的个体们 并进行归类,进而抽象之 3 世界的组成方式...
  • withtao
  • withtao
  • 2010年02月22日 11:39
  • 936

面向对象与Java实现(抽象类、接口

  • 2012年05月14日 13:12
  • 177KB
  • 下载

面向对象地本质-抽象

   什么是面向对象的本质?近日在阅读一位网友在CSDN博客上发表的文章,作者认为对象,对象的职责,以及对象之间的交互构成了OO思想的本质。在我看来,抽象更接近OO思想的本质。我是从以下几点考虑的:1...
  • houdy
  • houdy
  • 2006年06月07日 20:28
  • 3934
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象地本质-抽象
举报原因:
原因补充:

(最多只允许输入30个字)