面向对象编程和过程编程之间有什么区别?

时间:2020-02-07 15:47:05

标签: oop paradigms procedural-programming

据我所知,过程式编程使用过程和函数或子例程。它提供了有关操作的逐步说明。尽管另一方面,面向对象并不完全确定。我所看到的是它使用“对象”并且几乎​​相同?有人可以澄清和解释什么是物体吗?

2 个答案:

答案 0 :(得分:4)

将所有编程都视为管理两个基本概念之间的关系:
状态行为。状态是程序的数据。行为是逻辑。

过程编程基于分别实现这两个概念的基础。状态保存在数据结构中。行为保存在函数(也称为过程或子例程)中。因此,过程应用程序将数据结构传递到函数中以产生一些输出。

面向对象程序设计基于一起实现这两个概念。状态和行为组合成一个新概念:一个 Object 。因此,OO应用程序可以通过调用对象来产生一些输出,而无需传递数据结构。

OO的优势包括信息隐藏的潜力:如果调用者不需要传递任何数据结构,则调用者不需要知道任何数据结构,因此可以与数据格式完全脱钩。

过程逻辑和对象逻辑之间的一个根本区别是处理选择的方式。过程使用分支逻辑来处理选择:熟悉的if/else语法。对象更喜欢使用多态性处理选择。

过程和面向对象之间也有相似之处。两者都代表一种命令式编程风格,这意味着它们通过改变其状态(无论是在数据结构还是对象内部)并提供有关如何计算输出的逐步说明来进行操作。命令式编程就像写食谱一样。

最后请注意,这些是理想的或“纯”的定义。在现实世界中,范式合并。如果有的话,您很少会看到纯的OO应用程序。无论好坏,来自多个范式的功能都会组合在一起。

答案 1 :(得分:0)

区别在于对象既具有状态又具有功能,而功能不具有状态。

在游戏中考虑一个敌人。那个敌人可能能够做诸如移动和攻击之类的事情(即功能)。同时,该敌人还拥有其当前健康状况等数据。

在程序编程中,您将必须不断传递敌人的状态作为参数。面向对象的编程的不同之处在于,状态会自动传递给函数(现在称为方法)。

相关问题