📜  C++中的面向对象编程

📅  最后修改于: 2021-05-30 14:28:05             🧑  作者: Mango

面向对象编程–顾名思义,在编程中使用对象。面向对象的编程旨在在编程中实现诸如继承,隐藏,多态等现实世界的实体。 OOP的主要目的是将数据和对其进行操作的功能绑定在一起,以便除该函数外,代码的其他任何部分都无法访问此数据。

面向对象编程语言的特征

:导致面向对象编程的C++构建块是一个类。它是用户定义的数据类型,它拥有自己的数据成员和成员函数,可以通过创建该类的实例来访问和使用它们。类就像对象的蓝图。

例如:考虑汽车类别。可能有许多不同名称和品牌的汽车,但它们都将共享一些共同的属性,例如所有汽车将具有4个车轮,速度限制,里程范围等。因此,在这里,汽车是类别和车轮,速度限制,里程是他们的属性。

  • 类是具有数据成员和成员函数的用户定义的数据类型。
  • 数据成员是数据变量,成员函数是用于操纵这些变量的函数,这些数据成员和成员函数共同定义了类中对象的属性和行为。
  • 在上面的Car类示例中,数据成员将是限速,里程等,并且成员功能可以施加制动,增加速度等。

我们可以说C++中的是代表一组对象的蓝图,这些对象具有一些共同的属性和行为。

对象:对象是具有某些特征和行为的可识别实体。对象是类的实例。当定义了一个类时,不分配内存,而是在实例化(即创建对象)时分配内存。

class person
{
    char name[20];
    int id;
public:
    void getdetails(){}
};
  
int main()
{
   person p1; // p1 is a object 
}

对象占用内存中的空间,并具有关联的地址,例如Pascal中的记录或结构或C中的并集。

执行程序时,对象通过相互发送消息进行交互。

每个对象都包含数据和用于操纵数据的代码。对象可以进行交互而不必知道彼此的数据或代码的细节,知道对象接受的消息类型和对象返回的响应类型就足够了。

封装:通常,封装被定义为将数据和信息包装在一个单元内。在面向对象的编程中,封装被定义为将数据和操纵它们的功能绑定在一起。

考虑一个封装的真实示例,在公司中,有不同的部分,例如帐户部分,财务部分,销售部分等。财务部分处理所有财务交易,并保留与财务相关的所有数据的记录。同样,销售部门处理所有与销售有关的活动,并保留所有销售记录。现在可能会出现这样的情况,当财务部门的官员出于某种原因需要某个特定月份的所有销售数据时。在这种情况下,不允许他直接访问销售部分的数据。他将首先必须联系销售部门的其他人员,然后要求他提供特定数据。这就是封装。在这里,销售部门和可以操纵它们的员工的数据被包装在一个单独的名称“销售部门”下。

用C++封装

封装还导致数据抽象或隐藏。由于使用封装也隐藏了数据。在上面的示例中,任何部分(例如销售,财务或帐户)的数据都从其他任何部分隐藏。

抽象:数据抽象是C++中面向对象编程的最基本和最重要的功能之一。抽象意味着仅显示基本信息并隐藏细节。数据抽象是指仅向外界提供有关数据的基本信息,隐藏背景细节或实现。

考虑一个男人驾驶汽车的真实例子。这个人只知道按下加速器会增加汽车的速度,或者踩刹车会停止汽车,但是他不知道在按下加速器时速度实际上是如何增加的,他不知道汽车的内部机制或在汽车上实施油门,制动器等。这就是抽象。

  • 使用类的抽象:我们可以使用类在C++中实现抽象。该类帮助我们使用可用的访问说明符对数据成员和成员函数进行分组。一个类可以决定哪个数据成员对外界可见,而哪个则不可见。
  • 头文件中的抽象:C++中的另一种抽象类型可以是头文件。例如,考虑math.h头文件中存在的pow()方法。每当我们需要计算数字的幂时,我们只需调用math.h头文件中存在的函数pow()并将数字作为参数传递,而无需了解该函数实际根据其计算数字的幂的底层算法。

多态性:多态性”一词意味着具有多种形式。简而言之,我们可以将多态定义为消息以多种形式显示的能力。

一个人同时可以具有不同的特征。像男人一样,是父亲,丈夫,雇员。因此,同一个人在不同情况下具有不同的行为。这称为多态。

一个操作在不同情况下可能表现出不同的行为。行为取决于操作中使用的数据类型。

C++支持运算符重载和函数重载。

  • 运算符重载:使运算符在不同情况下表现出不同行为的过程称为运算符重载。
  • 函数重载:函数重载使用单个函数名来执行不同类型的任务。
    多态被广泛用于实现继承。

示例:假设我们必须编写一个函数以添加一些整数,有时有2个整数,有时有3个整数。我们可以用具有不同参数的相同名称编写加法,将根据参数调用相关方法。

继承:一个类从另一个类派生属性和特性的能力称为继承。继承是面向对象编程的最重要功能之一。

  • 子类:从另一个类继承属性的类称为子类或派生类。
  • 超类:其属性被子类继承的类称为基类或超类。
  • 可重用性:继承支持“可重用性”的概念,即,当我们要创建一个新类并且已经有一个包含所需代码的类时,我们可以从现有类中派生新类。通过这样做,我们可以重用现有类的字段和方法。

示例:狗,猫,牛可以是动物基类的派生类。

动态绑定:在动态绑定中,响应函数调用而执行的代码在运行时确定。 C++具有支持此功能的虚函数。

消息传递:对象之间通过相互发送和接收信息来相互通信。对象的消息是对过程执行的请求,因此将在接收对象中调用生成所需结果的函数。消息传递涉及指定对象的名称,函数的名称以及要发送的信息。

相关文章

  • 类和对象
  • 遗产
  • 访问修饰符
  • 抽象化
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”