`
xpp02
  • 浏览: 1016027 次
社区版块
存档分类
最新评论

面向对象和基于对象

 
阅读更多

面向对象大家都很熟悉,可是基于对象就不一定了。两个听起来好象是同一回事,而事实上它们却千差万别。基于对象是指:我们采用对象封装技术,将数据和操作捆绑在一起,但是并没有合理地使用多态、继承等面向对象技术进行软件设计。其中的“没有合理使用”这一修饰非常重要,它道出了面向对象和基于对象的本质区别。


虽然,听起来面向对象我们很是熟悉,但就我的观察,很多以前从事C程序开发的人,当他采用面向对象的编程语言(如C++)进行开发时,写出来的程序却是基于对象的。或者说他们是采用面向对象的语言编写面向过程的程序!

要掌握面向对象技术不是一件容易的事,这要求我们对于所有的编程事务从“对象”的角度来考虑,是一种全新的思考问题的方法。我想错用最近面试过的一位工程师的话来说明什么是面向对象开发,他说“现实世界是什么,那么程序当中就应当是什么”。

从我的学习经验来看,一开始其实并不明白为什么要用对象来封装。记得1999年刚从C转向C++时,只觉得C++是另一种形式的“C”,那时并没有深刻地领悟到C++语言中所蕴涵的面向对象的强大表达能力。后来,因为工作的需要,需对来自Microsoft MSDN中的Drawcli例程进行扩展,这一工作使得自己对面向对象编程这一技术的知识有了很好的掌握,但仍没有达到随心所欲地运用的境界。这好比我们学会了一套军体拳,但却不用会用其中的各个招式去格斗。

学习面向对象编程需要一段时间通过模仿好的设计(比如前面提到的Drawcli例程),并随着模仿的深入而逐渐掌握。对面向对象编程的真正掌握,是从我们体会到其好处开始的。在我的成长经历中,曾在某一项目上对一个复杂管理问题编程很是苦恼,当时突然想到了从其中抽象出一个类来做管理,那一刻所有的复杂度似乎都消失了。之前之所以复杂是因为采用面向过程的思考方式去解决问题,而当换成面向对象的方式时无形中简化了问题。从这一经历开始,我真正领悟到了面向对象设计的好处,这也是我从模糊的理解到真正掌握的一个根本转折点。
分享到:
评论

相关推荐

    面向对象课程设计基于avaFX的媒体播放器.zip

    面向对象课程设计基于avaFX的媒体播放器.zip面向对象课程设计基于avaFX的媒体播放器.zip面向对象课程设计基于avaFX的媒体播放器.zip面向对象课程设计基于avaFX的媒体播放器.zip面向对象课程设计基于avaFX的媒体...

    面向对象编程基于c++实现简易的电子相册源码.zip

    面向对象编程基于c++实现简易的电子相册源码.zip面向对象编程基于c++实现简易的电子相册源码.zip面向对象编程基于c++实现简易的电子相册源码.zip面向对象编程基于c++实现简易的电子相册源码.zip面向对象编程基于c++...

    基于java面向对象实现扫雷程序源码

    基于java面向对象实现扫雷程序源码 基于java面向对象实现扫雷程序源码 基于java面向对象实现扫雷程序源码 基于java面向对象实现扫雷程序源码 基于java面向对象实现扫雷程序源码 基于java面向对象实现扫雷程序源码 ...

    基于面向对象winfrom开发

    以面向对象开发的一个选题小程序,可以看看究竟什么是面向对象开发

    面向对象分析与设计

    《面向对象分析与设计(第3版)》作者基于长期丰富的经验,提出了改进的对象开发方法,用于解决系统和软件开发者面临的复杂问题,非常适合实际系统和软件的开发者、系统分析师或构架师、项目经理阅读。《面向对象分析...

    基于决策树算法的遥感影像面向对象分类软件

    该软件以GLC分类器为核心,不仅提供了基于像元的遥感影像分类功能,而且可以在ENVI或者eCognition分割结果的基础上实现遥感影像面向对象自动分类。和以往分类中手动建立规则集相比,该软件通过决策树学习的方式建立...

    软工大作业面向对象分析与设计.doc

    利用UML和有关的工具软件,进行面向对象的系统建模,包括:类图、用例图、顺序图、状态图等,以及基于面向对象描述方法的有关文档的编写。 3.实验要求 在文档上体现用例图,类图,顺序图,状态图。

    面向对象分析与设计UML2.0(PDF)

    详细介绍了面向对象的分析与设计,全面探讨了面向对象概念、软件开发过程...首先阐述了面向对象软件项目的基本概念,然后基于广泛使用的方法,介绍了使用进行以测试为驱动的开发过程,最后研究了现实世界中的开发问题。

    Arcgis Engine调用多分类器进行面向对象分类和基于像素的分类

    Arcgis Engine调用多分类器进行面向对象分类和基于像素的分类

    基于面向对象和规则的遥感影像分类研究

    讨论面向对象和规则的光学遥感影像分类方法

    面向对象分析与设计1

    国外计算机科学经典教材-面向对象分析与设计(UML 2.0版) 简介:本书详细介绍了面向对象的分析与设计,全面探讨了面向对象概念、软件开发过程、UML和多层技术。 本书使用最常见的技术和方法,通过一个贯穿全书的...

    java面向对象编程源码

    本书内容由浅入深,紧密结合实际,利用大量典型实例,详细讲解Java面向对象的编程思想、编程语法和设计模式,介绍常见Java类库的用法,总结优化 Java编程的各种宝贵经验,深入阐述Java虚拟机执行Java程序的原理。...

    C#基于面向对象的计算器源代码,学习面向对象的好资料

    本人用C#制作的基于面向对象的计算器源代码,虽然这个程序很简单,但对于初学者来说应该是很不错的资料。希望能与给位初学者共同成长。

    面向对象程序设计课程设计——学生成绩管理系统

    全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法。正确理解掌握C++面向对象程序设计的基本特性:类、对象、继承与派生、多态、虚函数、模板、流类库等。遵循软件过程的各个环节进行系统分析、设计、...

    面向对象的需求分析方法

    面向对象的需求分析方法的核心是利用面向对象的概念和方法为软件需求建造模型...在概述了UML的全貌之后,以“家庭保安系统”为实例,介绍与需求分析相关的部分 UML语言机制以及基于UML的面向对象的需求分析方法和过程。

    《C#面向对象程序设计》源代码(CS)

    本书以面向对象的软件工程思想为主线,细致深入地讲解了C#语言面向对象程序设计的方法和技巧,内容涵盖面向对象的基本概念、基于接口的设计、泛型程序设计方法、Windows和Web应用开发,以及数据库访问技术。...

    java 门禁系统的面向对象设计

    java 门禁系统的面向对象设计. java 门禁系统的面向对象设计. 门禁系统的面向对象设计. 门禁系统的面向对象设计.

    基于UML的面向对象软件开发过程

    基于UML的面向对象软件开发过程 是软件工程里很重要的内容

    c#基于面向对象的程序设计

    一个c#基于面向对象的程序设计,已在实践中应用。

    面向对象设计之3_基于UML的图书管理系统的分析与设计说明.pdf

    面向对象设计之3_基于UML的图书管理系统的分析与设计说明.pdf

Global site tag (gtag.js) - Google Analytics