从我能收集到的过程编程使用过程和函数或子例程。它提供了有关该怎么做的分步说明。虽然另一方面面向对象我不完全确定。我所看到的只是它使用"对象"并且几乎相同?有人可以澄清和解释物体到底是什么吗?
将所有编程视为管理两个基本概念之间的关系:
状态和行为。状态是程序的数据。行为是逻辑。
过程编程基于分别实现这两个概念。状态保存在数据结构中。行为保存在函数(也称为过程或子例程(中。因此,过程应用程序将数据结构传递到函数中以生成一些输出。
面向对象编程基于同时实现这两个概念。状态和行为组合成一个新概念:对象。因此,OO 应用程序可以通过调用 Object 来生成一些输出,而无需传递数据结构。
OO的优点包括信息隐藏的可能性:如果调用方不需要传递任何数据结构,那么调用方不需要知道任何数据结构,因此可以与数据格式完全分离。
过程逻辑和对象逻辑之间的一个根本区别在于处理选择的方式。过程使用分支逻辑(熟悉的if/else
语法(处理选择。对象更喜欢使用多态性来处理选择。
程序和OO之间也有相似之处。两者都代表一种命令式编程风格,这意味着它们通过改变其状态(无论是在数据结构还是对象内部(并提供有关如何计算输出的分步说明来操作。命令式编程就像编写配方。
最后请注意,这些是理想主义或"纯粹"的定义。在现实世界中,范式融合。您很少(如果有的话(看到纯 OO 应用程序。来自多个范式的功能将被组合,无论好坏。
区别在于对象同时保存状态和功能,而函数不保存状态。
考虑游戏中的敌人。敌人可能能够做一些事情(即:功能(,例如移动和攻击。同时,该敌人还拥有当前生命值等数据。
在过程编程中,您必须不断传递敌人的状态作为参数。面向对象编程的不同之处在于状态自动传递给函数(现在称为方法(。