美文网首页
面向对象和面向过程的重新理解

面向对象和面向过程的重新理解

作者: AlbenXie | 来源:发表于2019-04-13 13:26 被阅读0次

    1、

    不管你用的是什么编程语言或者什么编程方式,最终的目的就是对数据进行处理。要让计算机能处理数据,首先得先定义数据在计算机表示形式(数据结构),其次定义对数据进行处理的方法(算法、过程、函数)。每一种数据都有一些列合适的操作。

    面向过程编程主要关注的是过程(即处理数据的方式),而数据与过程之间的联系常常被忽略。

    这常常会导致一些问题:
    首先: 对于程序中的数据,任何函数都有可能对其进行修改,哪怕是与该数据无关的操作,这就对数据的安全性构成威胁。

    其次:数据在计算机中的表示形式将来可能由于各种原因而重新设计,当我们重新设计数据的表示形式时,也必须同时修改相关的函数,由于任何函数都有可能访问该数据,所以修改工作量不小。

    面向过程: 定义一些函数, 准备一组要处理的数据,然后对这组数据调用函数,最后得出结果。

    面向对象编程将数据和与之相关的操作捆绑在一起形成一个称为“类”的结构,并提供了一个对外的“接口”,强制任何访问该数据的实体必须通过这个接口来访问,最后面向对象提供了继

    承和多态机制允许在重用原有类的基础上改变已有类的行为(数据处理的方式)和具体表示(数据表示)。

    由于程序中的数据与相关的操作捆绑在一起,所以可以确保对数据的修改仅限于合适的操作, 所以提高了数据的安全性。其次数据在类中的表示形式是被隐藏在类的内部,所以表示形式的修改对于其他代码几乎无影响。

    面向对象: 定义一些类,这些类代表了不同的数据以及与之相关的操作, 然后定义这些类的对象,向对象发送消息通知他们对数据进行处理,然后对象处理完毕得出最终结果。

    2、

    C语言是面向过程的编程,它的最重要特点是函数,通过主函数来调用一个个子函数。

    面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

    面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

    3、(推荐)

    面向过程语言最基本的概念是函数。面向过程语言将一个个功能封装成一个个函数,因此程序的耦合度较高。

    面向对象语言最基本的概念是对象(数据及其操作的方法)。各个对象负责自己的工作,为其他对象提高功能。相对而言程序的耦合度较低,内聚度高。

    面向过程语言(C语言为代表)编程最大的优点的效率高,所以现在操作系统或者视频编解码(比如H.264)等主要是采用接近底层C语言;

    面向对象语言(Java语言为代表)最大的优点是符合抽象,封装,细节隐藏等基本程序设计的原则。
    需求分析、程序设计、编码实现等过程可以无缝衔接(利用UML建模)。
    面向对象的程序在结构上更加健壮和稳定。
    因此类似淘宝网这些效率和性能的需求不是至关重要(当然也是性能很重要,相比之下更重要的是系统的稳定性、安全性)的后台是用Java写的。

    4、(推荐)

    面向对象:用线性的思维。与面向过程相辅相成。在软件开发过程中,宏观上,用面向对象来把握事物间复杂的关系,分析系统。微观上,仍然使用面向过程。

    面向过程:是一种是事件为中心的编程思想。就是分析出解决问题所需的步骤,然后用函数把这写步骤实现,并按顺序调用。

    面向对象“是以“对象”为中心的编程思想。

    例子,
    面向过程:汽车发动、汽车到站。汽车启动是一个事件,汽车到站是另一个事件,面向过程编程的过程中我们关心的是事件,而不是汽车本身。针对上述两个事件,形成两个函数,之后依次调用。

    面向对象:对于面向对象来说,我们关心的是汽车这类对象,两个事件只是这类对象所具有的行为。而且对于这两个行为的顺序没有强制要求。

    例子,
    比如吃饭这件事,
    面向过程就是:盛饭、拿筷子、夹菜、吃
    面向对象就是:我、碗、筷子、菜这几个是主体,然后只要有这些主体就可以吃饭,具体怎么吃就不需要去管了

    5、(推荐)

    面向过程
    优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
    缺点:没有面向对象易维护、易复用、易扩展

    面向对象
    优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护
    缺点:性能比面向过程低

    相关文章

      网友评论

          本文标题:面向对象和面向过程的重新理解

          本文链接:https://www.haomeiwen.com/subject/puvlwqtx.html