C ++ 面向对象概念
C ++编程的主要目的是将面向对象的概念引入到C编程语言中。
面向对象编程是一种范式,提供了许多概念,例如 继承,数据绑定,多态等 。
将一切表示为对象的编程范式称为真正的面向对象编程语言。 Smalltalk 被认为是第一个真正的面向对象编程语言。
OOPs(面向对象编程系统)
对象 表示实际的实体,例如笔、椅子、桌子等。 面向对象编程 是一种使用类和对象设计程序的方法论或范式。它通过提供一些概念简化了软件开发和维护:
对象
具有状态和行为的任何实体被称为对象。例如:椅子、笔、桌子、键盘、自行车等。它可以是物理的或逻辑的。
类
对象的集合被称为类。它是一个逻辑实体。
C++中的类是导致面向对象编程的基础元素。必须创建类的实例才能访问和使用用户定义的数据类型的数据成员和成员函数。对象的类充当其蓝图。以汽车类为例。即使不同的汽车可能使用不同的名称和品牌,但它们都会有一些共同的特征,如四个轮子、限速、里程等。在这种情况下,汽车类由轮子、限速和里程表示。
继承
一个对象获得父对象的所有属性和行为被称为继承。它提供了代码的可重用性。它用于实现运行时多态性。
- 子类 – 子类或派生类指的是从另一个类继承属性的类。
- 超类 – “基类”或”超类”是指子类继承其属性的类。
- 可重用性 – 因此,当我们希望创建一个新类,但是已经存在一个类已经包含了我们需要的某些代码时,我们可以从旧类生成新类,借助继承。这使我们能够使用现有类的字段和方法。
多态性
当一个任务可以以不同的方式执行时,称为多态性。例如:用不同的方法说服客户,画一些东西,如形状或矩形。
不同的情况可能导致操作行为不同。操作中使用的数据类型决定了行为。
抽象
隐藏内部细节并显示功能的过程被称为抽象。数据抽象是将仅绝对必要的信息暴露给外部世界,同时隐藏实现或背景信息的过程。例如:电话呼叫,我们不知道内部处理过程。
在C++中,我们使用抽象类和接口来实现抽象。
封装
将代码和数据绑定(或封装)到一个单元中称为封装。例如:胶囊,它包裹着不同的药物。
封装通常被理解为将相关的信息和数据组合成一个单一实体的过程。封装是面向对象编程中将数据和与之相关的函数绑在一起的过程。看一个说明封装的实例:在一个公司中有各种部门,包括销售部,财务部和账务部。所有的财务交易都由财务部门处理,财务部门还会保存所有财务数据的记录。同样,销售部门负责与销售相关的所有任务,并保存每笔销售的记录。现在,可能会出现这样的情况,财务官员由于某种原因需要某个特定月份的所有销售信息。在“销售部门”这个总称下,将所有可以影响销售部门数据的员工归为一组。数据抽象或隐藏是封装的另一个副作用。与封装隐藏数据的方式类似。在上述例子中,任何其他部分都不能访问销售,财务或账务等部分的任何数据。
动态绑定 – 动态绑定是指在运行时根据函数调用确定要执行的代码。为此,C++支持虚函数。
面向对象编程相对于面向过程编程的优势
- 面向对象编程使开发和维护更容易,而面向过程编程语言在项目规模增长时很难管理。
- 面向对象编程提供了数据隐藏的功能,而面向过程编程语言可以在任何地方访问全局数据。
- 面向对象编程更能有效地模拟现实世界的事件。如果使用面向对象编程语言,我们可以提供解决现实问题的解决方案。
为什么我们需要在C++中使用面向对象编程
早期的编程方法存在各种缺点,性能也不好。与面向过程编程类似,该方法无法有效解决现实问题,因为无法在程序中再次重用代码,对全局数据访问存在困难等等。
通过使用类和对象,面向对象编程使代码维护变得简单。由于继承可以实现代码的重用,程序更简单,因为不需要重复编写相同的代码。例如封装和抽象,还提供了数据隐藏的功能。
为什么C++是部分面向对象的编程语言
C语言的面向对象特性是构建C++语言的主要动机。
尽管C++支持类、对象、继承、封装、抽象和多态等面向对象的概念,但它被归类为部分面向对象的编程语言。
1)在C++中,主函数始终必须在类的外部,并且是必需的。这意味着我们可以不使用类和对象,在应用程序中只有一个主函数。
在这种情况下,它被表示为一个对象,这是第一次违反纯面向对象编程的原则。
2)全局变量是C++编程语言的一个特性,它可以被程序中的任何其他对象访问,并且可以在程序之外定义。这里打破了封装。尽管C++鼓励为类和对象封装,但它忽略了全局变量的封装。
重载
多态性还有一个子集称为重载。当现有的运算符或函数被迫在新的数据类型上进行操作时,它被称为重载。
结论
阅读完这篇关于C++面向对象编程的课程后,您将了解到面向对象编程的需求、C++ OOP的概念以及OOP的基础知识,如多态性、继承、封装等。除了多态性和继承的实例,您还了解了C++ OOP的好处。