当前位置:C++技术网 > 资讯 > 面向对象,你真理解了吗:3 面向对象思想的理解

面向对象,你真理解了吗:3 面向对象思想的理解

更新时间:2015-06-23 17:29:27浏览次数:1+次

    前面已经讲述了认识阶段和面向对象出现的前一个阶段即面向过程的发展。事物的发展都是遵循客观需要的,否则不会流行起来。而面向对象的出现,也正是因为面向过程已经不能满足社会的快速开发需求了,从而诞生。并不是说面向过程没用了,过时了,只是说在快速开发中,纯粹的面向过程的开发时间太长了。当然,有些领域还是应用非常大的,只是普通的开发就比较不方便而已。操作系统的开发语言,目前而言,基本也是采用C语言加汇编语言开发的,而面向对象的C++的开发,则因为太多的面相对象的实现特性,导致一直以来以面向过程的思维开发操作系统的实现变的很难。或者说,在最原始最顶层的操作系统开发中,如果采用面向对象的语言开发,那就要先让语言在无系统的条件下实现面向对象的能力,而这种方式也是非常难的。如果哪种语言可以完全脱离操作系统实现面向对象,那就可以用它开发面向对象的操作系统,而不是现在的面向过程的操作系统。从API可以看出,这些函数都是面向过程思想的结果。如果哪天操作系统都是一个对象的形式出现,而使用API只是像调用系统的一个成员函数一样,这样就是原生态的支持面向对象的系统了。不过目前,这种系统还不存在,有待你去研究哦。
    下面讨论一下面向对象思想本身。面向对象的本意就是,将考虑问题的核心放在对象上,对象是中心,而其他的操作都是围绕对象服务的。对象是一个个体,在抽象概念中,任何东西都可以称为一个对象。不用纠结“什么也没有也是一个对象”,即使是什么也没有,也是一个空对象。原因就是,面向对象是一种思想,是将宇宙中的万物以对象的模型来对待。所以,即使什么也没有,也是一个对象。所以,你可以把整个宇宙作为一个对象,我们只是宇宙对象的组成元素而已。在强调一次,对象是面向对象思想的一个概念,属于抽象的模型。没有说明确切的定义,反正你能想的能看的都是对象,因为你是用面向对象的思想去观察世界的。
    上面的讨论是基于抽象的思想。而要深入理解,灵活运用到编程中,我们需要结合编程来将面向对象思想具体化。
    反映在程序里,对象的模型就是类的实例化。那面向对象如何体现。这个需要与面向过程比较来看。在面向过程中,以函数为中心,函数作为数据的加工场所,是一个公用的处理函数,传入参数就可以得到输出结果。而面向对象,则是以对象作为中心,对象则是由数据和方法构成。对象的核心就是数据。将数据和处理数据的方法整合在一起形成对象,要操作自己的数据,只有通过自己的方法才行,将数据隐藏。如果其他对象要操作自己的数据,也只能通过提供的方法来操作,这样可以保护数据,提高安全性。这是通常的理解。此时的对象的函数,就不再是数据加工厂了。函数方法只操作自己的数据,相当于自给自足。加工的数据只是自己的数据,不用借助其他函数。而数据则可以形成各种状态,可以表示各种情况,因此可以记录,有记忆效应。不管从规模上还是从性质上,不可能与面向过程的函数一样看出是数据加工厂。面向对象的核心思想就是自己对自己操作,用自己的数据显示状态,整个对象作为记录状态的单元,而不是面向过程的一些变量的零散组合,这样很符合现实状态的模型。比如对于很多情况,往往是很多因素的组合,比如有气压,温度,湿度等等组成一个综合状态,用一个状态对象记录可以简化模型,更易于操作。这是面向对象的一个好处。
    至于继承多态等,就不在此处讨论。先要掌握面向对象的核心是什么,然后可以很好的理解其他的更为复杂的内部模型。虽然这些很简单,但是真要说,还是感觉水平不够,仅作为一个启蒙。