Product Design, Manufacturing & Innovation Resources
Heim » Polymorphismus (Programmierung)

Polymorphismus (Programmierung)

1967
  • Christopher Strachey
Arbeitsbereich für Computerprogrammierung zur Demonstration von Polymorphismus mit Codeschnipseln.

(Abbildung dient nur zur Veranschaulichung)

Polymorphismus, vom griechischen Wort für „viele Formen“, ermöglicht es, Objekte verschiedener Klassen als Objekte einer gemeinsamen Oberklasse zu behandeln. Er ermöglicht eine einheitliche Schnittstelle, wie zum Beispiel eine Verfahren Der Name dient der allgemeinen Beschreibung einer Aktionsklasse. Die konkrete Aktion wird zur Laufzeit durch den genauen Objekttyp bestimmt. Dies wird häufig durch Methodenüberschreibung erreicht.

Polymorphismus ist ein leistungsstarkes Konzept, das das Schreiben von flexiblem und entkoppeltem Code ermöglicht. Die häufigste Form ist in OOP Subtyppolymorphismus wird durch Vererbung und Methodenüberschreibung ermöglicht. Wenn eine Unterklasse eine spezifische Implementierung einer Methode bereitstellt, die bereits in ihrer Oberklasse definiert ist, spricht man von Überschreibung. Eine Variable des Oberklassentyps kann auf ein Objekt einer beliebigen Unterklasse verweisen. Wird eine Methode für diese Variable aufgerufen, wird die Version der Methode ausgeführt, die zur tatsächlichen Klasse des Objekts gehört, nicht zum Typ der Variable. Diese Entscheidung wird zur Laufzeit getroffen, ein Prozess, der als dynamische Dispatch oder späte Bindung bekannt ist.

Betrachten wir beispielsweise eine Oberklasse `Shape` mit der Methode `calculateArea()`. Unterklassen wie `Circle` und `Rectangle` können von `Shape` erben und ihre eigenen Implementierungen von `calculateArea()` bereitstellen. Ein Programm kann dann eine Liste von `Shape`-Objekten besitzen, die sowohl Instanzen von `Circle` als auch von `Rectangle` enthält. Beim Durchlaufen der Liste und Aufruf von `calculateArea()` für jedes Element wird automatisch die korrekte Formel für jede Form angewendet. Dadurch entfällt die Notwendigkeit langer if-else- oder switch-Anweisungen zur Typprüfung jedes Objekts, was zu saubererem und besser erweiterbarem Code führt. Neue Formen können dem System hinzugefügt werden, ohne den Code, der sie verarbeitet, ändern zu müssen.

UNESCO Nomenclature: 1203
- Computerwissenschaften

Typ

Abstraktes System

Störung

Inkremental

Verwendung

Weitverbreitete Verwendung

Vorläufer

  • das Konzept der Funktionszeiger in Sprachen wie C
  • Generische Programmierkonzepte
  • Vererbung, die die für den Subtyp-Polymorphismus notwendige Klassenhierarchie bereitstellt
  • der Bedarf an flexiblen und erweiterbaren Softwaresystemen

Anwendungen

  • Zeichnen verschiedener Formen ('Kreis', 'Quadrat') mit einem einzigen Aufruf der 'draw()'-Methode
  • Verarbeitung verschiedener Dokumenttypen ('pdf', 'word') mit einer generischen 'print()'-Funktion
  • Implementierung user interface Ereignisbehandler
  • generische Sammlungen, die Objekte unterschiedlicher, aber verwandter Typen enthalten können
  • Frameworks zur Abhängigkeitsinjektion

Patente:

NA

Potenzielle Innovationsideen

  • steckbare Datenserialisierungsformate (z. B. JSON, XML, Protobuf) unter Verwendung einer gemeinsamen Schnittstelle
  • generische Gerätetreiber in einem Betriebssystem für unterschiedliche Hardware
  • Strategie-Entwurfsmuster für austauschbare Algorithmen
  • universelle Rendering-Pipelines in Grafik-Engines, die verschiedene Materialtypen verarbeiten
  • Middleware-Systeme, die verschiedene Arten von Netzwerkanfragen verarbeiten
  • Finanztransaktionsprozessoren, die verschiedene Zahlungsmethoden abwickeln (Kreditkarte, PayPal, Krypto)
  • A/B-Test-Frameworks, die verschiedene Benutzeroberflächenkomponenten austauschen können
  • Datenverarbeitungspipelines, die eine Verbindung zu verschiedenen Datenquellen (Datenbanken, APIs, Dateien) herstellen können
  • Robotersteuerungssysteme, die verschiedene Arten von Aktoren über eine einheitliche API steuern können
  • austauschbare Anbieter kryptografischer Algorithmen in einem Sicherheitsframework
Verwandt mit: Polymorphismus, Überschreiben, dynamische Dispatch, späte Bindung, Subtyp, Schnittstelle, Abstraktion, OOP, Methodenüberschreiben, Laufzeit.

Historischer Kontext

Polymorphismus (Programmierung)

1956
1960
1967
1967
1970
1970
1970
1953
1960
1960
1967
1970
1970
1970
1970

(wenn das Datum unbekannt oder nicht relevant ist, z. B. „Strömungsmechanik“, wird eine gerundete Schätzung seines bemerkenswerten Auftretens bereitgestellt)

10. Jahr Jubiläum

Bilder in voller Größe und Downloads sind nur für registrierte Mitglieder 100% kostenlos verfügbar.

> Login <