Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Introduction to Polymorphie | Überblick Über Polymorphismus
C++ OOP

Introduction to Polymorphie

Swipe um das Menü anzuzeigen

Note
Definition

Polymorphismus ist ein zentrales Konzept. Abgeleitet vom Griechischen für "viele Formen" ermöglicht es, Objekte verschiedener classes als Objekt einer gemeinsamen Oberklasse zu behandeln. Der wichtigste Aspekt ist die Fähigkeit verschiedener Entitäten, auf dieselbe Nachricht oder Methodenaufruf auf ihre eigene Weise zu reagieren.

Arten von Polymorphismus

Es gibt zwei Hauptarten von Polymorphismus: Kompilierzeit- (statisch) und Laufzeit- (dynamisch) Polymorphismus. Das Verständnis, wie und wann jede Art verwendet wird, ist entscheidend für das Schreiben von flexiblem, effizientem Code.

  • Kompilierzeit-Polymorphismus: tritt durch Funktions- oder Operatorüberladung auf, wobei die auszuführende Methode zur Kompilierzeit bestimmt wird.

  • Laufzeit-Polymorphismus: verwendet virtuelle Funktionen, wodurch abgeleitete Klassen Methoden der Basisklasse überschreiben können, wobei die korrekte Methode zur Laufzeit ausgewählt wird.

Anwendung und Notwendigkeit von Polymorphismus

Ein hervorragendes Beispiel zum Verständnis von Polymorphismus ist eine Analogie aus der realen Welt. Betrachten Sie eine grafische Benutzeroberfläche mit einem Button. Dieser Button kann sich je nach Kontext unterschiedlich verhalten – er kann als Upload-Button, Reset-Button oder Abbrechen-Button fungieren.

Jede Schaltfläche führt beim Klicken eine unterschiedliche Aktion aus, aber im Wesentlichen dienen sie alle als Schaltflächen. Betrachte die theoretische Umsetzung dieses Konzepts.

UploadButton.h

UploadButton.h

ResetButton.h

ResetButton.h

CancelButton.h

CancelButton.h

1234
class UploadButton : public Button { public: void onClick() { std::cout << "Upload" << std::endl; } };

Da alle Schaltflächen die gleiche Methode onClick() mit unterschiedlichen Implementierungen besitzen, gehen wir einen Schritt weiter. Was ist, wenn wir eine Funktion benötigen, die ein Objekt einer der Schaltflächen-classes als Parameter akzeptiert?

main.cpp

main.cpp

1234567891011
void user_clicked_upload_button(const UploadButton& btn) { btn.onClick(); } void user_clicked_reset_button(const ResetButton& btn) { btn.onClick(); } void user_clicked_cancel_button(const CancelButton& btn) { btn.onClick(); }

Wie Sie sehen, kann das manuelle Erstellen separater Funktionen für jede Schaltfläche Komplexität erzeugen, insbesondere bei Änderungen, da jede Funktion einzeln bearbeitet werden muss, wenn Probleme auftreten. Außerdem sind in der Hauptfunktion zusätzliche Überprüfungen erforderlich, um festzustellen, welche Funktion aufgerufen werden soll. Polymorphismus ermöglicht eine einfache Lösung dieser Probleme.

question mark

Was ist die wörtliche Bedeutung des Begriffs Polymorphismus?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 1

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 5. Kapitel 1
some-alt