什么是面向对象编程?

什么是面向对象编程?

什么是面向对象的编程?

面向对象编程是一种思考问题的方式。 通过考虑对象,您可以比使用其他范例更有效地解决问题。

例如,当您考虑编写计算收入税的程序的问题时,您可能会想编写如下代码:

“`蟒蛇

def calculate_taxes(收入):

回报收益 * 0.25 + 1

“`

面向对象编程 (OOP) 示例

有两种方法可以解决同一个问题。 一种是非面向对象的方法,一种是面向对象的方法。 让我们看看它们有何不同。

非 OOP 解决方案使用索引、数组和 itemCount 等变量来存储值或对问题陈述所需数据的引用。 变量 index 存储一个整数值,表示我们当前正在查看的数字列表中的位置(即,1 表示“第一个数字”,2 表示“第二个数字”,等等)。 变量数组将我们数字列表中的每个数字存储为字符串中的单独行:“[1,2]”。 最后,还有另一个名为 itemCount 的变量,它告诉我们总共有多少个项目(即,如果它有 5 个,那么我们就知道我们的列表有 5 个项目)。

现在让我们来看看面向对象的程序员是如何解决这个问题的! 正如您在下面看到的那样,他们将事情分解为步骤,其中每个步骤都描述了需要做什么,而他们的程序代码本身对之前或之后发生的事情一无所知——他们在这里使用对象来代替生活以后出现问题时更容易,因为我们确切地知道所有内容的存储位置!

对象,对象无处不在!

您可以将计算机程序中的对象想象成现实生活中的事物。 例如,表示人的对象可能具有属性(例如,姓名和年龄)和动作(例如,走路和跑步)。

您也可以将对象想象成包含其他盒子的盒子。 包含其他框的框称为那些子框或子框的父类或超类。 子框或子类框可以在其内部存储项目,但它不能直接访问其父框或超类框的任何项目,除非您使用“更改名称”和“设置”等功能允许它这样做。

类和对象

类是制作对象的蓝图。 它描述了对象的数据和行为,包括它们之间的关系。 例如,您可以有一个具有年龄和身高等属性的“人类”类; 以及 eating () 或 sleep() 等方法。

类允许您定义许多不同类型的对象(例如人类)共有的属性,同时仍然允许这些类型之间的可变性(例如,一些人比其他人高)。 这允许您创建一个对象的多个实例,而无需重复代码或为每个实例重新编写相同的函数!

封装

封装 是一种用于限制对其他类的方法和变量的访问的技术。 它用于隐藏类的内部细节,使更改程序的一部分而不影响其他部分变得更容易。

封装可以通过将复杂的代码分解成更易于人类理解的更小的部分来降低复杂性。

遗产

关于继承,您需要了解的第一件事是它都是关于重用的。 您应该知道的第二件事是,它全都与类之间的关系有关。

继承允许您创建从超类继承的子类。 超类是您的子类派生自的类(“继承”一词来自拉丁语,意思是“占有某物”)。 它具有与其父类相同的所有属性,但通常具有附加功能。 除了拥有其父类的所有属性外,子类还可能有一些额外的属性——例如,它可能添加或更改现有方法和实例变量的定义。

多态性

  • 多态性是将相同的代码用于不同类型的数据并获得不同结果的能力。
  • 多态性在 OOP 语言中的工作原理:
  • 相同的方法可以应用于多个类,只要它们有一个共同的父类。 这样,您就可以编写跨多个类工作的通用代码,而无需重写它。
  • 举个例子:比如,假设你想让你的宇宙飞船游戏(一款太空游戏)能够检测到两个物体之间的碰撞。 您可以编写一个名为 collide() 的方法,它将两个游戏对象作为参数,但您可能会注意到这对所有游戏对象都没有意义——如果您在游戏中使用的是 Asteroid 类而不是 Ship 类,那么不会发生任何碰撞 () 事情,因为小行星不会四处移动或相互影响太多!

OOP 是一种常见的计算机编程思维方式。

面向对象编程 (OOP) 是一种常见的计算机编程思维方式。 它用于许多不同的编程语言,因此您以前可能已经听说过这个术语。

试图理解 OOP 一开始可能会非常混乱,如果您不确定它的确切含义,甚至会令人沮丧。 然而,孩子们在学习如何编程时必须学习如何使用这种类型的逻辑,因为这使他们更容易重用代码并在程序出现问题时跟踪错误。