Was bedeutet Polymorph?

Allgemein kennzeichnet polymorph die Fähigkeit eines Objekts unterschiedliche Formen anzunehmen. Der Begriff Polymorph stammt aus dem Griechischen: Poly = viele, morph = Form. Für die objektorientierte Programmierung ist die Polymorphie ein mächtiges Werkzeug und zugleich ein zentrales Konzept jeder objektorientierten Programmiersprache. Mit polymorpher Programmierung kannst Du Interfaces in unterschiedlichen  Ausprägungen effizient realisieren. Polymorphie ermöglicht Objekten basierend auf ihrem Typ behandelt zu werden.

Polymorphie – Unterschied zum Ueberladen von Methoden

Während mit dem Überladen von Methoden alle Methoden den gleichen Namen aber unterschiedliche Argumente nutzen, erweitert die Polymorphie dieses Programmierkonzept. Polymorphes Überschreiben nutzt sowohl identische Methodennamen wie auch identische Argumentnamen. Somit definiert Polymorphie zwei Methoden mit identischem Rückgabetyp und identischer Argumentenliste. Dazu nutzt polymorphes Überschreiben eine Subklasse und eine Superklasse.

Welchen Sinn ergibt es polymorph in zwei Klassen dieselben Methoden zu definieren?

Da Kindklassen von ihrer Elternklassen sämtlichen Eigenschaften erben besitzt die Subklasse automatisch sämtliche Methoden der Superklasse. Folglich würde die Subklasse nach dem Konzept der Vererbung ohne Methodendefiniton die Orginalmethode der Superklasse erben. Wenn wir die Methode in der Subklasse nun polymorph neu definieren, die Methode also überschreiben, ersetzen wir in Instanzen unserer Subklasse die allgemeine Methode der Superklasse durch eine spezielle Methodenfassung. Somit erhalten wir durch das Konzept der Polymorphe die Chance spezialisierte Funktionen in einer Kindklasse zu definieren.

Polymorphismus

1. Universeller Polymorphismus

Zu der Klasse der universellen Polymorphismen gehören alle parametergesteuerten sowie alle auf der Inklusion basierenden polymorphen Programmierkonzepte:

1.1 Parameter gesteuert

Die über Parameter gesteuerten polymorphen Ansätze unterscheiden sich im Detail wie folgt:

1.1.1 Generisch

Generische Typen und Operationen: Ein Typ-Parameter wird als generisch bezeichnet, wenn dieser einen Type Parameter besitzt. Ein Type-Parameter ist ein Platzhalter für einen spezifischen Programmtypen. Operationen auf generischen Typen werden in der Informatik als generische Operationen bezeichnet. Add() und get() sind Beispiele für generische Operationen.

1.2. Inklusions-Polymorphismus

Inklusions Polymorphismen kann man sich bildlich am besten mit den russischen Matrojschka Puppen vorstellen. Die Prinzipien des Subtyping und Subclassing unterscheidet sich im Detail wie folgt:

1.2.1 Subtypisierung

Wenn eine Klasse als Unterklasse einer anderen Klasse definiert wird, spricht der Informatiker von Subtypisierung. Ein Beispiel wäre die Klasse Limosine() als Unterklasse der Klasse Auto().

Zusätzlich muss der Subtyp das Liskov Substitutionsprinzip erfüllen: Alle Operationen der Superklasse müssen demzufolge entsprechende Subtype-Operationen aufweisen. Damit hat jede Subtype Operation automatisch eine schwächere Vorbedingung, d.h. die Unterklasse muss weniger oder dieselben Operationen wie ihre Elternklasse aufweisen. Zugleich hat jede Subtype Operation damit eine stärkere Nachbedingung, d.h. die Subklasse garantiert mehr Programmeigenschaften oder genauso viele.

1.2.2 Sub-Klassen

Das Konzept der Subklassen ist durch konsequente Anwendung des Konzepts objektorientierter Vererbung gekennzeichnet. Neben der Konzeption objektorientierter Programme kommt die verstärkte Strukturierung in Subklassen in der Programmanalyse und dem Objektdesign zur Anwendung. Das Überschreiben von Superklassen ist ein Spezialfall der Subklassenanwendung: In der Superklasse implementierte Methoden werden in der Subklasse reimplementiert. Folglich gibt es mehrere Methoden, die alle dieselbe Signatur verwenden, aber unterschiedliche Implementationen realisieren. Das Prinzip des Überschreibens ist ein elementarer Aspekt der objektorientierten Programmierung.

2. Ad-Hoc Polymorphismus

Eine Ad-Hoc polymorphe Funktion ist eine Klassenmethode die für unterschiedliche Argumenttypen funktioniert. Dabei nutzen polymorphe AdHoc-Funktionen dieselben Klassennamen für unterschiedliche Klassenfunktionen. Anhand des jeweiligen Typen des Arguments wird der Codeteil ausgeführt, der der jeweiligen polymorphen Ad-Hoc-Operation zugeordnet ist.

2.1 Ueberladen

Beim Überladen von Klassen nutzt der Programmierer denselben Klassennamen um unterschiedliche Programmoperationen zu realisieren. Die Signatur der Klasse wird genutzt um zu entscheiden welche der möglichen Operationen angesprochen wird. Die Signatur einer überladenen Methoden setzt sich aus den verwendeten Parametern und Rückgabewerten der Methode zusammen.

2.2 Type-Umwandlung

Die Type-Umwandlung – auch Type Promotion oder Type Conversion genannt – ist eine semantische Programmoperation. Mit der Typenumwandlung wird ein Argument eines Methodenaufrufs in ein Argument vom Type des erwarteten Programmoperators umgewandelt. Die Typenumwandlung wird somit vom Programm erzwungen. Durch die Typenkonvertierung werden Typenfehler (Type error) vermieden.

Mit der flexiblen Spezialisierung clever Ressourcen sparen!

Das Überschreiben von Methoden ermöglicht Programmfunktionen auf allgemeinen Klassen zu realisieren, ohne sich bereits vorab um spezielle Ausprägungen der Kindklasse kümmern zu müssen.

Benötigt ein Programm für einen Anwendungsfalls eine besondere Anpassung, so lässt sich durch eine polymorphe Klassenfunktion jederzeit die allgemeine Funktion durch diese Spezialisierung ersetzen. Eine wissenschaftliche fundierte Erläuterung findest Du hier.

Objektorientierung und Agile Softwareentwicklung

Einer der größten Vorteile bei konsequenter Objektorientierung ist die beliebige Wiederverwendbarkeit definierter Programmlogik. Objektressourcen stehen in Form vielfältigster Objektklassen zur freien Verwendung.

Moechtest Du mehr ueber Softwareentwicklung & Programmierung lernen?

Mit unserem Projekt Rock the Prototype unterstützen wir aktiv das Prototyping von Software. Am besten lernst Du gute Software zu entwickeln indem Du Dir einen iterativen, prototypischen Softwareentwicklungsprozess aneignest.

Software Prototyping - Rock the Prototype

Software Prototyping – Rock the Prototype

Unser kostenloses Angebot fuer Dich: Rock the Prototype!

Unsere Community Initiative Rock the Prototype bietet Dir – kostenlos – eine Chance neue Technologien mit anderen im Team zu entwicklen und in der Praxis zu erproben.

rock-the-prototype.com

rock-the-prototype.com

Das darfst Du von Rock the Prototype erwarten:

Die Community Rock the Prototype ist Deine Chance um…

:check_mark: Deine Programmierfähigkeiten zu erweitern,

indem Du gemeinsam mit anderen

:check_mark: lernst technische Herausforderungen effektiv zu lösen,

:check_mark: neue Ideen und Fähigkeiten entwickelst und

:check_mark: wertvolle neue agile Methoden & Konzepte lernst

:check_mark: Lass Dich von anderen Entwicklern inspirieren!

Unser Motto ist: Coding is fun – im Team entsteht der beste Code!

:check_mark: Du wirst neue Konzepte und Best Practices entdecken,

:check_mark: Deine IT-Skills vertiefen und

:check_mark: Neues erlernen!

Ähnliche Eintraege