【问题标题】:What is the difference between object oriented programming and procedural programming? [closed]面向对象编程和过程编程有什么区别? [关闭]
【发布时间】:2020-05-23 18:52:10
【问题描述】:

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

【问题讨论】:

    标签: oop paradigms procedural-programming


    【解决方案1】:

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

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

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

    OO 的优点包括潜在的信息隐藏:如果调用者不需要传递任何数据结构,那么调用者就不需要知道任何数据结构,因此可以与数据格式完全解耦。

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

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

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

    【解决方案2】:

    不同之处在于,对象同时拥有状态和功能,而函数不拥有状态。

    考虑游戏中的敌人。该敌人可能能够做一些事情(即:功能),例如移动和攻击。同时,该敌人还拥有当前生命值等数据。

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

    【讨论】:

      猜你喜欢
      • 2016-11-26
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      • 2010-09-06
      • 2012-01-27
      相关资源
      最近更新 更多