C++ 面向对象编程概念

C++编程的主要目的是将面向对象的概念引入C语言。

面向对象编程是一种范式,提供了继承、数据绑定、多态等多种概念。

在真正的面向对象编程语言中,一切都被表示为对象。Smalltalk被认为是第一个真正的面向对象编程语言。

面向对象编程系统(OOPs) 对象指的是现实世界中的实体,如笔、椅子、桌子等。面向对象编程是使用类和对象来设计程序的方法或范式。它通过提供一些概念来简化软件开发和维护:

  • 对象
  • 继承
  • 多态
  • 抽象
  • 封装

对象

任何具有状态和行为的实体都被称为对象。例如:

  • 椅子
  • 桌子
  • 键盘
  • 自行车等

对象的集合被称为类。它是一个逻辑实体。

在C++中,类是导致面向对象编程的基本元素。必须创建类实例才能访问和使用用户定义的数据类型的数据成员和成员函数。对象的类充当其蓝图。以汽车类为例。即使不同的汽车可能使用不同的名称和品牌,但它们都具有一些共同的特征,如四个轮子、速度限制、里程范围等。在这种情况下,汽车类由轮子、速度限制和里程表示。

继承

当一个对象获得父对象的所有属性和行为时,称为继承。它提供了代码的重用性。它用于实现运行时多态性。

  • 子类 - 子类或派生类是指从另一个类接收属性的类。
  • 父类 - "基类"或"超类"一词是指子类继承其属性的类。
  • 可重用性 - 因此,当我们希望创建一个新类,但已经存在的类已经包含了我们需要的一些代码时,我们可以从旧类生成新类,这是继承的结果。这允许我们使用现有类的字段和方法。

多态

当一个任务通过不同的方式执行时,称为多态。例如:以不同的方式说服客户,绘制形状或矩形等。

不同的情况可能导致操作的行为不同。操作中使用的数据类型决定了行为。

抽象

隐藏内部细节,显示功能,这就是抽象。数据抽象是在向外界公开仅需的信息的同时隐藏实现或背景信息。例如:电话呼叫,我们不了解内部处理过程。

在C++中,我们使用抽象类和接口来实现抽象。

封装

将代码和数据绑定(或封装)到一个单元中,这被称为封装。例如:胶囊,它包裹着不同的药物。

封装通常被理解为将相关的信息和数据组合成一个单一实体。封装是将在面向对象编程中处理数据的函数与数据结合在一起的过程。以公司为例,有各个部门,包括销售部门、财务部门和会计部门。所有的财务交易都由财务部门处理,财务部门还维护所有财务数据的记录。类似地,销售部门负责与销售相关的所有任务,并维护每个销售的记录。现在,可能会出现这样的情况,财务人员因某种原因需要某个特定月份的所有销售信息。在“销售部门”的总称下,将能够将影响销售部门数据的所有员工分组在一起。数据抽象或隐藏是封装的另一个副作用。就像封装隐藏数据一样。在上述示例中,任何其他部分都不能访问任何部分的数据,例如销售、财务或会计部门。

动态绑定 - 在动态绑定中,根据函数调用响应中将运行的代码在运行时进行决策。为此,C++支持虚函数。

面向对象编程的优势相对于过程式编程语言

  • 面向对象编程使得随着项目规模的增长,开发和维护更加容易,而过程式编程语言在代码增长时很难管理。
  • 面向对象编程提供了数据隐藏的功能,而在过程式编程语言中,全局数据可以从任何地方访问。
  • 面向对象编程更有效地模拟现实世界的事件。如果使用面向对象编程语言,可以提供实现现实问题的解决方案。

为什么我们在C++中需要面向对象编程?

早期的编程方法存在许多缺点,性能也不佳。由于无法像过程式编程一样重复使用程序中的代码,因此无法有效地解决实际问题,全局数据访问存在困难等。

通过使用类和对象,面向对象编程使代码维护变得简单。由于继承允许代码重用,因此程序更简单,因为不必重复编写相同的代码。封装和抽象也提供了数据隐藏的功能。

为什么C++是部分面向对象的?

C++语言的设计主要受到C语言中面向对象特性的影响。

尽管C++支持面向对象的概念,包括类、对象、继承、封装、抽象和多态性,但它被归类为部分面向对象的编程语言。

1)在C++中,主函数必须始终位于类的外部,并且是必需的。这意味着我们可以不使用类和对象,在应用程序中只有一个主函数。

在这种情况下,它被表示为一个对象,这是第一次违反了纯面向对象的原则。

2)全局变量是C++编程语言的一个特性,可以被程序中的任何其他对象访问,并且是在程序之外定义的。这里破坏了封装性。尽管C++鼓励对类和对象进行封装,但它对全局变量不进行封装。

重载

多态性还有一个子集称为重载。当现有的运算符或函数被强制用于新的数据类型时,被称为重载。

结论

通过阅读这个关于C++面向对象概念的课程,您将了解到面向对象编程的需求,什么是C++的面向对象编程以及多态性、继承、封装等面向对象编程的基础知识。除了多态性和继承的实例外,您还学习了C++面向对象编程的好处。

标签: C++语言, C++语言教程, C++语言技术, C++语言学习, C++语言学习教程, C++语言开发, C++语言入门教程, C++语言进阶教程, C++语言高级教程, C++语言笔试题, C++语言编程思想