Polymorphismus
Was ist Polymorphismus?
Polymorphismus oder Polymorphie ist ein beliebtes Konzept in der objektorientierten Programmierung (OOP) und bezieht sich auf die Idee, dass eine Entität im Code, zum Beispiel eine Variable, eine Funktion oder ein Objekt, mehr als eine Form haben kann. Das Wort Polymorphismus stammt aus dem Griechischen und bedeutet mehrere Formen haben oder Vielgestaltigkeit. Abgesehen von der Programmierung kommt die Idee der Polymorphie auch in anderen Bereichen vor, zum Beispiel in der Biologie, Chemie und Arzneimittelentwicklung.
Polymorphismus ist eines der wichtigsten Konzepte in der objektorientierten Programmierung. Es beschreibt die Fähigkeit von etwas, mehr als eine Form zu haben oder in ihr dargestellt zu werden. Die verschiedenen Formen entstehen, weil diesen Entitäten unterschiedliche Bedeutungen zugewiesen werden können und sie in verschiedenen Kontexten auf unterschiedliche Weise verwendet werden können.
Viele Programmiersprachen zeigen oder erlauben Polymorphismus, darunter Java, Ruby, C++, PHP und Python. In diesen Sprachen ermöglicht Polymorphismus, dass sich Klassenobjekte, die zum selben hierarchischen Baum gehören, unterschiedlich verhalten, auch wenn sie Funktionen mit demselben Namen haben. In PHP zum Beispiel bedeutet Polymorphismus, dass eine Funktion, die A als Parameter akzeptiert, auch B als Parameter akzeptieren kann, wenn B von A abstammt.
Variablen und benannte Funktionen in Polymorphismus und OOP
Wenn Polymorphismus unterstützt wird, kann eine Variable mit einem bestimmten Namen verschiedene Formen haben. Das Programm kann bestimmen, welche Form der Variable zum Zeitpunkt der Ausführung verwendet werden soll.
In Programmen, die Polymorphismus unterstützen, kann eine benannte Funktion auch in Abhängigkeit von den Parametern, die ihr gegeben werden, variieren. Wenn es sich bei der Variablen beispielsweise um eine ganze Zahl handelt, würde die gewählte Funktion eine Liste von Mitarbeiternummern abgleichen. Handelt es sich bei der Variablen um eine Textzeichenfolge, gleicht sie eine Liste von Namen ab. In beiden Fällen sind beide Funktionen im Programm unter demselben Namen bekannt.
Eine Variable mit dem Namen USERID kann zum Beispiel entweder eine ganze Zahl oder ein String sein. Beide Möglichkeiten werden unterstützt, da das Programm dem Benutzer die Möglichkeit gibt, beispielsweise eine Benutzer-ID einzugeben. Diese ID kann eine Zahl oder ein Name sein. Polymorphismus gibt dem Programm die Möglichkeit, zwischen den beiden Formen der Eingabe zu unterscheiden, so dass beide Arten erkannt und verarbeitet werden können.
Arten von Polymorphismus
In der Computerprogrammierung gibt es zwei Hauptarten von Polymorphismus:
- Polymorphismus zur Kompilierzeit. Der auch als statischer Polymorphismus bekannte Polymorphismus zur Kompilierzeit ist in OOP-Sprachen wie Java weit verbreitet. Sie verwendet die Methodenüberladung, um mehrere Methoden zu erstellen, die in derselben Klasse denselben Namen, aber eine unterschiedliche Anzahl von Parametern haben. Sie können auch Parameter für unterschiedliche Datentypen haben.
- Polymorphismus zur Laufzeit. Der Laufzeit-Polymorphismus, der auch als dynamischer Polymorphismus bezeichnet wird, verwendet Methodenüberladung, damit eine untergeordnete Klasse ihre eigene Definition einer Methode der übergeordneten Klasse hat. Diese Art der Polymorphie wird oft mit Upcasting in Verbindung gebracht, wenn eine Elternklasse auf eine Instanz der Kindklasse verweist.
Polymorphismus kann in der OOP auch auf andere Weise implementiert werden, zum Beispiel:
- Ad-hoc-Polymorphismus. Eine Funktion wird auf verschiedene Argumente angewandt und kann je nach Art des Arguments unterschiedlich funktionieren.
- Parametrischer Polymorphismus. Programmierer können generische Funktionen schreiben, die Werte in einem Datensatz unabhängig von ihrem Typ auf die gleiche Weise behandeln.
- Subtyping-Polymorphismus. Programmierer können mehrere Funktionen oder Unterprogramme erstellen, die auf der Supertyp-Klasse und auf verschiedenen Subtypen arbeiten können.
- Zeilen-Polymorphismus. Programmierer können Programme schreiben, die sich nur auf einen bestimmten Abschnitt eines Datenbankdatensatzes, das heißt eine Zeile, auswirken.
- Polytypismus. Programmierer verwenden dies, um Algorithmen zu erstellen, bei denen die Typen bei der Instanziierung des Algorithmus als Parameter angegeben werden können.
Polymorphismus in C++
C++-Programmierung bietet ein gutes Beispiel für Polymorphismus. In dieser Sprache ist das Pluszeichen (+) ein Operator und eine einfache benannte Funktion. Es kann zugewiesen werden, um mit zwei Objekten zu operieren und sie zu addieren, und es kann auch eine boolesche Suche durchführen. Im letzteren Fall kann das + Zeichen ein logisches und anzeigen.
Das Addieren von Objekten ist eine der häufigsten Formen der Operation mit dem Vorzeichen +. Bei der booleschen Suche müssen die durch den +-Operator getrennten Wörter vorhanden sein, damit ein Ergebnis wie zum Beispiel ein Zitat zurückgegeben werden kann. In einem anderen Kontext kann das +-Zeichen eine Operation zur Verkettung oder Verknüpfung von zwei Objekten oder Strings anzeigen.
Außerdem kann ein bestimmter Operator mit einem anderen Operator kombiniert werden, um eine andere Bedeutung zu erhalten. In C++ kann ein + Operator mit einem anderen + Operator kombiniert werden, um den ++ Operator zu bilden. Wenn ++ auf eine Variable folgt, kann dies bedeuten: Erhöhe diesen Wert um 1.
Letztendlich wird die Bedeutung eines Operators als Teil einer Klassendefinition in der Sprache definiert. Da ein Programmierer in diesen Sprachen Klassen erstellen kann, kann er auch festlegen, wie die Operatoren für eine Klasse von Objekten funktionieren sollen. Er kann also die Sprache und das Programm für seine speziellen Zwecke oder Ziele neu definieren. Dies wird durch die Polymorphie möglich.
Bedeutung der Polymorphie in der OOP
Polymorphismus ermöglicht es Programmierern, eine einzige Aktion auf verschiedene Arten auszuführen und mehrere Formen eines einzigen Objekts, einer Variablen oder einer Methode zu definieren. Sie verbessert auch die Lesbarkeit und Skalierbarkeit des Codes, da alter Code wiederverwendet und bei Bedarf weiter ausgebaut werden kann, nachdem er geschrieben, bestätigt und ausgeführt wurde. Die Wiederverwendung von Code spart außerdem Programmierzeit und hilft, die Entwicklung zu beschleunigen.
Ein weiterer Vorteil der Polymorphie ist, dass sie die Suche nach Variablen und die Ausführung sowie das Debuggen von Code vereinfacht. Polymorphismus ist besonders nützlich, wenn ein Programm die Verwendung eines einzigen Methodennamens erfordert, um je nach Klasse automatisch die richtige Methode aufzurufen. Außerdem können Programmierer damit bedingte Anweisungen im Code ersetzen, indem sie Switch-Anweisungen verwenden, die abhängig vom ersten empfangenen Parameter bestimmen, welcher Code beim Aufruf ausgeführt werden soll.
Andere Anwendungsbereiche von Polymorphismus
Abgesehen von der Computerprogrammierung gibt es Polymorphismus auch in anderen Einsatzbereichen.
Maschinelles Lernen
Beim maschinellen Lernen kann Polymorphismus jeden Datentyp betreffen. Das bedeutet, dass eine Liste von einer Funktion verarbeitet werden kann, unabhängig davon, welche Datentypen sie enthält. Wenn ein Modell beispielsweise eine Funktion enthält, die einfach die Länge einer Liste bestimmt, spielt es keine Rolle, welche Datentypen in der Liste enthalten sind. Die Liste wird trotzdem verarbeitet und liefert eine Ausgabe.
Biologie
In der Biologie und in genetischen Studien bezieht sich Polymorphismus auf Situationen, in denen zwei oder mehr Ausprägungen eines Merkmals in einem Gen zu finden sind. Zum Beispiel haben Jaguare und Geparden zweifarbige Haut, da sie verschiedene Morphen oder Merkmale für die Hautfarbe haben. Da diese Tierarten mehr als eine Form eines Merkmals haben, spricht man von Polymorphismus.
Chemie und Materialwissenschaft
Polymorphismus wird auch in der Chemie und Materialwissenschaft beobachtet und hat wichtige Auswirkungen auf zahlreiche Bereiche, darunter Agrochemikalien, Arzneimittel, Lebensmittel, Pigmente und sogar Sprengstoffe.
In all diesen Bereichen bezieht sich Polymorphismus auf die Idee, dass ein Material oder eine chemische Substanz – ein Element oder eine Verbindung – in mehr als einer kristallinen Form existieren kann. Kohlenstoff ist zum Beispiel eine der bekanntesten polymorphen Formen. Er kann sowohl als Graphit als auch als Diamant vorkommen, was ihn für die Herstellung einer breiten Palette von Gegenständen wie Bleistifte, Batterien, Kernstücke von Kernreaktoren und Schmuck wertvoll macht.
Pharmazie
Polymorphismus ist auch ein gängiges und wichtiges Konzept in der Pharmazie und der Arzneimittelentwicklung. Es ermöglicht Pharmaunternehmen, eine polymorphe Form eines Medikaments zu entwickeln, die wirksamer und sicherer für den menschlichen Verzehr ist als die anderen polymorphen Formen.
Es ist nicht ungewöhnlich, dass ein Medikament für eines seiner Polymorphe ein Patent und/oder eine behördliche Zulassung erhält, für andere jedoch nicht. Das Schmerzmittel Paracetamol, das entzündungshemmende Medikament Aspirin, der Cholesterinsenker Atorvastatin und das HIV-Medikament Ritonavir sind alles Beispiele für Medikamente, die in polymorpher Form vorliegen.