面向过程编程实际上就是将一个程序要实现的功能分解为一系列的一步骤,这些步骤在分解,递归下去直到你能用函数容易实现这个步骤为止,然后从下往上,高层次的步骤由低层次的步骤组装,直到实现整个程序的功能。面向过程可以认为是一种算法分解。
面向对象编程则是将一个程序的功能分派给一系列对象去完成,然后这些对象在分解,直到你能容易实现对象为止,然后这些对象相互协作实现了程序的功能。程序中的每个对象有自己的状态和行为,具有一定的工作能力。面向对象的一个重要方面就是去描述对象,以及他们之间的关系。对象之间有的对象具有共同属性和行为,这些共性我们通过类来描述(抽象和封装),然而不同类之间也有一定的相似,这时我们通过基类来描述这些类的共性(继承),然而即使具有相同的行为,不同对象具体的行为方式也可能不同,这时我们在基类中使用虚函数来描述这种差异(多态)。有的对象是作为其他的一部分存在,这时我们将这个对象作为其他对象的类的成员变量来描述(组合和聚合)。
这大概就是区别了。
面向对象的思维我们日常生活就在使用。
例如考虑汽车的制造:
如果你讲汽车的制造看做是一系列工序,那么你用的思维就是面向过程的;如果你将汽车的制造看做是一台台机器人相互协作的过程,那你用的就是面向对象思维了。
区别: 面向对象 注重对数据的使用。试图把数据和对其的操作封装在一起(类),并且尝试去自动处理一些不同的函数的调用工作(多态,重载等),以减轻对函数的依赖。面向过程 则注重对函数(功能模块)的应用,这些年也有一些面向函数的语言开始复苏(如F#)也可以看出,面向的重点不同,也各有领域和优点。联系:联系其实在不同中就已经可以看到。面向对象只是将数据和函数“打包”,并记入了一些 自动判断并调用“函数”的功能。所以,面向对象也是建立在函数的基础上,只是减弱了 开发人员对函数的依赖度,将重点转向数据。
到不同,不要百度的,解释清楚就行