C++ - Eindeutige 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 Sie lernen, wie Sie das Konzept der einfachen Vererbung in der Programmiersprache C++ demonstrieren. Sie werden zwei Klassen erstellen, eine Elternklasse und eine Kindklasse, wobei die Kindklasse (abgeleitete Klasse) die Eigenschaften (Eigenschaften und Methoden) der Elternklasse (Basis- oder Superklasse) erbt.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/SyntaxandStyleGroup(["Syntax and Style"]) cpp(("C++")) -.-> cpp/OOPGroup(["OOP"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp/OOPGroup -.-> cpp/classes_objects("Classes/Objects") cpp/OOPGroup -.-> cpp/class_methods("Class Methods") cpp/OOPGroup -.-> cpp/constructors("Constructors") cpp/OOPGroup -.-> cpp/inheritance("Inheritance") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/user_input("User Input") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("Code Formatting") subgraph Lab Skills cpp/classes_objects -.-> lab-96223{{"C++ - Eindeutige Vererbung"}} cpp/class_methods -.-> lab-96223{{"C++ - Eindeutige Vererbung"}} cpp/constructors -.-> lab-96223{{"C++ - Eindeutige Vererbung"}} cpp/inheritance -.-> lab-96223{{"C++ - Eindeutige Vererbung"}} cpp/output -.-> lab-96223{{"C++ - Eindeutige Vererbung"}} cpp/user_input -.-> lab-96223{{"C++ - Eindeutige Vererbung"}} cpp/files -.-> lab-96223{{"C++ - Eindeutige Vererbung"}} cpp/code_formatting -.-> lab-96223{{"C++ - Eindeutige Vererbung"}} end

Erstellen der Datei main.cpp

Erstellen Sie zunächst eine Datei main.cpp im Verzeichnis ~/project mit dem folgenden Befehl:

touch ~/project/main.cpp

Schreiben des Codes

Kopieren Sie den folgenden Code in Ihre Datei main.cpp:

#include <iostream>
// Enthält die erforderlichen Bibliotheken

using namespace std;

// Deklariert eine Elternklasse (Basisklasse) namens "Shape"
class Shape {
    public:
        float area(float l, float b) { // Methode zur Berechnung der Fläche der Form
            return (l * b);
        }

        float perimeter(float l, float b) { // Methode zur Berechnung des Umfangs der Form
            return (2 * (l + b));
        }
};

// Deklariert eine Kindklasse (abgeleitete Klasse) namens "Rectangle" die von der Shape-Klasse ableitet oder erbt
class Rectangle: private Shape {
    private:
        float length,
        breadth;

    public:
        Rectangle(): length(0.0), breadth(0.0) {} // Standardkonstruktor der Rechteckklasse

        void getDimensions() { // Methode, um die Maße des Rechtecks vom Benutzer abzurufen
            cout << "\nGeben Sie die Länge des Rechtecks ein: ";
            cin >> length;

            cout << "\nGeben Sie die Breite des Rechtecks ein: ";
            cin >> breadth;
        }

        // Methode, um den Umfang des Rechtecks mithilfe der Shape-Klasse zu berechnen
        float perimeter() {
            // Ruft die perimeter()-Methode der Shape-Klasse auf und gibt das Ergebnis zurück.
            return Shape::perimeter(length, breadth);
        }

        // Methode, um die Fläche des Rechtecks mithilfe der Shape-Klasse zu berechnen
        float area() {
            // Ruft die area()-Methode der Shape-Klasse auf und gibt das Ergebnis zurück.
            return Shape::area(length, breadth);
        }
};

int main() {
    // Erstellt ein Objekt der Rectangle-Klasse
    Rectangle rect;

    // Willkommensnachricht
    cout << "\n\nWillkommen im Programm zur einfachen Vererbung!\n";

    // Nachricht an den Benutzer
    cout << "\nDie Rectangle-Klasse wird von der Shape-Klasse abgeleitet.\n\n";

    // Ruft die Maße des Rechtecks vom Benutzer ab
    rect.getDimensions();

    // Berechnet den Umfang des Rechtecks mithilfe der Elternklasse Shape und zeigt das Ergebnis an
    cout << "\nUmfang des Rechtecks, berechnet mit der Elternklasse Shape: " << rect.perimeter() << "\n";

    // Berechnet die Fläche des Rechtecks mithilfe der Elternklasse Shape und zeigt das Ergebnis an
    cout << "Fläche des Rechtecks, berechnet mit der Elternklasse Shape: " << rect.area() << "\n\n";

    return 0;
}

Kompilieren und Ausführen des Codes

Als nächstes kompilieren Sie den Code mit dem folgenden Befehl:

g++ main.cpp -o main &&./main

Dann führen Sie den Code mit dem folgenden Befehl aus:

./main

Verstehen der Ausgabe

Nachdem Sie das Programm ausgeführt haben, sehen Sie die folgende Ausgabe:

Welcome to Single Level Inheritance Program!

Rectangle class is derived from the Shape class.

Enter the length of the Rectangle: 5

Enter the breadth of the Rectangle: 10

Perimeter of the Rectangle computed using the parent Class Shape: 30
Area of the Rectangle computed using the parent Class Shape: 50

Das Programm fordert den Benutzer auf, die Länge und Breite des Rechtecks einzugeben. Nachdem es die Maße erhalten hat, berechnet es den Umfang und die Fläche mithilfe der perimeter()- und area()-Funktionen aus der Elternklasse Shape.

Zusammenfassung

Herzlichen Glückwunsch! Sie haben erfolgreich ein C++-Programm geschrieben, das das Konzept der einfachen Vererbung demonstriert. Sie können mit verschiedenen Formen experimentieren, und die Ausgabe wird die Berechnungen für alle neuen abgeleiteten Klassen genau widerspiegeln.