赤焰剑舞
首先,我们先从编程语言的角度,看看这两者之间的区别。
面向过程最典型的编程语言就是C语言,面向对象的语言则有C++、java、C#等。
C语言中,基本的数据类型就是变量、数组、结构体、函数,当我们在使用这些数据类型编程时,主要考虑的就是如何把需要处理的数据放在合适的数据类型中,并按照事情发生的先后顺序依次调用函数,完成业务逻辑的处理。
而面向对象的语言中,最重要的概念就是类,类的实例化结果就是对象。这类语言在设计过程中,参考了很多现实生活中的处理模型,如汽车是一个很抽象的物体,但是如果说奔驰汽车、宝马汽车就很具体了,这些汽车又有高配低配之分,汽车可以行驶等。
汽车的这些模型,分别对应面向对象中的基类、派生类、属性和方法等概念。由此可见,在使用面向对象编程时,对数据的合理封装是其主要核心工作。
最后,总结一下,面向过程编程的核心技术是数据结构与算法;面向对象编程的核心技术是23种设计模式。大家一定要熟练掌握!
Gfilsxin
编程界有两大思想:面向对象、面向过程,相信大家都很熟悉。常见的面向过程的编程语言有C,面向对象的语言有:C++、Java、C#、PHP、Python等。大多数虽说知道这两者的概念,但要让我们说出个所以然来,又不知从何说起。
面向过程(POP)
面向过程就是指分析出解决问题的步聚,通过函数一步步的去实现,并按顺序去调用。整个事件都是过程驱动的,比如:开始 -》输入数据 -》处理数据 -》循环 -》任务完成。因此也被称为“结构化编程”。
1、优点:
性能上稍强于面向对象(没有创建对象的开销),一般注重性能开销的系统基本会用POP模式开发,比如:单片机、嵌入式开发、Linux开发等。
2、缺点:
代码片段过多、不易维护和扩展、不易复用。
面向对象(OOP)
我们将构成问题的事物理解成多个“对象”,无需关心对象内部是如何实现的,只要了解对象在整个问题处理中所做的行为即可。OOP有三大基本特性:继承、封装、多态。
1、优点:
易维护和扩展、易复用,采用面向对象思想可以设计出低耦合的系统,同时也增加了系统的灵活性。
2、缺点:
调用需要创建对象,增加系统开销。
二者关系
严格意义上来说面向对象和面向过程只是一种编程思想,这两者也是相辅相成的关系。我们一般在宏观(全局)上以面向对象的思想来组织及表现事物间的复杂关系,但在微观(局部)上还是以面向过程形式完成具体功能。简单来说,即使我们采用的是面向对象的编程思想来编程,依旧也存在面向过程的思想(比如类中方法的实现)。
网络圈
面向过程,就是把一件事分成最小的可被计算机实现的步骤,这步骤就可以用函数表达,一个个函数执行完了,事也就做完了,即使不是计算机专业的,很多领域都有这种思路的体现。
面向对象,思维广度更大一些,要额外分析事背后的人或物,包括虚拟的人或物,这些就是对象,步骤或者说函数,一定是这些对象去做的。这种做法用好了是会降低复杂度的,某些问题会有非常高雅的实现。问题在于对象的抽取没有明确的规则,只有原则,这就需要十几年的设计磨炼才能达到最佳实践的水平。
梦虚竹林
面向过程可以用拖地类比理解
每个步骤都列出来当作一个动作,1,打湿拖把,2,拖地,3,拖完洗干净三个过程
而面向对象怎么理解,事情是拖地,怎么解决,抽象成一个拖地机器人,里面封装了拖地功能,甚至封装打蜡功能,机器人开关就好比是接口,按下开关发一条扫地指令给对象,对象就可以调用内部的属性和方法干活了.
一个简单的类比,面向过程是所有步骤都定义出来,面向对象是把步骤封装在对象里,生成一个对象,就可调用内部的功能,也可调用其他对象,希望对你有帮助.
苏格拉底学堂
面向过程是一种基础的方法,它考虑的是实际的实现,一般情况下,面向过程是自顶向下逐步求精,其最重要的是模块化的思想方法。因此在模块化编程的时候才会有“低耦合,高内聚”的思想来提高效率。面向对象的方法主要是把事物给对象化,包括其属性和行为。当程序较小的时候,面向过程就会体现出一种优势,其程序流程十分清楚。但是,面向对象编程更贴近实际生活的思想。