C++中的面向对象编程

面向对象编程,顾名思义就是在编程中使用对象。面向对象编程旨在实现编程中的继承、隐藏、多态等现实实体。OOP的主要目的是将数据和对其进行操作的函数绑定在一起,这样除了该函数之外,代码的任何其他部分都不能访问这些数据。

面向对象编程语言的特征

它是用户定义的数据类型,它拥有自己的数据成员和成员函数,可以通过创建该类的实例来访问和使用它们。类就像对象的蓝图。

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

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

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

对象

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

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

对象占用内存空间,并有一个相关地址,如pascal中的记录或C中的结构或union 。

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

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

封装

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

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

用C++封装

封装也会导致数据抽象或隐藏。因为使用封装也会隐藏数据。在上面的示例中,销售、财务或帐户等任何部门的数据都隐藏在其部门中。

抽象

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

考虑一个男人开车的真实例子。这个人只知道踩油门会使汽车加速,或者踩刹车会使汽车停下来,但他不知道踩油门的速度实际上是如何提高的,他不知道汽车的内部机制,也不知道汽车中油门、刹车等的执行情况。这就是抽象。

1)使用类的抽象:我们可以使用类在C++中实现抽象。该类帮助我们使用可用的访问说明符对数据成员和成员函数进行分组。一个类可以决定哪个数据成员对外界可见,而哪个则不可见。

2)头文件中的抽象:C++中的另一种抽象类型是头文件。例如,考虑math.h头文件中存在的pow()方法。每当我们需要计算数字的幂时,我们只需调用math.h头文件中存在的函数pow()并将数字作为参数传递,而无需了解该函数实际根据其计算数字的幂的底层算法 。

多态性

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

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

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

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

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

多态被广泛用于实现继承。

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

继承

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

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

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

动态绑定

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

消息传递

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

六一编程网

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Next Post

Python语言的优势和应用

周二 3月 24 , 2020
Python是一种高级的、解释性的、通用的动态编程语言,它注重代码的可读性。与Java和C相比,它的 […]