78 lines
3.3 KiB
Markdown
78 lines
3.3 KiB
Markdown
|
---
|
|||
|
title: Object Oriented Programming using C++
|
|||
|
localeTitle: 面向对象的C ++编程
|
|||
|
---
|
|||
|
## 面向对象的C ++编程
|
|||
|
|
|||
|
面向对象编程,简称OOP,旨在实现编程中的继承,隐藏和多态等真实世界实体。 OOP的主要目的是将数据和对其进行操作的函数绑定在一起,这样除了该函数之外,其他任何代码都不能访问这些数据。
|
|||
|
|
|||
|
让我们了解面向对象编程语言的不同特征:
|
|||
|
|
|||
|
### 宾语:
|
|||
|
|
|||
|
对象是面向对象系统中的基本运行时实体,对象是类的实例,这些是定义的用户定义数据类型。
|
|||
|
|
|||
|
```cpp
|
|||
|
class person
|
|||
|
{
|
|||
|
char name[20];
|
|||
|
int id;
|
|||
|
public:
|
|||
|
void getdetails(){}
|
|||
|
};
|
|||
|
|
|||
|
int main()
|
|||
|
{
|
|||
|
person p1; //p1 is an object
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
对象占用内存中的空间,并具有相关的地址,如pascal或结构中的记录或C中的并集。
|
|||
|
|
|||
|
执行程序时,对象通过相互发送消息进行交互。
|
|||
|
|
|||
|
每个对象都包含操作数据的数据和代码。对象可以在不必了解彼此数据或代码的详细信息的情况下进行交互。知道接受的消息类型和对象返回的响应类型就足够了。
|
|||
|
|
|||
|
### 类:
|
|||
|
|
|||
|
类是数据和函数或方法的蓝图。班级不占用任何空间。
|
|||
|
|
|||
|
```cpp
|
|||
|
class class_name
|
|||
|
{
|
|||
|
private:
|
|||
|
//data members and member functions declarations
|
|||
|
public:
|
|||
|
//data members and member functions declarations
|
|||
|
protected:
|
|||
|
//data members and member functions declarations
|
|||
|
};
|
|||
|
```
|
|||
|
|
|||
|
类是用户定义的数据类型,如C中的结构和联合。
|
|||
|
|
|||
|
默认情况下,类变量是私有的,但在结构的情况下它是公共的。在上面的例子中,人是一个类。
|
|||
|
|
|||
|
### 封装和数据抽象:
|
|||
|
|
|||
|
将数据和函数包装(组合)到单个单元中称为封装。外部世界无法访问这些数据,只有那些包含在类中的函数才能访问它。这种数据与程序直接访问的隔离称为数据隐藏或信息隐藏。
|
|||
|
|
|||
|
数据抽象是指仅向外界提供所需信息并隐藏实现细节。例如,将具有公共函数的类Complex视为getReal()和getImag()。我们可以将类实现为大小为2的数组或两个变量。抽象的优点是,我们可以在任何时候改变实现,Complex类的用户不会受到影响,因为我们的方法接口保持不变。如果我们的实施是公开的,我们就无法改变它。
|
|||
|
|
|||
|
### 遗产:
|
|||
|
|
|||
|
继承是一个类的对象获取另一个类的对象属性的过程。它支持层次分类的概念。继承提供可重用性。这意味着我们可以在不修改现有类的情况下向其添加其他功能。
|
|||
|
|
|||
|
### 多态性:
|
|||
|
|
|||
|
多态性意味着能够采用多种形式。操作可能在不同情况下表现出不同的行为。行为取决于操作中使用的数据类型。
|
|||
|
|
|||
|
C ++支持运算符重载和函数重载。运算符重载是使运算符在不同实例中展示不同行为的过程。函数重载使用单个函数名来执行不同类型的任务。多态性广泛用于实现继承。
|
|||
|
|
|||
|
### 动态绑定:
|
|||
|
|
|||
|
在动态绑定中,响应函数调用而执行的代码在运行时决定。 C ++具有支持此功能的虚拟功能。
|
|||
|
|
|||
|
### 消息传递:
|
|||
|
|
|||
|
对象通过彼此发送和接收信息来彼此通信。对象的消息是执行过程的请求,因此将调用接收对象中生成所需结果的函数。消息传递涉及指定对象的名称,函数的名称和要发送的信息。
|