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

面向对象和基于对象

 
阅读更多

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


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

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

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

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

相关推荐

    PLC的面向对象编程

    面向对象编程在PLC程序中的应用,虽然与计算机编程中的面向对象语言有所不同,但在本质上仍然是对控制对象的抽象归纳,通过类和对象的设计模式来实现程序的模块化和结构化,从而提升整个控制系统的质量和效率。

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

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

    面向对象语言的基本特点

    九、面向对象和基于对象的区别 面向对象强调类和对象的概念,而基于对象则更多地关注对象本身,可能不包含完整的面向对象特性如继承和多态。 十、面向对象的例子 例如,我们可以创建一个名为“车辆”的类,它有属性...

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

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

    基于面向对象winfrom开发

    在“基于面向对象winfrom开发”的项目中,我们可以学习到以下关键知识点: 1. **类与对象**:类是创建对象的蓝图,它定义了对象的数据类型和行为。在WinForms应用中,我们可能定义窗体类(Form),按钮类(Button)...

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

    面向对象设计之3_基于UML的图书管理系统的分析...本资源摘要信息主要介绍了面向对象设计和UML在图书管理系统中的应用,强调了面向对象设计的基本思想和UML的主要容,描述了基于UML的图书管理系统模型的设计和分析过程。

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

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

    面向对象 面向对象 面向对象

    面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,它基于“对象”的概念,通过封装、继承和多态等核心特性,实现了代码的复用和模块化,极大地提高了软件开发的效率和可维护性。...

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

    在这个“C#基于面向对象的计算器”项目中,我们可以探索以下面向对象的关键知识点: 1. 类与对象:类是创建对象的蓝图,定义了对象的数据属性和行为方法。在这个计算器项目中,可能会有一个名为`Calculator`的类,...

    plc面向对象编程架构与实现

    在工业控制系统的PLC程序中也可以采用这种设计思想,虽然我们无法实现面向对象的很多特点如“继承”,甚至于它根本就不具备面向对象编程语言的特点,但面向对象编程的基本概念就是类和类的实例(即对象),我们只...

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

    在给定的标题和描述中,我们聚焦于利用ArcGIS Engine进行遥感图像分类,主要涉及两种方法:面向对象分类和基于像素的分类。 **面向对象分类**是遥感图像处理中的一个重要概念,它不再局限于单个像素的属性,而是...

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

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

    面向过程、面向对象、面向组件、面向服务软件架构的分析与比较

    面向对象强调的是数据的封装、继承和多态,通过类和对象的概念,提供了更好的代码组织方式和重用机制。面向对象编程使得软件模块化程度更高,可维护性更好,尤其在处理复杂问题和大型项目时,其优势更为明显。 面向...

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

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

    实用面向对象软件工程教程

    面向对象软件工程是一种现代的软件开发方法,它基于对象的概念,强调模块化、可重用性和灵活性。本教程“实用面向对象软件工程教程”旨在深入探讨面向对象分析(OOA)和面向对象设计(OOD)的关键原则,帮助开发者...

    面向对象分析与设计.pdf

    面向对象方法基于现实世界中对象的概念。这些对象具有属性(或状态),并且可以执行动作(或行为)。面向对象的三个核心概念是封装、继承和多态。封装是将数据和操作数据的代码捆绑在一起形成一个单元的过程;继承...

Global site tag (gtag.js) - Google Analytics