03.08 怎么理解“面向对象”和“面向过程”?

赤焰剑舞




首先,我们先从编程语言的角度,看看这两者之间的区别。

面向过程最典型的编程语言就是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,拖完洗干净三个过程

而面向对象怎么理解,事情是拖地,怎么解决,抽象成一个拖地机器人,里面封装了拖地功能,甚至封装打蜡功能,机器人开关就好比是接口,按下开关发一条扫地指令给对象,对象就可以调用内部的属性和方法干活了.

一个简单的类比,面向过程是所有步骤都定义出来,面向对象是把步骤封装在对象里,生成一个对象,就可调用内部的功能,也可调用其他对象,希望对你有帮助.


苏格拉底学堂


面向过程是一种基础的方法,它考虑的是实际的实现,一般情况下,面向过程是自顶向下逐步求精,其最重要的是模块化的思想方法。因此在模块化编程的时候才会有“低耦合,高内聚”的思想来提高效率。面向对象的方法主要是把事物给对象化,包括其属性和行为。当程序较小的时候,面向过程就会体现出一种优势,其程序流程十分清楚。但是,面向对象编程更贴近实际生活的思想。


分享到:


相關文章: