面向对象地本质-抽象

原创 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进行交流,共同进步:)

相关文章推荐

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

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

谈谈面向对象 之 抽象

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

面向对象编程之抽象

面向对象编程 公司投资没有了,人们陆续都离职了,正好可以抽出个时间看看书,C++ Primer第四版,以前粗略的读过一遍,但是一直感觉好多地方就那么过去了,读书这个事情就是这样,每读一遍,都能有许多新...

面向对象的本质是什么?

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

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

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

第八节 面向对象——抽象,多态

  • 2016年05月29日 12:29
  • 591KB
  • 下载

面向对象抽象思维与java继承机制

  • 2014年01月26日 17:20
  • 133KB
  • 下载

黑马程序员_iOS开发之OC之面向对象之id语法、构造方法、@category分类、类本质、description方法和SEL数据类型

1、id语法
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象地本质-抽象
举报原因:
原因补充:

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