OOP - Der Polymorphismus

Dezember 2016

Definition des Polymorphismus

Der Begriff Polymorphismus kommt vom Griechischen und bedeutet kann mehrere Formen nehmen. 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 :

Les différents types de polymorphisme

Wir werden jetzt versuchen, all das genauer zu erläutern. Zunächst ist es aber wichtig festzustellen, daß viel Verwirrung besteht, wenn es darum geht, all diese Arten von Polymorphismen zu unterscheiden.

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" haben. 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 übergebener Parametertyp, differenziert ausfällt. Es wird Beispielsweise möglich den Operator + zu belasten und ihn 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 mehrere Funktionen mit dem selben Namen aber mit unterschiedlichen Parametern (in der Anzahl und/oder im Typ). Der parametrische Polymorphismus erlaubt somit die automatische Wahl der anzuwendeden guten Methode gemäß des, als übergebenen Parameter, Datentyp.

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

  • Die Methode int addition(int, int) kann die Summe von zwei Ganzen zurückgeben.
  • Die Methode float addition(float, float) kann die Summe von zwei floating-point-Zahlen zurückgeben.
  • Die Methode char addition(char, char) kann nach eigenem Ermessen, die Summe von zwei Charakteren übergeben
  • etc.

Man nennt Signatur die Zahl und der Typ (statisch) der Funktionsargumente. So ist die Signatur, die Methode die festlegt welche auszurufen ist.

Der Vererbungspolymorphismus

Die Möglichkeit, eine Methode in Klassen neu zu definieren, die eine Basisklasse erben, heißt die Ableitung. Il est alors possible d'appeler la méthode d'un objet sans se soucier de son type intrinsèque : il s'agit du Die Objektmethode darf dann aufgerufen werden ohne sich um ihren eigentlichen Typen zu kümmern : sie heisst 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 Objekte vor König, Dame, Läufer, Springer, Turm und Bauer, jedes einzelne erbt das Objekt Schachfigur.
Die Methode Zug() kann, dank Vererbungspolymorphismus, abhängig von der zum Zeitpunkt des Aufrufes referenzierte Objektklasse, den geigneten Zug ausführen. Dies veranlasst insbesondere dem Programm das Befehl Figur.Zug zu geben ohne sich um die Spielstein-Klasse zu kümmern.


Lesen Sie auch :


OOP - Polymorphism
OOP - Polymorphism
OOP - Polimorfismo
OOP - Polimorfismo
POO - Le polymorphisme
POO - Le polymorphisme
OOP - Il polimorfismo
OOP - Il polimorfismo
POO - O polimorfismo
POO - O polimorfismo
Das Dokument mit dem Titel « OOP - Der Polymorphismus » aus CCM (de.ccm.net) wird zur Verfügung gestellt unter den Bedingungen der Creative Commons Lizenz. Sie dürfen das Dokument verwenden, verändern sowie Vervielfältigungen dieser Seite erstellen, unter den Bedingungen, die in der vorgenannten Lizenz erwähnt sind und unter der gleichzeitigen Bedingung, dass Sie im Rahmen Ihrer Verwendung, Veränderung oder Vervielfältigung nach außen hin klar und deutlich auf den Urheber (= de.ccm.net) des Dokuments hinweisen.