OOP - Polymorphismus


Polymorphismus ist ein Begriff, der in der objektorientierten Programmierung (OOP) benutzt wird. Was man darunter versteht, erklären wir Ihnen hier.

Polymorphismus - Definition

Der Begriff Polymorphismus kommt aus dem Griechischen und bedeutet kann mehrere Formen annehmen. Diese Eigenschaft ist eines der wesentlichen Verfahren der objektorientierten Programmierung. Während das Erbe die Klassen (und ihre Hierarchie) betrifft, bezieht sich der Polymorphismus auf die Objektmethoden.

Man unterscheidet im Allgemeinen drei Typen von Polymorphismen:

Ad-hoc-Polymorphismus oder auch Überladung (overloading)

Parametrischer Polymorphismus auch Datenvorlage</bold (template)

<bold>Vererbungspolymorphismus oder auch Ableitung (overriding)

Les différents types de polymorphisme

Der Ad-hoc-Polymorphismus

Der Ad-hoc-Polymorphismus erlaubt gleichnamige Funktionen mit ähnlicher Funktionalität in beziehungslosen Klassen zu erzeugen (mit Ausnahme natürlich der Objektunterklassenzugehörigkeit). Als Beispiel können Basisklasse, Ableitungsklasse und Linkklasse jede eine Funktion darstellen. Dies entbindet von der Sorge der Objekttypen, wenn das Gewünschte am Bildschirm erscheinen soll.

Der Ad-hoc-Polymorphismus erlaubt somit, Operatoren zu definieren, deren Anwendung je nach Parametertyp differenziert ausfällt. Es wird beispielsweise möglich, den Operator + zu belasten und ihn zu zwingen, unterschiedliche Aktionen auszuführen, je nachdem ob es sich um eine Operation zwischen zwei Ganzen (Addierung) oder zwischen zwei Zeichenketten (Konkatenation) handelt.

Der parametrische Polymorphismus

Der parametrische Polymorphismus, auch Datenvorlage genannt, erlaubt die Definition mehrerer Funktionen mit demselben Namen, aber mit unterschiedlichen Parametern (in der Anzahl und/oder im Typ). Der parametrische Polymorphismus erlaubt somit, die automatische Wahl der anzuwendenden Methode gemäß des Datentyps.

So können zum Beispiel mehrere homonyme Methoden addition() definiert werden, die eine Summe von Werten ausführen.

Die Methode int addition(int, int) kann die Summe von zwei Ganzen widergeben.

Die Methode float addition(float, float) kann die Summe von zwei Floating-point-Zahlen widergeben.

Die Methode char addition(char, char) kann nach eigenem Ermessen die Summe von zwei Zeichen wiedergeben usw.

Die Zahl und den Typ (statisch) der Funktionsargumente nennt man Signatur.

Der Vererbungspolymorphismus

Die Möglichkeit, eine Methode in Klassen neu zu definieren, die eine Basisklasse erben, heißt Ableitung. Die Objektmethode darf dann aufgerufen werden, ohne sich um ihren eigentlichen Typ zu kümmern: das nennt man Vererbungspolymorphismus. Dies erlaubt eine Abstrahierung von den Einzelheiten der abgeleiteten Klassen einer Objektfamilie, indem sie durch eine gemeinsame Schnittstelle (die Basisklasse) überdeckt werden.

Stellen wir uns ein Schachbrett mit folgenden Objekten vor: König, Dame, Läufer, Springer, Turm und Bauer. Jedes einzelne Objekt erbt das Objekt Schachfigur.

Die Methode Zug() kann dank Vererbungspolymorphismus - abhängig von der zum Zeitpunkt des Aufrufs referenzierten Objektklasse - den geeigneten Zug ausführen. Dies veranlasst insbesondere das Programm den Befehl Figur.Zug zu geben, ohne sich um die Spielstein-Klasse zu kümmern.

Foto: © Pixabay.

Unsere Inhalte werden in Zusammenarbeit mit IT-Experten erstellt, unter der Leitung von Jean-François Pillou, Gründer von CCM.net. CCM ist eine führende internationale Technologie-Webseite und in elf Sprachen verfügbar.
Das Dokument mit dem Titel « OOP - Polymorphismus » wird auf CCM (de.ccm.net) unter den Bedingungen der Creative Commons-Lizenz zur Verfügung gestellt. Unter Berücksichtigung der Lizenzvereinbarungen dürfen Sie das Dokument verwenden, verändern und kopieren, wenn Sie dabei CCM deutlich als Urheber kennzeichnen.
Treten Sie der Community bei