📜  学习面向对象编程的循序渐进方法

📅  最后修改于: 2021-10-22 03:36:05             🧑  作者: Mango

面向对象编程或 OOP 是指在编程中使用对象的语言。它主要关注现实世界实体的实现,如编程中的继承、多态等。例如 – 在生物类中;人类、动物、植物、微生物等被称为对象。 OOP 用于解决现实世界的问题。 OOP 有几个额外的优点,例如更快更容易执行,为程序提供清晰的结构,使其他人更容易阅读代码,它使用 DRY 原则“不要重复自己”,使代码易于维护、修改和调试。

此外,OOP 不仅对学术考试很重要,而且在面试中也非常重要,尤其是对于新生的面试。 OOP 中有很多主题,在此路线图中,我们将按顺序讨论所有这些主题。如果任何新生或学生遵循此路线图,他/她肯定会通过基于 OOP 编程的面试以及大学或大学考试。

1. 第一步

在继续学习 OOP 的概念之前,必须具备 C++、 Java、 Python或任何其他相关编程语言的基础知识和语法的基本知识。它将帮助您方便地在编程中实现 OOP 概念。

2. 第二步

之后,您必须遵循 OOP 概念的概述要点,例如:

  • 什么是面向对象编程?
  • 面向对象编程与现实世界的关系以及如何通过它解决现实世界的问题。
  • 为什么我们学习面向对象编程以及为什么学习很重要?
  • OOP 的局限性和优势
  • 过程编程和面向对象编程的区别?
  • 为什么 OOP 比过程编程语言更受欢迎?

因此,在深入研究 OOP 概念之前,您必须了解上述问题。有关这些问题的答案或参考,可以遵循 – GeeksforGeeks网站或任何推荐的书籍。学习OOP的重要书籍如下:

  • 对于 C++:E.Balagurusamy 的 C++ 面向对象编程。
  • 对于Java : Java:Herbert Schildt 的完整参考。
  • 对于Python:掌握面向对象的Python书,Steven F. Lott。

3. 第三步

现在,在完成上述步骤之后,我们将进一步了解面向对象编程语言的支柱,如下所示:

  • 什么是班级
  • 什么是对象
  • 类和对象之间的区别。
  • 在主类内部和外部使用类和对象。
  • 类和对象可以单独存在或使用吗?
  • 类和对象的真实世界类比。
  • 访问修饰符(公共、私有、受保护等)
  • 成员函数(内部和外部类函数)

4. 第四步

要学习的重要关键字:

  1. 静态关键字
  2. 虚拟关键字
  3. 抽象关键词
  4. 最终关键字
  5. 显式关键字
  6. 这个关键字
  7. 新关键字
  8. const 关键字
  9. 超级关键字

人们必须了解这些关键字,例如它们的定义、用途、优缺点等,以及为什么学习很重要。

5. 第五步

构造函数和析构函数:

  • 定义和工作。
  • 规则和类型。
  • 使用构造函数和析构函数的目的
  • 构造函数和方法之间的区别(在Java)
  • 构造函数可以执行其他任务而不是初始化吗?
  • 构造函数是否返回任何值?
  • 构造函数与析构函数。
  • 有没有构造函数类?

6. 第六步

面向对象的特点

多态性:在此,必须知道:

  • 什么是多态
  • 类别:函数/运算符重载、编译时多态、函数覆盖、运行时多态
  • 哪些函数可以重载哪些函数不能重载并说明
  • 虚函数
  • 动态绑定
  • 虚拟课堂
  • 派生类
  • 内联虚拟函数
  • 抽象类
  • 纯虚函数
  • 纯虚拟析构函数
  • 操作符实例

遗产:

  • 子类
  • 超类
  • 可重用性
  • 需要继承
  • OOP可以在没有继承的情况下存在吗
  • 继承类型(单一、多重、分层、多级、混合、虚拟继承)
  • 继承的真实例子
  • 继承的限制
  • 密封改性剂
  • 对象切片

封装

  • 定义
  • 需要
  • 如何实现
  • 真实世界的例子
  • 包(在Java)

抽象

  • 定义
  • 何时使用
  • 如何实现
  • 继承与抽象的区别
  • 封装和抽象的区别

其他

  • 动态绑定
  • 消息传递
  • 对象克隆
  • 包装类

因此,面试和学术考试有重要的 OOP 主题,如果遵循得当,一定会让您取得成功。

此外,必须遵循以下重要的学习原则来涵盖这些主题:

  • 获得有关该主题的深入知识。
  • 必须知道实现细节。
  • 它与现实世界的关系如何。

7. 第七步

  • OOP概念的重要面试题:
  • C vs C++ vs Java vs Python (只需了解它们的不同之处)
  • 过程语言和OOP语言之间的区别?
  • 为什么Java不是纯面向对象的编程语言?
  • Java的数组是原始类型还是对象?
  • 什么早绑定和晚绑定?
  • 什么是默认访问修饰符?
  • 一个抽象类可以创建多少个实例?
  • 定义垃圾收集以及它是如何工作的?
  • 定义操纵器?
  • 最后块是什么意思?
  • 最后的变量是什么?
  • 你说的异常是什么意思?
  • 错误与异常基本相同吗?
  • 一个类可以继承其基类的构造函数吗?
  • 我们什么时候应该使用结构而不是类?
  • 结构和类之间的区别和相似之处?
  • 范围解析运算符
  • 什么是深/浅复制?
  • 复制构造函数与赋值运算符
  • 我们可以在课堂上有多个值吗?
  • 析构函数与普通成员函数有何不同?
  • 新建和覆盖的区别?
  • 覆盖是否适用于继承?
  • 泛化 vs 聚合 vs 组合

重要的面向对象设计:

  • 设计一个 HASH 图
  • 设计 LRU 缓存
  • 设计呼叫中心
  • 设计一副纸牌
  • 设计一个停车场
  • 设计在线聊天系统
  • 设计地址簿
  • 设计银行管理系统
  • 设计一个自动取款机
  • 设计酒店管理系统
  • 设计库管理系统