"面向过程"与"面向对象"的两大类语言
面向过程(Procedural Programming)和面向对象(Object-Oriented Programming,简 称 OOP)是两种不同的程序设计方式。
-
面向过程的语言主要有:C语言、Fortran语言
-
面向对象主要有:Smalltalk、Eiffel、C++、Java、PHP
面向对象和面向过程的区别
网上搜的大部分说法
- 面向过程 :面向过程性能比面向对象高。 因为类调用时需要实例化,开销比较大,较消耗资
源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix 等⼀般采⽤⾯向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展。
- 面向对象 :面向对象易维护、易复用、易扩展。 因为面向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,⾯向对象性能比面向过程低。
这个并不是根本原因,⾯向过程也需要分配内存,计算内存偏移量,Java 性能差的主要原因并不是 因为它是⾯向对象语⾔,⽽是 Java 是半编译语⾔,最终的执⾏代码并不是可以直接被 CPU 执⾏的 ⼆进制机械码。⽽⾯向过程语⾔⼤多都是直接编译成机械码在电脑上执⾏,并且其它⼀些⾯向过程的脚本语⾔性能也并不⼀定⽐ Java 好。
-
抽象的不同方式: 面向过程抽象的方式是把任务进行分解,然后像流水线一样串联起来,每个函数或者过程负责完成自己的一部分任务,形成一个线性的结构;而面向对象则通过把实体和行为封装在一起来实现抽象,通过类和对象的方式来描述现实世界中的事物。
-
对数据的处理方式: 面向过程语言通常使用全局变量或者指针,通过传统参数的方式来处理据,而面向对象则通过封装的机制来保护数据并控制访问,使用对象的属性或者方法来完成对数据的处理。
-
实现继承的方式: 面向过程程序设计中通常使用一个函数或者过程来实现代码的复用,而没有显式的继承概念;而面向对象语言则通过继承机制来实现代码的复用,子类可以继承父类的属性和方法,并在此基础上进行扩展和修改。
-
程序结构的不同: 面向过程程序设计语言的程序结构往往是线性的,通过函数之间的调用实现流程控制。而面向对象的程序结构则是由对象组成的,每个对象之间可以进行交互和通信,程序控制的流程更加灵活。
总的来说,面向过程强调算法的实现方式,把任务进行分解,完成任务的过程是固定的;而面向对象的设计则更加注重对象和行为的抽象,强调对象的互动和通信,在面对复杂系统和需求变化时更加灵活。