Objektorientierte Programmierung – Wie der Name schon sagt, werden bei der Programmierung Objekte verwendet. Ziel der objektorientierten Programmierung ist es, reale Entitäten wie Vererbung, Verstecken, Polymorphismus usw. in die Programmierung zu implementieren. Das Hauptziel von OOP besteht darin, die Daten und die damit arbeitenden Funktionen so zu verbinden, dass kein anderer Teil des Codes außer dieser Funktion auf diese Daten zugreifen kann.
Es gibt einige grundlegende Konzepte, die als Bausteine von OOPs dienen, d. h.
- Klasse
- Objekte
- Verkapselung
- Abstraktion
- Polymorphismus
- Nachlass
- Dynamische Bindung
- Nachrichtenübermittlung
Merkmale einer objektorientierten Programmiersprache
Letztes Commit-Git löschen
Klasse
Der Baustein von C++, der zur objektorientierten Programmierung führt, ist eine Klasse. Es handelt sich um einen benutzerdefinierten Datentyp, der seine eigenen Datenelemente und Elementfunktionen enthält, auf die durch Erstellen einer Instanz dieser Klasse zugegriffen und diese verwendet werden können. Eine Klasse ist wie eine Blaupause für ein Objekt. Zum Beispiel: Betrachten Sie die Klasse der Autos. Es mag viele Autos mit unterschiedlichen Namen und Marken geben, aber alle haben einige gemeinsame Eigenschaften, wie zum Beispiel alle vier Räder, Geschwindigkeitsbegrenzung, Kilometerstand usw. Hier ist also das Auto die Klasse und Räder die Geschwindigkeitsbegrenzungen , und Laufleistung sind ihre Eigenschaften.
- Eine Klasse ist ein benutzerdefinierter Datentyp, der über Datenelemente und Elementfunktionen verfügt.
- Datenelemente sind die Datenvariablen und Elementfunktionen sind die Funktionen, die zur Manipulation dieser Variablen verwendet werden. Zusammen definieren diese Datenelemente und Elementfunktionen die Eigenschaften und das Verhalten der Objekte in einer Klasse.
- Im obigen Beispiel der Klasse „Auto“ sind die Datenelemente Geschwindigkeitsbegrenzung, Kilometerstand usw., und die Elementfunktionen können Bremsen betätigen, die Geschwindigkeit erhöhen usw.
Wir können sagen, dass a Klasse in C++ ist ein Bauplan, der eine Gruppe von Objekten darstellt, die einige gemeinsame Eigenschaften und Verhaltensweisen aufweisen.
Objekt
Ein Objekt ist eine identifizierbare Einheit mit bestimmten Merkmalen und Verhaltensweisen. Ein Objekt ist eine Instanz einer Klasse. Wenn eine Klasse definiert ist, wird kein Speicher zugewiesen, aber wenn sie instanziiert wird (d. h. ein Objekt erstellt wird), wird Speicher zugewiesen.
C++ // C++ Program to show the syntax/working of Objects as a // part of Object Oriented PProgramming #include using namespace std; class person { char name[20]; int id; public: void getdetails() {} }; int main() { person p1; // p1 is a object return 0; }> Objekte nehmen Platz im Speicher ein und haben eine zugehörige Adresse wie einen Datensatz in Pascal oder eine Struktur oder Union. Wenn ein Programm ausgeführt wird, interagieren die Objekte, indem sie einander Nachrichten senden. Jedes Objekt enthält Daten und Code zum Bearbeiten der Daten. Objekte können interagieren, ohne Details über die Daten oder den Code des jeweils anderen zu kennen. Es reicht aus, die Art der akzeptierten Nachricht und die Art der von den Objekten zurückgegebenen Antwort zu kennen.
Weitere Informationen zu C++-Objekten und -Klassen finden Sie in diesem Artikel – C++-Klassen und -Objekte
Verkapselung
Normalerweise wird Kapselung als das Zusammenfassen von Daten und Informationen in einer einzigen Einheit definiert. In der objektorientierten Programmierung wird Kapselung als die Verbindung der Daten und der sie manipulierenden Funktionen definiert. Betrachten Sie ein reales Beispiel einer Kapselung: In einem Unternehmen gibt es verschiedene Bereiche wie den Buchhaltungsbereich, den Finanzbereich, den Vertriebsbereich usw. Der Finanzbereich wickelt alle Finanztransaktionen ab und führt Aufzeichnungen über alle finanzbezogenen Daten. Ebenso kümmert sich die Verkaufsabteilung um alle verkaufsbezogenen Aktivitäten und führt Aufzeichnungen über alle Verkäufe. Nun kann es vorkommen, dass ein Beamter der Finanzabteilung aus irgendeinem Grund alle Daten über die Verkäufe in einem bestimmten Monat benötigt. In diesem Fall ist ihm kein direkter Zugriff auf die Daten des Verkaufsbereichs gestattet. Er muss sich zunächst an einen anderen Mitarbeiter der Verkaufsabteilung wenden und ihn dann auffordern, die entsprechenden Daten anzugeben. Das ist Kapselung. Hier sind die Daten des Vertriebsbereichs und die Mitarbeiter, die sie manipulieren können, unter einem einzigen Namen im Vertriebsbereich zusammengefasst.

Kapselung in C++
Die Kapselung führt auch dazu Datenabstraktion oder Datenverbergung . Durch die Kapselung werden auch die Daten ausgeblendet. Im obigen Beispiel sind die Daten aller Abschnitte wie Vertrieb, Finanzen oder Konten vor allen anderen Abschnitten verborgen.
Weitere Informationen zur Kapselung finden Sie in diesem Artikel – Kapselung in C++
Abstraktion
Die Datenabstraktion ist eine der wesentlichsten und wichtigsten Funktionen der objektorientierten Programmierung in C++. Abstraktion bedeutet, nur wesentliche Informationen anzuzeigen und die Details zu verbergen. Unter Datenabstraktion versteht man die Bereitstellung nur wesentlicher Informationen über die Daten nach außen, wobei die Hintergrunddetails oder die Implementierung ausgeblendet werden. Betrachten Sie ein reales Beispiel eines Mannes, der ein Auto fährt. Der Mann weiß nur, dass das Drücken des Gaspedals die Geschwindigkeit des Autos erhöht oder das Betätigen der Bremsen das Auto anhält, aber er weiß nicht, wie sich die Geschwindigkeit beim Drücken des Gaspedals tatsächlich erhöht, er weiß nichts über den inneren Mechanismus des Autos oder die Implementierung eines Gaspedals, einer Bremse usw. im Auto. Das ist Abstraktion.
- Abstraktion mit Klassen : Wir können Abstraktion in C++ mithilfe von Klassen implementieren. Die Klasse hilft uns, Datenelemente und Elementfunktionen mithilfe verfügbarer Zugriffsspezifizierer zu gruppieren. Eine Klasse kann entscheiden, welches Datenelement für die Außenwelt sichtbar ist und welches nicht.
- Abstraktion in Header-Dateien : Eine weitere Art der Abstraktion in C++ können Header-Dateien sein. Betrachten Sie beispielsweise die pow()-Methode in der Header-Datei math.h. Wann immer wir die Potenz einer Zahl berechnen müssen, rufen wir einfach die Funktion pow() auf, die in der Header-Datei math.h vorhanden ist, und übergeben die Zahlen als Argumente, ohne den zugrunde liegenden Algorithmus zu kennen, nach dem die Funktion tatsächlich die Potenz von Zahlen berechnet .
Weitere Informationen zur C++-Abstraktion finden Sie in diesem Artikel – Abstraktion in C++
Was ist ein Computer
Polymorphismus
Das Wort Polymorphismus bedeutet, viele Formen zu haben. Mit einfachen Worten können wir Polymorphismus als die Fähigkeit einer Nachricht definieren, in mehr als einer Form angezeigt zu werden. Eine Person kann gleichzeitig unterschiedliche Eigenschaften haben. Ein Mann ist gleichzeitig Vater, Ehemann und Angestellter. Dieselbe Person zeigt also in unterschiedlichen Situationen ein unterschiedliches Verhalten. Dies nennt man Polymorphismus. Ein Vorgang kann in verschiedenen Instanzen unterschiedliche Verhaltensweisen aufweisen. Das Verhalten hängt von den im Vorgang verwendeten Datentypen ab. C++ unterstützt das Überladen von Operatoren und Funktionen.
- Überlastung des Bedieners : Der Prozess, bei dem ein Operator in verschiedenen Fällen unterschiedliche Verhaltensweisen zeigt, wird als Operatorüberladung bezeichnet.
- Funktionsüberladung : Bei der Funktionsüberladung wird ein einzelner Funktionsname verwendet, um verschiedene Arten von Aufgaben auszuführen. Polymorphismus wird häufig bei der Implementierung der Vererbung verwendet.
Beispiel : Angenommen, wir müssen eine Funktion schreiben, um einige Ganzzahlen hinzuzufügen. Manchmal sind es 2 Ganzzahlen und manchmal sind es 3 Ganzzahlen. Wir können die Additionsmethode mit demselben Namen und unterschiedlichen Parametern schreiben. Die betreffende Methode wird entsprechend den Parametern aufgerufen.

Polymorphismus in C++
Um mehr über Polymorphismus zu erfahren, lesen Sie diesen Artikel – Polymorphismus in C++
Nachlass
Als Fähigkeit einer Klasse wird die Fähigkeit bezeichnet, Eigenschaften und Merkmale von einer anderen Klasse abzuleiten Nachlass . Vererbung ist eines der wichtigsten Merkmale der objektorientierten Programmierung.
- Unterklasse : Die Klasse, die Eigenschaften von einer anderen Klasse erbt, wird Unterklasse oder abgeleitete Klasse genannt.
- Superklasse : Die Klasse, deren Eigenschaften von einer Unterklasse geerbt werden, wird Basisklasse oder Superklasse genannt.
- Wiederverwendbarkeit : Vererbung unterstützt das Konzept der Wiederverwendbarkeit, d. h. wenn wir eine neue Klasse erstellen möchten und es bereits eine Klasse gibt, die einen Teil des gewünschten Codes enthält, können wir unsere neue Klasse von der vorhandenen Klasse ableiten. Auf diese Weise verwenden wir die Felder und Methoden der vorhandenen Klasse wieder.
Beispiel : Hund, Katze, Kuh können von der Basisklasse „Tier“ abgeleitet werden.

Vererbung in C++
Um mehr über Vererbung zu erfahren, lesen Sie diesen Artikel – Vererbung in C++
Sanjay Dutt und
Dynamische Bindung
Bei der dynamischen Bindung wird zur Laufzeit entschieden, welcher Code als Reaktion auf den Funktionsaufruf ausgeführt werden soll. C++ hat virtuelle Funktionen dies zu unterstützen. Da die dynamische Bindung flexibel ist, werden die Nachteile der statischen Bindung vermieden, die den Funktionsaufruf und die Definition zur Erstellungszeit verband.
Beispiel:
C++ // C++ Program to Demonstrate the Concept of Dynamic binding // with the help of virtual function #include using namespace std; class GFG { public: void call_Function() // function that call print { print(); } void print() // the display function { cout << 'Printing the Base class Content' << endl; } }; class GFG2 : public GFG // GFG2 inherit a publicly { public: void print() // GFG2's display { cout << 'Printing the Derived class Content' << endl; } }; int main() { GFG geeksforgeeks; // Creating GFG's object geeksforgeeks.call_Function(); // Calling call_Function GFG2 geeksforgeeks2; // creating GFG2 object geeksforgeeks2.call_Function(); // calling call_Function // for GFG2 object return 0; }> Ausgabe
Printing the Base class Content Printing the Base class Content>
Wie wir sehen können, wird die print()-Funktion der übergeordneten Klasse auch vom abgeleiteten Klassenobjekt aufgerufen. Um dieses Problem zu lösen, verwenden wir virtuelle Funktionen.
Obiges Beispiel mit virtueller Funktion:
C++ #include using namespace std; class GFG { public: void call_Function() // function that call print { print(); } virtual void print() // using 'virtual' for the display function { cout << 'Printing the Base class Content' << endl; } }; class GFG2 : public GFG // GFG2 inherit a publicly { public: void print() // GFG2's display { cout << 'Printing the Derived class Content' << endl; } }; int main() { GFG geeksforgeeks; // Creating GFG's object geeksforgeeks.call_Function(); // Calling call_Function GFG2 geeksforgeeks2; // creating GFG2 object geeksforgeeks2.call_Function(); // calling call_Function // for GFG2 object return 0; } //this code is contributed by Md Nizamuddin> Ausgabe
Printing the Base class Content Printing the Derived class Content>
Nachrichtenübermittlung
Objekte kommunizieren miteinander, indem sie Informationen senden und empfangen. Eine Nachricht für ein Objekt ist eine Aufforderung zur Ausführung einer Prozedur und ruft daher eine Funktion im empfangenden Objekt auf, die die gewünschten Ergebnisse generiert. Bei der Nachrichtenübermittlung werden der Name des Objekts, der Name der Funktion und die zu sendenden Informationen angegeben.
Beispiel:
C++ #include using namespace std; // Define a Car class with a method to display its speed class Car { public: void displaySpeed(int speed) { cout << 'The car is moving at ' << speed << ' km/h.' << endl; } }; int main() { // Create a Car object named myCar Car myCar; // Send a message to myCar to execute the displaySpeed method int currentSpeed = 100; myCar.displaySpeed(currentSpeed); return 0; } //this code is contributed by Md Nizamuddin>
In Verbindung stehende Artikel :
- Klassen und Objekte
- Nachlass
- Zugriffsmodifikatoren
- Abstraktion