Polymorphismus in der Programmierung

Polymorphismus in der Programmierung

  • ITOps & DevOps
6 Minuten Lesezeit Aktualisiert Oct 23, 2020

Auf einen Blick: Polymorphismus in der Programmierung ermöglicht es Objekten, mehrere Formen anzunehmen, und bietet eine einheitliche Schnittstelle für verschiedene Typen, was für objektorientierte Programmierung entscheidend ist. Er verbessert die Flexibilität und Wiederverwendung des Codes.

  • Zu den Polymorphismusarten zählen Subtyp, parametrisch, ad hoc und Zwang.
  • Beispiele veranschaulichen Polymorphismus durch Klassen wie "Car" und Methodenüberlastung.

Polymorphismus ist definiert als ein Objekt, das verschiedene Formen annehmen kann. Dieser Artikel untersucht Polymorphismen und wie sie in der Programmierung verwendet werden.

Was ist ein Polymorphismus?

Auf seiner grundlegenden Ebene ist ein Polymorphismus Teil der mathematischen Typentheorie. In der Informatik ist ein polymorphes Objekt ein Objekt, das in der Lage ist, mehrere Formen anzunehmen. Die Art des Polymorphismus, die das Objekt durchläuft, hängt davon ab, wann das Objekt seine Form annimmt und welcher Teil des Objekts sich transformiert.

Polymorphismus
Polymorphismusbild

Wenn das Objekt transformiert:

  1. Kompilierungszeit
  2. Dynamik

Was bewirkt die Verwandlung:

  1. Methode
  2. Ziel

Polymorphismus in der Programmierung

"In Programmiersprachen und Typentheorie bezeichnet Polymorphismus die Bereitstellung einer einzigen Schnittstelle zu Entitäten verschiedener Typen oder die Verwendung eines einzelnen Symbols zur Darstellung mehrerer verschiedener Typen."

Polymorphismus ist für die objektorientierte Programmierung (OOP) wesentlich. Objekte sind als Klassen definiert. Sie können Eigenschaften und Methoden besitzen. Zum Beispiel könnten wir ein Objekt erstellen, das als Klasse Car definiert ist. Dieses Auto könnte:

  • Eigenschaften wie: Farbe, Marke, Modell, aktuelle Geschwindigkeit
  • Methoden, die Funktionen sind, die von der Klasse aufgerufen werden, wie zum Beispiel: losfahren, anhalten, parken, links abbiegen, rechts abbiegen

Damit das obige Car-Objekt polymorph ist, können seine Eigenschaften und Methoden mit demselben Klassennamen "Car" aufgerufen werden, aber je nachdem, wie es im Code verwendet wird, unterschiedliche Typen aufrufen.

Arten von Polymorphismus

Es gibt vier Haupttypen von Polymorphismen:

Arten von Polymorphismus

Schauen wir uns jeden an.

Subtyp-Polymorphismus (Laufzeit)

Subtyp-Polymorphismus ist die gebräuchlichste Art von Polymorphismus. Er ist üblicherweise der, der erwähnt wird, wenn jemand sagt: "Das Objekt ist polymorph." Ein Subtyp-Polymorphismus verwendet einen Klassennamen, um mehrere Arten von Subtypen gleichzeitig zu referenzieren. Im obigen Autobeispiel erstellen wir die Objektklasse "Auto" und definieren mehrere Untertypen davon: Ford, Chevrolet, Kia, Nissan, Volkswagen, BMW, Audi und Tesla. Jedes Auto hat seine eigene Eigenschaftsfarbe. Alle Untertypen können austauschbar mit der Klasse Car referenziert werden. Jedes Auto hat eine Eigenschaft, Farbe, und nun können wir die Farbe von jedem Subtyp der Autoklasse erhalten. Der Polymorphismus findet zur Laufzeit statt. Wir können eine Funktion schreiben, um die Farbe eines beliebigen Autosubtyps abzurufen. Die Funktion kann so aussehen (nicht in einer bestimmten Programmiersprache geschrieben):

    getColor(BMW)
	→ returns red
getColor(Audi)
	→ returns blue
getColor(Kia)
	→ returns yellow

Parametrischer Polymorphismus (Überlastung)

Ein parametrischer Polymorphismus bietet speziell eine Möglichkeit, eine Funktion (denselben Code) zu verwenden, um mit mehreren Typen zu interagieren. Ein Beispiel wäre eine Liste von Typen. Ein parametrischer Polymorphismus könnte Elemente dieser Liste entfernen, hinzufügen oder ersetzen, unabhängig vom Typ des Elements. Der Code, der eine parametrische Polymorphismusfunktion sein könnte, die in Python geschrieben ist:

    for (element in list):
	list.remove(element)

Ad-hoc-Polymorphismus (Kompilierungszeit)

Für Ad-hoc-Polymorphismus verhalten sich Funktionen mit demselben Namen für verschiedene Typen unterschiedlich. Python ist dynamisch typisiert (es ist nicht erforderlich, dass der Typ angegeben wird). Die Python-Additionsfunktion ist ein Ad-hoc-Polymorphismus, da sie eine einzelne Funktion mit demselben Namen, "+", ist, die auf mehreren Typen funktioniert. Beide (Python):

    3 + 4
"Foo" + "bar"

Geben Sie einen Wert ihrer jeweiligen Typen, int bzw. String, zurück.

    → 7
→ "Foobar"

Für Werte vom Typ int addiert die Additionsfunktion die beiden Werte, sodass 3+4 7 zurückgibt. Für Werte des Typs String verkettet die Additionsfunktion die beiden Strings, sodass "Foo" + "bar" "Foobar" zurückgibt.

Zwangspolymorphismus (Casting)

Coercion-Polymorphismus ist die direkte Transformation eines Typs in einen anderen. Er tritt auf, wenn ein Typ in einen anderen Typ umgewandelt wird. Früher trat Polymorphismus durch die Interaktion mit verschiedenen Typen über die Objektklasse oder die Funktionen auf. Der Typ eines Objekts konnte beim Ausführen des Programms ausgewählt werden. Eine einzelne Funktion konnte mit verschiedenen Typen arbeiten. Ein einfaches Beispiel ist die Transformation von Zahlenwerten von ints, in Doubles, zu Floats und umgekehrt. Je nach Programmiersprache kann entweder der Typ auf der Variablen definiert werden, oder manchmal existiert eine Methode, um deren Wert in einen anderen Typ umzuwandeln. Python konvertiert Typen wie folgt:

    int(43.2) #Converts a double to an int
float(45) #Converts an int to a float

Java könnte den Typ einfach umwandeln, indem er den Typ definiert:

    int num = 23;
double dnum = num;

oder

    double dnum = Double.valueOf(inum);

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus ITOps & DevOps

Interessieren Sie sich für mehr von BMC?

The Brief ist unsere monatliche E-Mail zum Mainframe und zur Enterprise-Orchestrierung: Recherchen, Kundenberichte, Produktnachrichten, Events.

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Sie haben The Brief abonniert

Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.