面向对象的设计从发明计算机的那一刻就开始了。编程就在那里,编程方法出现了。编程基本上是向计算机发出某些指令。
在计算时代开始时,编程通常仅限于机器语言编程。机器语言是指特定于特定机器或处理器的指令集,它们以 0 和 1 的形式存在。这些是位序列 (0100110…)。但是用机器语言编写程序或开发软件是相当困难的。
用比特序列来开发当今场景中使用的软件实际上是不可能的。这是程序员转向下一代编程语言,开发汇编语言的主要原因,这些语言与英语语言非常接近,易于理解。这些汇编语言用于微处理器。随着微处理器的发明,汇编语言蓬勃发展并统治了整个行业,但这还不够。程序员再次想出了一些新的东西,即结构化和过程化编程。
结构化编程——
结构化编程方法的基本原理是将程序划分为功能和模块。模块和函数的使用使程序更易于理解和可读。它有助于编写更清晰的代码并保持对功能和模块的控制。这种方法重视功能而不是数据。它专注于大型软件应用程序的开发,例如,C 被用于现代操作系统的开发。编程语言:PASCAL(由 Niklaus Wirth 引入)和 C(由 Dennis Ritchie 引入)遵循这种方法。
程序化编程方法——
这种方法也称为自上而下的方法。在这种方法中,程序被划分为执行特定任务的功能。这种方法主要用于中型应用。数据是全局的,所有函数都可以访问全局数据。过程式编程方法的基本缺点是数据不安全,因为数据是全局的并且可以被任何函数访问。程序控制流是通过函数调用和goto语句实现的。编程语言:FORTRAN(由 IBM 开发)和 COBOL(由 Grace Murray Hopper 博士开发)遵循这种方法。
这些编程结构是在 1970 年代后期和 1980 年代开发的。这些语言仍然存在一些问题,尽管它们满足结构良好的程序、软件等的标准。它们不像当时的要求那样结构化。它们似乎过于笼统,并且与实时应用程序无关。
为了解决此类问题,OOP,一种面向对象的方法被开发作为解决方案。
面向对象编程 (OOP) 方法 –
OOP 概念基本上旨在克服上述编程方法的缺点,这些方法与实际应用程序不太接近。需求增加了,但仍然使用传统方法。这种新方法带来了编程方法领域的一场革命。
面向对象编程 (OOP) 只不过是允许在某些类和实时对象的帮助下编写程序。我们可以说这种方法非常接近现实世界及其应用,因为这些类和对象的状态和行为与现实世界的对象几乎相同。
让我们更深入地了解 OOP 的一般概念,如下所示:
什么是类和对象?
它是OOP的基本概念; C 中使用的结构的扩展概念。它是一种抽象的用户定义数据类型。它由几个变量和函数组成。该类的主要目的是存储数据和信息。类的成员定义了类的行为。类是对象的蓝图,也可以说类的实现就是对象。类对世界不可见,但对象可见。
Class car
{
int car_id;
char colour[4];
float engine_no;
double distance;
void distance_travelled();
float petrol_used();
char music_player();
void display();
}
在这里,类 car 具有属性 car_id、color、engine_no 和 distance。它类似于具有相同规格的现实世界汽车,可以声明为公共(对类外的所有人可见)、受保护和私有(对任何人都不可见)。此外,还有一些方法,例如 distance_travelled()、petrol_used()、music_player() 和 display()。在下面给出的代码中,汽车是一个类,而 c1 是汽车的一个对象。
#include
using namespace std;
class car {
public:
int car_id;
double distance;
void distance_travelled();
void display(int a, int b)
{
cout << "car id is=\t" << a << "\ndistance travelled =\t" << b + 5;
}
};
int main()
{
car c1; // Declare c1 of type car
c1.car_id = 321;
c1.distance = 12;
c1.display(321, 12);
return 0;
}
数据抽象——
抽象是指表示重要和特殊特征的行为,但不包括有关该特征的背景细节或解释。数据抽象简化了数据库设计。
- 物理水平:
它描述了记录的存储方式,这些记录通常对用户隐藏。它可以用短语“存储块”来描述。 - 逻辑层:
它描述了存储在数据库中的数据以及数据之间的关系。程序员通常在这个级别工作,因为他们知道维护数据之间的关系所需的功能。 - 视图级别:
应用程序出于安全目的隐藏数据类型和信息的详细信息。此级别通常在 GUI 的帮助下实现,并显示为用户提供的详细信息。
封装——
封装是面向对象编程 (OOP) 中的基本概念之一。它描述了包装数据的思想以及在一个单元内处理数据的方法,例如, Java的一个类。这个概念通常用于从外部隐藏对象的内部状态表示。
继承——
继承是一个类继承另一个类(称为父类)的能力或属性的能力。当我们编写一个类时,我们继承了其他类的属性。所以当我们创建一个类时,我们不需要一遍又一遍地编写所有的属性和函数,因为它们可以从拥有它的另一个类继承。继承允许用户尽可能重用代码并减少其冗余。
import java.io.*;
class GFG {
public static void main(String[] args)
{
System.out.println("GfG!");
Dog dog = new Dog();
dog.name = "Bull dog";
dog.color = "Brown";
dog.bark();
dog.run();
Cat cat = new Cat();
cat.name = "Rag doll";
cat.pattern = "White and slight brownish";
cat.meow();
cat.run();
Animal animal = new Animal();
animal.name = "My favourite pets";
animal.run();
}
}
class Animal {
String name;
public void run()
{
System.out.println("Animal is running!");
}
}
class Dog extends Animal {
/// the class dog is the child and animal is the parent
String color;
public void bark()
{
System.out.println(name + " Wooh ! Wooh !"
+ "I am of colour " + color);
}
}
class Cat extends Animal {
String pattern;
public void meow()
{
System.out.println(name + " Meow ! Meow !"
+ "I am of colour " + pattern);
}
}
多态性——
多态性是数据以多种形式处理的能力。它允许以各种方式执行相同的任务。它由方法重载和方法覆盖组成,即编写一次方法并使用相同的方法名称执行多个任务。
#include
using namespace std;
void output(float);
void output(int);
void output(int, float);
int main()
{
cout << "\nGfG!\n";
int a = 23;
float b = 2.3;
output(a);
output(b);
output(a, b);
return 0;
}
void output(int var)
{ // same function name but different task
cout << "Integer number:\t" << var << endl;
}
void output(float var)
{ // same function name but different task
cout << "Float number:\t" << var << endl;
}
void output(int var1, float var2)
{ // same function name but different task
cout << "Integer number:\t" << var1;
cout << " and float number:" << var2;
}
了解 OOP 的一些要点:
- OOP 将数据视为关键元素。
- 重点是数据而不是过程。
- 将问题分解为更简单的模块。
- 不允许数据在整个系统中自由流动,即局部控制流。
- 数据受到外部功能的保护。
OOP 的优势——
- 它很好地模拟了现实世界。
- 使用 OOP,程序易于理解和维护。
- OOP 提供代码可重用性。已经创建的类可以重复使用而无需再次编写它们。
- OOP 促进了程序的快速开发,其中类的并行开发是可能的。
- 使用 OOP,程序更易于测试、管理和调试。
OOP的缺点——
- 使用 OOP,类有时会被过度概括。
- 阶级之间的关系有时变得肤浅。
- OOP 设计很棘手,需要适当的知识。此外,还需要为 OOP 编程做适当的规划和设计。
- 要使用 OOP 进行编程,程序员需要适当的技能,例如设计、编程和从对象和类等方面进行思考等。