浅谈面向过程和面向对象

 面向过程和面向对象       

        本人之前学习了面向过程语言,如今接触面向对象语言,在学习了一段时间后产生了诸多疑问,故查阅很多资料并结合自己的想法解决了一些问题,在此与各位共享的同时希望能梳理一下所学。如有错误,希望大家不吝赐教,与君共勉。   

        要说面向对象,不得不先说一下面向过程。

        大多数人接触编程首先都是从面向对象语言开始,比如说C语言,VB语言甚至濒临淘汰的Pascal语言,我也不例外。我首先接触的便是Pascal语言,那时对编程完全处于朦胧状态,只知道要记一些赋值语句、判断语句、循环语句,用的时候只需要简单罗列上去。那时对于编程的看法完全是浮于表面。

        上了大学,周围的同学都说C语言很重要。我便凭满腔热血开始学习C语言。学习了很长时间之后,这时我才开始知道原来每一条语句都是在玩内存,在玩CPU。我知道了原来编程要注重模块化,我知道了现在学习的是面向过程语言,更高级的还有面向对象语言。现在终于进入了重点:什么是面向过程和面向对象呢?

面向过程:

        它是一种以过程为中心的编程思想,是以正在发生什么为主要目标进行编程。一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。简单来说就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向过程主要针对于小型程序开发,清晰明了,运行速度较快,并且要求自行实现提高运行效率的算法。

面向对象:   

        它和面向过程本质的不同在于是谁在受影响。面向过程是以过程为中心,面向对象以对象为中心。面向对象思想主张世间万物皆是对象,事物之间存在的联系抽象为类、继承。面向对象主要针对于大型项目的开发,要求掌握不同类具有的属性和方法,要求理清类与类之间的建构,不要求算法。简单来说:面向过程编程中要求需要自己写各种函数,面向对象编程中要求自己会调用各种函数。

        面向对象三大基本特征:封装,继承,多态

      对象和类:      

        每一个事物(对象)存在一些它固有的属性和能够进行的动作,两者被称为属性和方法。很多个对象之间存在一些相同的属性和方法,于是这些对象被更高层次的抽象为类。举个例子:每个人都是一个对象,世界有几亿个人,每个人都有姓名、性别、年龄、肤色等属性,每个人都可以吃饭、走路、跑步,于是这些人被抽象为一个类:人类。人类不是一个人,而是一种模板,按照模板制造出一个人被叫做实例化了一个对象。

封装: 

        类中有属性和方法,实例化成一个对象时,对象需要有类中的所有属性和方法,也就是属性和方法被绑定在一起,这是面向过程做不到的。面向过程编程时需要什么数据自己定义,要什么方法自己定义。而面向对象时,只要实例化成对象,相应的数据和方法就已经具有。这就是封装。

继承:

        一个类有很多属性和方法,另一个类有它的所有内容并且还有其他属性和方法,于是他们存在继承关系。子类拥有父类的所有属性和方法。比如车类,卡车类,卡车类继承于车类。卡车类就是子类(派生类),车类就是父类(基类)。

      多态:

        一个人(对象)在夏天吃雪糕感到很舒服,在冬天吃雪糕感到很冷,同样是吃雪糕这个动作,在不同的情境下就会产生不同的效果,这就是多态。专业一点:多态就是同一个调用,不同的实现。

①同名同参数:基类指针指向派生类对象,指向不同,调用相同,实现不同

②同名不同参数:函数的重载

设计模式中:多态的意义在于便于扩展

总结:

也许读者对面向过程和面向对象还是不太清晰,接下来举个简单的例子。如果我想要有一个椅子:

面向过程会这样做:①画图纸    ②买木头    ③买钉子    ④买工具    ⑤锯木头    ⑥拼接打钉    ⑦打磨修正    ⑧完成

        面向对象会这样做:①佣人,你去给我买个凳子!!!

由此看来,面向对象编程确实强大,他忽略了内部实现,只关注与对象本身或者对象与对象之间的操作。

结尾之前:

        也许读者对抽象概念不太了解,那就让小编再啰嗦几句。在小编看来,计算机语言的发展过程就是为了方便人们而进行的一步步的抽象。

        ①机器语言诞生,它具有的01代码是计算机的本质,但是长长的01指令机器难记于是出现了汇编。

        ②汇编语言,它抽象了01代码,比如一条代表加法的01指令直接被抽象为move,开始贴近人类。但是汇编语言跟机器关联很大,不熟悉计算机内部硬件的人根本无法使用,所有抽象出了面向过程的高级语言。

        ③面向过程的高级语言,他屏蔽了对硬件的操作,一个加法符号‘+’将汇编中数据移入cpumove,寄存器执行加法的add等指令抽象在一起,极大方便人们使用。

        ④面向对象的高级语言,日新月异的今天,在大型软件的开发,人们不希望关注内部实现,只希望能够直接使用,所以进一步抽象为面向对象。

        ⑤超级语言,如今Python早已流行,它可以将各种语言黏合在一起,接近于一种超级语言。由于小编刚开始学习,在此不过多赘述。

结尾:

         以上便是我对面向过程和面向对象的相关理解,查阅了很多资料,如有错误,还望指正,不喜勿喷。也希望各位大神可以给我补充,不吝赐教,与君共勉。


猜你喜欢

转载自blog.csdn.net/qq_40298054/article/details/80111774