什么是面向对象的编程?用Layman的术语解释的基础知识

如果您已经完成了一些初学者编程,或者甚至开始研究不同的语言,那么您可能会遇到“面向对象编程"(或“ OOP")一词。

有关于它是什么的各种技术解释,但是今天我们将以一种简单的方式来看一下定义面向对象的编程。

开始之前:过程语言

要了解什么是面向对象的编程语言,您需要了解它所取代的语言。早期的编程语言是过程性的-之所以这么称呼,是因为程序员会定义计算机将要执行的一组非常特定的过程。这些步骤输入了数据,对该数据执行了一系列操作,然后输出新数据。

过程语言在一段时间内运行良好(有些仍在使用中)。但是,当您想对超出基本步骤顺序的内容进行编程时,过程语言可能变得难以管理。

面向对象程序设计的对象

那么,什么是面向对象程序设计?

第一个对象面向语言(通常同意为Simula)介绍了对象的概念。对象是被视为单个实体的信息集合。

我们将通过一个示例在第二秒内深入探讨其实际含义,但首先我们必须讨论强>。类有点像前置对象。它们包含一个属性列表,这些属性在定义后就成为对象。

让我们以编程国际象棋为例。我们可能有一个叫做Piece的类。在Piece中,我们有一个属性列表:

  • 颜色
  • 高度
  • 形状
  • 允许移动
  • 一个对象只是定义了属于该类的事物的一个特定实例。

    所以我们可以有一个名为WhiteQueen的对象。该对象将具有所有四个属性的定义(白色,高大,带有锯齿状的圆柱形,在任何方向上有任意数量的空格)。它可能还具有方法或函数。

    是什么使它比过程方法要好得多?

    总之,面向对象的编程语言(如Java)使组织起来更容易数据和代码,这种方法对于大型项目来说更加通用。

    为了更详细地讨论它,我们将讨论面向对象编程的四个基础。

    面向对象编程:抽象

    仅仅因为您想使用某些东西并不意味着您需要知道它的工作原理。例如,浓缩咖啡机很复杂。但是您不需要知道它是如何工作的。您只需要知道,当您按“开"时,您将获得浓缩咖啡。

    面向对象编程中的对象也是如此。在我们的国际象棋示例中,我们可能有一个move()方法。该方法可能需要大量数据和其他方法。它可能需要初始位置和最终位置变量。它可以使用另一种方法来确定是否捕获了一块。

    但是您不必知道这一点。您需要知道的是,当您告诉部件移动时,它就会移动。那是抽象。

    面向对象的程序设计:封装

    封装是面向对象的程序创建抽象的方法之一。每个对象都是一个数据集合,被视为一个实体。这些对象中包含数据(变量和方法)。

    对象中的变量通常保持私有状态,这意味着其他对象和方法无法访问它们。只能通过使用对象的方法来影响对象。

    Bishop对象可能包含一些信息。例如,它可能有一个名为“ position"的变量。该变量是使用move()方法所必需的。而且,它当然具有颜色。

    通过将位置变量设为私有,并将move()方法设为公共,程序员可以保护move变量不受任何其他影响。而且,如果颜色是私有变量,则除非有允许更改的方法,否则其他对象将无法更改它。 (您可能没有,因为片段的颜色应该保持不变。)

    这些变量和方法都保存在Bishop对象中。因为它们是封装的,所以程序员可以更改对象的结构或内容,而不必担心公共接口。

    面向对象的编程:继承

    类,面向对象的编程语言也有子类。这些包含父类的所有属性,但它们也可以包含其他属性。

    在我们的国际象棋游戏中,典当棋子需要一种可以将其转化为其他棋子的方法。董事会的末端。我们将其称为transformPiece()方法。

    并非每件作品都需要transformPiece()方法。因此,我们不想将其放在Piece类中。相反,我们可以创建一个名为Pawn的子类。因为它是子类,所以它继承了Piece的所有属性。因此,Pawn子类的实例包括允许的颜色,高度,形状和移动。

    但是它还包括transformPiece()方法。现在,我们不必担心无意中在菜鸟上使用该功能。这是一个技术解释:

    创建子类也可以节省大量时间。程序员可以创建基类,然后在需要时将其扩展到新的子类,而不是为所有内容创建新的类。 (但是,值得注意的是,过度依赖继承是不好的。)

    面向对象程序设计:多态

    多态是继承的结果。全面了解多态性需要一些编程知识,因此我们将在此处继续介绍基础知识。简而言之,多态性允许程序员使用同名的方法,但使用不同的对象

    例如,我们的Piece类可能具有move()方法来移动片段在任何方向上只有一个空间。这适用于国王,但不适用于其他任何东西。为了解决这个问题,我们可以在Rook子类中定义新的move()方法,该方法将移动定义为无限制的向前,向后,向左或向右的空格。

    Now, when a programmer invokes the move() method and uses a piece as the argument, the program will know exactly how the piece should move. This saves a ton of time over trying to figure out which of many different methods you should use.

    果壳

    如果在最后四个定义之后您的头部旋转了一点,请不要担心太多。这是您需要记住的主要内容:

  • 面向对象的编程将信息收集到称为对象的单个实体中。
  • 每个对象都是类的单个实例。
  • 当不需要查看对象时,抽象会隐藏对象的内部工作。
  • 封装将相关的变量和方法存储在对象中并对其进行保护。
  • 继承允许子类使用父类的属性。
  • 多态性允许对象和方法通过单个接口处理多种不同的情况。
  • 如果您能记住这些要点,那么您将拥有一个不错的选择。处理什么是面向对象的编程。正如我所提到的,面向对象编程的四个基本知识可能很难理解。但是一旦您开始编程,它们就会变得更加清晰。

    标签: