编程语言面向对象和面向过程的区别

通俗地说,就是以 事 为中心,还是以 物 为中心 。
面向过程
面向过程的编程思想,聚集于解决问题的方法,也就是干了什么事(即上面所说的事) 。
采用这种思想进行编程时 , 重点是构建一个个函数 。

  • 举例

比如说,你要在窗口上绘制鲜花 。
编程语言面向对象和面向过程的区别

文章插图
面向过程的思路多半是这样的,书写一个绘制鲜花函数(比如取名为 DrawFlower ),带两个参数,一个参数用于指定鲜花的颜色,另一个参数用于指定鲜花的大小 。
编程语言面向对象和面向过程的区别

文章插图

函数写好后 , 每当需要画花时,就调用一次 DrawFlower 函数 。
现在,我们要在窗口绘制一朵红花,一朵黄花,那就分别调用 DrawFlower 函数两次 , 一次画红花 , 一次画黄花 。那么 , 如果要画 1 亿朵五颜六色的花呢,那就调用 1 亿次函数,并分别传入五花八门的颜色和大小 。

编程语言面向对象和面向过程的区别

文章插图
面向对象
而面向对象的方法,则聚焦于实施动作的对象,也就是这事儿是谁干的(即上面所说的物) 。
采用这种思想进行编程时 , 重点是抽象提炼出一个个物对象,再根据需要构建一个个类 。
  • 举例

同样的,我们还是要在窗口上绘制鲜花 。采用面向对象的方法,我们可以先构造一个 Flower 鲜花类 , 并为这个鲜花类添加两个属性:
  • 颜色
  • 大小
然后实现一个方法:
  • 绘制

编程语言面向对象和面向过程的区别

文章插图
【编程语言面向对象和面向过程的区别】
当我们要绘制鲜花时,需要首先实例化一个 Flower 鲜花对象(在创建鲜花对象时,我们为它指定颜色和大?。?。然后,当需要在窗口上绘制时,我们再调用这个鲜花对象的绘制方法 。
区别
  • 当我们使用面向过程的思想时,由于需要编写处理事情的函数,所以我们要明确解决问题的过程和要素 。
  • 当我们使用面向对象的思想时,由于首先需要构建类 , 所以我们要提取出来这个物类的共性 。例如,鲜花都有颜色,也都有一定的大小 。而且,我们构建该物类的最终目的是为了绘制鲜花,所以还必须创建一个绘制方法 。

总结
面向过程的主要优点是性能好,省资源(因为无需构建对象),缺点是不直观 , 与日常生活中的观念相差较大,不易于理解,也不利于复用 , 工程复杂时管理起来难度颇大 。
编程语言面向对象和面向过程的区别

文章插图
面向对象的主要优点是易于理解和维护、扩展方便(因为面向对象有继承、多态等),复用率高,可根据需要隐藏内部实现,仅暴露必要的接口,缺点是总的来说比面向过程占用略大,性能略低 。
利用面向过程的语言的结构体和指针完全可以模拟面向对象的过程 。而面向对象的语言就是把这部分代码抽象化了,提供了代码的利用率 。我个人觉得面向过程能解决的简单单次问题就面向过程解决 。如果要反复用,参数会有变化的代码,那就模块化 , 用面向对象 。