什么是面向对象编程 (OOP)?

2025年5月7日 | 阅读7分钟

面向对象编程具有深远的影响,因为它在多个层面都具有吸引力,并有望实现更快、更经济的开发和维护。它采用自下而上的方法来开发应用程序。

在本节中,我们将深入讨论什么是面向对象编程?

面向对象编程

面向对象这个词是由对象面向两个词组合而成。对象在字典中的意思是存在于现实世界中的物品或实体。面向的意思是对某种特定事物或实体感兴趣。通俗地说,它是一种围绕对象或实体进行编程的模式,称为面向对象编程。

What is Object-Oriented Programming

面向对象编程的技术定义如下:

面向对象编程基本上是一种计算机编程设计理念或方法论,它围绕数据或对象组织/建模软件设计,而不是围绕函数和逻辑。

对象是指具有独特属性和行为的数据字段。OOP中的一切都被分组为可自给自足的对象。

它是开发人员中最流行的编程模型。它非常适合大型、复杂且需要积极更新或维护的程序。它通过提供抽象、继承、多态封装等主要概念来简化软件开发和维护。这些核心概念支持 OOP。

OOP的一个真实世界示例是汽车。它更全面地说明了面向对象设计的强大功能。

注意事项

  • 一切皆对象
  • 开发人员通过消息传递来操作对象。
  • 每个对象都是类的实例。
  • 类包含与对象关联的属性和行为。

OOPs 的支柱

我们上面讨论的主要概念被称为OOPs 的支柱。OOP 建立在个支柱之上。

  • 抽象
  • 封装
  • 继承
  • 多态
What is Object-Oriented Programming

让我们详细讨论一下。

抽象

该概念允许我们向用户隐藏实现细节,但仅向用户展示必要的信息。利用该概念,开发人员可以轻松地进行更改并随着时间的推移进行扩展。

What is Object-Oriented Programming

抽象具有以下优点:

  • 它降低了复杂性。
  • 它避免了脆弱性。
  • 减轻了维护负担
  • 提高安全性和保密性。

封装

封装是一种机制,它允许我们将类的`数据`和`函数`绑定到一个实体中。它保护数据和函数免受外部干扰和滥用。因此,它也提供了安全性。类是封装的最佳示例。

What is Object-Oriented Programming

继承

该概念允许我们将现有类(父类)的属性继承或获取到新创建的类(子类)中。这被称为继承。它提供了代码重用性。

What is Object-Oriented Programming

多态

多态一词源自两个词,即poly(意为多)和morphs(意为形态)。Poly 意为“多”,morphs 意为“形态”。它允许我们创建具有相同名称但方法签名不同的方法。它允许开发人员创建干净、有意义、可读且有弹性的代码。

What is Object-Oriented Programming

上图最能描述多态的概念。一个人在办公室扮演员工的角色,在家中扮演父亲和丈夫的角色。

OOPs 概念

OOPs 概念包括以下内容:

  1. Object
  2. Class
  3. 继承
  4. 多态
  5. 抽象
  6. 封装
What is Object-Oriented Programming

Object

一个对象是具有属性、行为和特性的现实世界实体。它被引用为类的实例。它包含我们在类中定义的成员函数和变量。它占用内存空间。不同的对象具有不同的状态或属性以及行为。

Class

一个是对象的蓝图或模板。它是一种用户定义的数据类型。在类中,我们定义变量、常量、成员函数以及其他功能。它将数据和函数绑定到单个单元中。它在运行时不占用内存。请注意,类不被视为数据结构。它是一个逻辑实体。它是数据绑定的最佳示例。请注意,类可以独立存在,但对象不能反之。

下图最好地说明了 OOP 中的类和对象。

What is Object-Oriented Programming

除了这些核心概念之外,OOP 中还使用了一些其他面向对象的概念。

耦合

在编程中,关注点的分离称为耦合。这意味着一个对象不能直接更改或修改其他对象的状态或行为。它定义了两个对象连接的紧密程度。有两种类型的耦合:松耦合紧耦合

彼此独立且不直接修改其他对象状态的对象称为松耦合。松耦合使代码更灵活、可变且易于处理。

依赖于其他对象并可以修改其他对象状态的对象称为紧耦合。它会创建一种情况,即修改一个对象中的代码也需要更改其他对象中的代码。在紧耦合中,代码重用很困难,因为我们无法分离代码。

因为使用松耦合始终是一个好习惯。

内聚

在 OOP 中,内聚是指模块内部元素彼此相关的程度。它衡量模块与数据之间关系的强度。简而言之,内聚代表了模块责任的清晰度。它经常与耦合进行对比。

它侧重于单个模块或类的预期功能。模块或类的内聚性越高,面向对象设计就越好。

What is Object-Oriented Programming

内聚有两种类型,即高内聚低内聚

  • 高内聚与软件的多种必需质量相关,包括健壮性、可靠性可理解性
  • 低内聚与不良质量相关,例如难以维护、测试、重用,甚至理解

高内聚通常与松耦合相关,反之亦然。

组合 (Composition)

组合是 OOP 中的一个重要概念。它描述了一个在实例变量中引用一个或多个其他类对象的类。它允许我们对对象之间的“has-a”关联进行建模。我们可以在现实世界中找到这种关系。例如,汽车有一个引擎。下图描绘了这一点。

What is Object-Oriented Programming

组合的主要优点是:

  • 重用现有代码
  • 设计清晰的 API
  • 在不调整任何外部客户端的情况下,更改组合中使用的类的实现。

关联 (Association)

关联定义了对象之间的关系。请注意,一个对象可以与一个或多个对象相关联。这种关系可以是单向的,也可以是双向的。有以下几种关联类型:

  • 一对一
  • 一对多
  • 多对一,以及
  • 多对多

聚合 (Aggregation)

这是一种更高级的关联形式,其中每个对象都有自己的生命周期,但也存在所有权。换句话说,这是一种子对象可以独立于父对象存在的关系。在 Java 中也称为“has-a”关系。就像继承表示“is-a”关系一样。这是重用对象的另一种方式。

为什么要使用 OOP?

面向对象编程是软件工程的一次进化发展。在软件开发中使用 OOP 是一个好习惯,因为它实现了三个主要的软件工程目标,如下面的图所示。

What is Object-Oriented Programming

它在哪里使用?

当我们在制造和设计应用程序时,OOP 通常是最佳选择。它在编程中提供了模块化。它允许我们将软件分解成小问题的块,然后我们可以一次解决一个对象。

在代码重用和维护是主要关注点的地方应该使用它。因为它使开发变得容易,并且我们可以轻松地添加代码而不影响其他代码块。在复杂编程具有挑战性的地方应该使用它。

OOP 的好处

  • 模块化、可扩展、可伸缩、可重用且易于维护。
  • 它以简单的结构对复杂问题进行建模。
  • 对象可以在程序中重用。
  • 代码可以重用。
  • 我们可以轻松修改、添加代码而不影响其他代码块。
  • 通过封装和数据隐藏功能提供安全性。
  • 有利于协作开发,大型项目被分成小组。
  • 调试容易。

OOP 的局限性

  • 需要密集的测试流程。
  • 与过程式编程相比,解决问题需要更多时间。
  • 使用这种方法创建的程序可能比使用过程式编程方法编写的程序要大。
  • 使用这种方法开发的软件需要大量的预先工作和规划。
  • 如果缺少相应的类文档,OOP 代码可能难以理解。
  • 在某些情况下,这些程序可能会消耗大量内存。
  • 不适用于小型问题。
  • 解决问题需要更长的时间。

面向对象编程语言列表

有各种面向对象编程语言。但我们列出了一些流行且广泛使用的 OOP 语言。

根据 TIOBE 指数,排名前二十的 OOP 语言包括 JavaC++C#PythonRPHPVisual Basic.NETJavaScriptRubyPerl、Object Pascal、Objective-CDartSwiftScalaKotlin、Common Lisp、MATLAB 和 Smalltalk。

OOPs 的应用

  • 计算机图形学应用程序
  • 面向对象数据库
  • 用户界面设计,如窗口
  • 实时系统
  • 模拟和建模
  • 客户端-服务器系统
  • 人工智能系统
  • CAD/CAM 软件
  • 办公自动化系统