在学习程序设计的过程中,我们最开始会接触的一个问题就是:什么是面向过程与面向对象,很多时候被描述的很模糊,令人无语。我试着阐述一下我的观点。
首先,我们说两种程序设计的历史来说,我们完成一件事的下意识是分析步骤,讨论怎么做,于是将这种逻辑固化,在程序设计上我们就有了C语言这个工具,他是面向过程的,就是对一件事的流程,画出流程图,按照步骤一步一步,就像我们炒菜,先放热锅凉油,再放放入菜,加调味品,炒到一定程度再加入其他辅菜,最后,完成这些步骤我们就会得到一盘菜。
然后,某些大佬,觉得这样很麻烦,按照流程分析步骤,太繁琐,一层套一层,关系复杂,也就是我们说啥耦合性高。这时候,大佬吃着手里的汉堡,相出了另外的一种思路即:面向对象的思路。于是就有了C++,C++是对C语言的一次改动,即对面向对象的程序设计的尝试。
后来,发现这种改进不错,稳定下来就有了java、python这些面向对象的程序设计语言工具。
那什么是面向对象设计思想,那就从大佬手里的汉堡说起。这就是炒菜和汉堡的区别。
从我们下意识分析逻辑顺序,画出步骤流程分析,到我们要得到什么?即对象。也就是管理学上的目标管理,这及丰田汽车那一套的核心。我们回到程序设计,我们从程序设计的结果分析,及最后的炒菜或者汉堡,他是由那些部分组成,就拿汉堡说,我们做饭最后的目的是吃饭,不管你怎么做,最后都要回到物品上来。我们分析汉堡这个对象发现,他是面包+生菜+沙拉酱+肉组成,那我们分别得到了面包、生菜、沙拉酱、肉,放在一块,就能得到我们的汉堡。这是就是面向对象,属性加方法,java中叫类的实例。
面向对象的思想就是我们从目标对象出发,对目标对象进行分析,是哪些组件构成,我们通过外部引入资源获得部件,再通过一些方法逐步组装,最后得到我们的产物。
面向过程和面向对象区别就是:过程很重要,我们要学会享受。过程不重要,我们只看重结果,我们赢了就行。
优缺点就是:可能面向过程设计的是最优解,但可能不实用。面向对象设计的是可行解,n多个可行解。