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 ++具有支持此功能的虚拟功能。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 消息传递:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								对象通过彼此发送和接收信息来彼此通信。对象的消息是执行过程的请求,因此将调用接收对象中生成所需结果的函数。消息传递涉及指定对象的名称,函数的名称和要发送的信息。
							 |