面向对象与面向过程

面向对象与面向过程

一、面向过程与面向对象的本质是哲学。

从本质上而言,面向过程的和面向对象的本质是处理事务的方式。
它们不是所谓的顺序结构、类和抽象,也不是转型重载和继承等编程机制,而是如何理解事务,如何看待事务,如何处理事务的哲学思想。

一、面向过程

面向过程是最基本的编程思想,它基于事件本身的逻辑。
也就是要想做一件事,我们应该分哪几步,先做什么后做什么。

譬如以一个饭店炒菜的事情为例,首先买菜,洗菜,切菜,然后热锅,烧油,炒制,调味,装盘,最后查询这道菜是那桌点的,把菜呈给对应的客人。

这种把一件事情细化为多个步骤,然后按顺序完成的思想就叫做面向过程。

面向过程最核心的思路在于如何把一件事务按照逻辑拆解,譬如你肯定无法先热锅,然后装盘,再切菜,再炒制,然后再洗菜。

二、面向对象

面向对象则是在面向过程基础上进一步发展的团队协作。在理解过程的基础上,把任务合理的分给多个角色去做。

依然以饭店炒菜的例子为例,首先安排一个配菜员负责买菜,洗菜,和不断切菜,再安排一个厨师热锅,烧油,炒制,调味,装盘,最后再安排一个服务员负责上菜。

这种多个角色协作解决事务的思路就叫做面向对象。

面向对象的核心思路在于任务分配的合理,譬如你安排一个人负责热锅和买菜,一个人负责烧油和上菜,另一个人负责洗菜和装盘,厨房大概就会乱成一团。

三、面向对象与面向过程的关系

1. 只有一个对象的面向对象是面向过程,有多组过程的面向过程是面向对象。

面向过程和面向对象并不是不同的,它们在一定程度上可以相互转化。

当面向对象只有一个对象,任务全都分配给一个角色的时候,就没有了所谓的面向过程。

同样的,当有多个角色同时来解决同一个问题,每个角色负责一组行为时,也就从面向过程变成了面向对象。

1. 面向过程的核心思想是事件的逻辑,面向对象的核心思想是协作的秩序。

面向过程的核心思想是对事件按照逻辑进行合理的拆分,使之细化为按顺序执行的步骤。

面向对象的核心思想是如何把任务进行合理的划分,再分别交给不同的角色。

2. 面向过程是面向对象的基础,没有面向过程也就没有面向对象

面向对象是依赖于面向过程的,要能够对一个任务进行合理的划分,必须首先了解这个任务原本大体是怎样执行的,然后把原本一个角色完成的任务进行合理的拆分。而且拆分之后每个角色的工作还是面向过程的。

同样以人举例,面向过程是一个人做事,面向对象是许多个(一个人)一起协作。连基本的一个人都没有的话,哪来的多人。而且就算一个任务分给多个人做了,每个人自己做事情不还是有逻辑顺序的吗?按上面餐馆的例子,配菜员不还是得按买菜洗菜切菜的面向过程流程走吗?

author:万能的小奇喵(bilibili)

posted @ 2023-04-19 07:44  AirLongDian  阅读(101)  评论(0编辑  收藏  举报