面向对象编程相比面向过程编程有哪些优势?

475 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情

什么是面向过程编程与面向过程编程语言?

  • 面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石 。
  • 面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程四大特性(封装、抽象、继承、多态)的编程语言。

通过组合数据将数据作为一个整体也就是类,数据和方法绑定在类中。

面向过程:

  • 面向过程编程也是一种编程范式或编程风格。它以过程(可以理解为方法、函数、操作)作为组织代码的基本单元,以数据(可以理解为成员变量、属性)与方法相分离为最主要的特点。 面向过程风格是一种流程化的编程风格,通过拼接一组顺序执行的方法来操作数据完成一项功能。
  • 面向过程编程语言最大的特点是不支持类和对象两个语法概念,不支持丰富的面向对象编程特性(比如继承、多态、封装),仅支持面向过程编程。

面向过程是以处理数据也就是方法,数据和方法是分离的,得借助外界传入。组合一堆方法,上个方法的输出是下一个方法的输入,这样完成一个功能的。是从这个过程流程上设计的

面向对象是类和对象,面向过程是函数和数据

面向对象编程相比面向过程编程有哪些优势?

1.应对大规模复杂程序开发

需求简单,程序处理流程只有一条主线,容易被划分成顺序执行的几个步骤;适合使用面向过程,流程剥离

需求复杂,处理流程也复杂,如果还是一条流水线处理,这种散乱的方法处理会需要大量而且并没有结构的处理会非常复杂;面向对象对需求建模,翻译为类,组合交互关系,面向对象编程还提供了一种更加清晰的、更加模块化的代码组织方式。

2.易复用,易扩展,易维护

面向对象提供了继承封装抽象多态,而面向过程没有提供这些特性。

查看上个小计的四个特性优势意义

3.更加智能,人性化

使用任何一个编程语言编写的程序,最终执行上都要落实到CPU一条一条指令的执行(无论通过虚拟机解释执行,还是直接编译为机器码),CPU看不到是使用何种语言编写的程序。对于所有编程语言最终目的是两种:提高硬件的运行效率和提高程序员的开发效率。然而这两种很难兼得。 C语言在效率方面几乎做到了极致,它更适合挖掘硬件的价值,如:C语言用数组char a[8],经过编译以后变成了(基地址+偏移量)的方式。对于CPU来说,没有运算比加法更快,它的执行效率的算法复杂度是O(1)的。从执行效率这个方面看,开发操作系统和贴近硬件的底层程序,C语言是极好的选择。 C语言带来的问题是内存越界、野指针、内存泄露等。它只关心程序飞的高不高,不关心程序猿飞的累不累。为了解脱程序员,提高开发效率,设计了OOP等更“智能”的编程语言,但是开发容易毕竟来源于对底层的一层一层又一层的包装。完成一个特定操作有了更多的中间环节, 占用了更大的内存空间, 占用了更多的CPU运算。从这个角度看,OOP这种高级语言的流行是因为硬件越来越便宜了。我们可以想象如果大众消费级的主控芯片仍然是单核600MHz为主流,运行Android系统点击一个界面需要2秒才能响应,那我们现在用的大部分手机程序绝对不是使用JAVA开发的,Android操作系统也不可能建立起这么大的生态。