C++ Programm mit hierarchischer Vererbung

C++C++Beginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir demonstrieren, wie man ein C++-Programm erstellt, das das Konzept der hierarchischen Vererbung zeigt. Wir werden ein einfaches Programm mit Klassen und Objekten schreiben, um das Thema besser zu verstehen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/OOPGroup(["OOP"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/SyntaxandStyleGroup(["Syntax and Style"]) cpp/OOPGroup -.-> cpp/classes_objects("Classes/Objects") cpp/OOPGroup -.-> cpp/class_methods("Class Methods") cpp/OOPGroup -.-> cpp/access_specifiers("Access Specifiers") cpp/OOPGroup -.-> cpp/encapsulation("Encapsulation") cpp/OOPGroup -.-> cpp/inheritance("Inheritance") cpp/OOPGroup -.-> cpp/polymorphism("Polymorphism") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("Code Formatting") subgraph Lab Skills cpp/classes_objects -.-> lab-96145{{"C++ Programm mit hierarchischer Vererbung"}} cpp/class_methods -.-> lab-96145{{"C++ Programm mit hierarchischer Vererbung"}} cpp/access_specifiers -.-> lab-96145{{"C++ Programm mit hierarchischer Vererbung"}} cpp/encapsulation -.-> lab-96145{{"C++ Programm mit hierarchischer Vererbung"}} cpp/inheritance -.-> lab-96145{{"C++ Programm mit hierarchischer Vererbung"}} cpp/polymorphism -.-> lab-96145{{"C++ Programm mit hierarchischer Vererbung"}} cpp/output -.-> lab-96145{{"C++ Programm mit hierarchischer Vererbung"}} cpp/files -.-> lab-96145{{"C++ Programm mit hierarchischer Vererbung"}} cpp/code_formatting -.-> lab-96145{{"C++ Programm mit hierarchischer Vererbung"}} end

Erstellen Sie die main.cpp

Wir werden eine neue Datei namens main.cpp im Verzeichnis ~/project mit dem folgenden Befehl erstellen:

touch ~/project/main.cpp

Schreiben Sie die Shape-Klasse

Das erste, was wir tun müssen, ist es, die Shape-Klasse zu definieren, die als Elternklasse für die Rectangle- und Triangle-Klassen dienen wird. In dieser Klasse werden wir zwei geschützte Membervariablen width und height erstellen, die die Breite und Höhe der Form speichern werden.

Anschließend werden wir eine öffentliche Memberfunktion setDimensions erstellen, die diese Dimensionen setzt und eine Nachricht auf der Konsole ausgibt.

Dies ist der Codeblock für die Shape-Klasse, der der main.cpp hinzugefügt werden sollte:

#include <iostream>
using namespace std;

class Shape {
    //geschützte Membervariablen sind nur innerhalb der Klasse und ihrer abgeleiteten Klassen zugänglich
    protected:
        float width, height;
    //öffentliche Member sind überall zugänglich
    public:
        void setDimensions(float w, float h) {
            cout << "Setting the Dimensions using the parent Class: Shape\n";
            cout << "The dimensions are: " << w << " and " << h << "\n\n";

            width = w;
            height = h;
        }
};

Schreiben Sie die Rectangle-Klasse

Als nächstes werden wir die Rectangle-Klasse erstellen, die von der Shape-Klasse erben wird. Hier werden wir eine Methode zum Überschreiben der Methode verwenden, um die Fläche des Rechtecks mit der area()-Funktion zu berechnen.

Dies ist der Codeblock für die Rectangle-Klasse, der der main.cpp hinzugefügt werden sollte:

class Rectangle: public Shape {
    //Methode zum Überschreiben
    public:
        float area() {
            return (width * height);
        }
};

Schreiben Sie die Triangle-Klasse

Lassen Sie uns nun die Triangle-Klasse erstellen, die ebenfalls von der Shape-Klasse erben wird. Hier werden wir die Methode zum Überschreiben verwenden, um die Fläche des Dreiecks mit der area()-Funktion zu berechnen.

Dies ist der Codeblock für die Triangle-Klasse, der der main.cpp hinzugefügt werden sollte:

class Triangle: public Shape {
    //Methode zum Überschreiben
    public:
        float area() {
            return (width * height / 2);
        }
};

Schreiben Sie die main()-Funktion

Jetzt ist es an der Zeit, die main()-Funktion zu schreiben. Hier werden wir Objekte für beide Klassen Rectangle und Triangle erstellen und ihre Dimensionen festlegen.

Anschließend werden wir die area()-Funktion verwenden, um die Fläche sowohl des Rectangle als auch des Triangle mithilfe ihrer jeweiligen Objekte zu berechnen.

Dies ist der Codeblock für die main()-Funktion, der der main.cpp hinzugefügt werden sollte:

int main() {

    cout << "\n\nWelcome to LabEx :-)\n\n\n";
    cout << "===== Program to demonstrate the concept of Hierarchical Inheritance in CPP =====\n\n";

    //Declaring the Class objects to access the class members
    Rectangle rectangle;
    Triangle triangle;

    rectangle.setDimensions(5, 3);
    triangle.setDimensions(2, 5);

    cout << "\nArea of the Rectangle computed using Rectangle Class is : " << rectangle.area() << "\n\n\n";
    cout << "Area of the Triangle computed using Triangle Class is: " << triangle.area();

    cout << "\n\n\n";

    return 0;
}

Kompilieren und Ausführen des Programms

Um das Programm im Terminal auszuführen, navigieren Sie zunächst zu ~/project. Geben Sie dann den folgenden Befehl ein, um die main.cpp-Datei zu kompilieren:

g++ main.cpp -o main

Nachdem das erfolgt ist, führen Sie das Programm mit dem folgenden Befehl aus:

./main

Sie sollten die Ausgabe im Terminal sehen.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man das Konzept der hierarchischen Vererbung in C++ demonstriert. Wir haben die Shape-Klasse erstellt, die die Elternklasse von sowohl Rectangle als auch Triangle war. Anschließend haben wir Objekte für jede der Unterklassen erstellt und die Methode zum Überschreiben verwendet, um die Fläche eines Rechtecks und eines Dreiecks zu berechnen.

Wir hoffen, dass Ihnen dieses Lab geholfen hat, ein besseres Verständnis davon zu entwickeln, wie hierarchische Vererbung in C++ funktioniert. Für jede Frage können Sie sich gerne an uns über das untenstehende Kommentarfeld wenden.