Polymorphie Flashcards
Welche Arten von Polymorphie gibt es?
Sub-Polymorphie
Parametrische Polymorphie
beschränkt parametrische Polymorphie
Ad-hoc Polymorphie
Was ist Sub-Polymorphie?
Wird durch Subtyping erreicht, das bedeutet, dass an Stellen, an denen ein Objekt vom Typ x auch eine Instanz vom Subtyp von x stehen dürfen
Was versteht man unter Parametrischer Polymorphie?
bestimmte Konstrukte einer Programmiersprache werden durch Typparameter parametrisiert, bei der Verwendung des Konstrukts wird der Typparameter durch einen konkreten Typen ersetzt. So ist es möglich, eine generische Implementierung einer Funktionialität anzugeben, die in verschiedenen Kontexten genutzt werden kann.
Was versteht man unter beschränkt parametrischer Polymorphie?
Durch die Angabe einer Schranke zu dem TypParameter, kann festgelegt werden, dass dieser lediglich durch Subtypen der Schranke belegt werden kann. So kann auch ohne Type-Cast innerhalb einer generischen Implementierung auf die durch die Schranke deklarierte Schnittstelle zugegriffen werden.
Was ist Ad-hoc Polymorphie
Das Überladen von Operatoren bzw. Methodennamen
Was besagt die Grundregel des Subtyping?
(Abs. 3.2.2.2) „Die Grundregel für Subtyping besagt, dass ein Objekt von einem Subtyp an allen Programmstellen vorkommen kann, an denen Supertyp-Objekte zulässig sind.“
Welche syntaktischen Voraussetzungen müssen erfüllt sein, wenn in einer Subklasse eine geerbte Methode überschrieben werden soll?
(vgl. Abs. 3.2.2.2) Um eine Methode zu überschreiben, muss in der Subklasse eine Methode gleichen Namens deklariert werden. Weiterhin müssen die Typen von Parametern, Rückgabeparametern und Ausnahmen der überschreibenden Methode zu denen der überschriebenen passen; d.h.: Theoretisch: Kontravarianz bei Parametertypen; Kovarianz bei Rückgabe- und Ausnahmetypen. für Java >= 5: Gleichheit der Parametertypen, Kovarianz bei Rückgabe- und Ausnahmetypen. (Kontravarianz der Parametertypen wird in Java nicht unterstützt, da es andernfalls bei überladenen Methoden zu Konstellationen kommen kann, in denen der Compiler einen Methodenaufruf nicht eindeutig an eine Deklaration binden kann.) für Java < 5: Gleichheit von Parameter- und Rückgabetypen
Ist es ausreichend, die syntaktischen Voraussetzungen zu überprüfen, um sicherzustellen, dass ein Typ ein Subtyp ist? Welche besondere Herausforderung liegt hierin für den Programmierer / die Programmiererin?
(vgl. Abs. 3.2.2.2) Nein, das Konzept des Subtyping beschränkt sich nicht auf syntaktischer Konformität von Methodendeklarationen. Die Eigenschaft, dass ein Objekt eines Subtyps überall dort eingesetzt werden kann, wo ein Objekt eines Supertyps erwartet wird, stellt vielmehr auch die Forderung an das Verhalten des Objektes, dass es den Erwartungen genügen muss, die an den Supertypen gestellt werden. Nur, wenn diese Erwartungen durch den Subtyp nicht verletzt werden, verhält dieser sich konform und ist damit ein Subtyp. Dies sicher zu stellen ist Aufgabe des Programmierers / der Programmiererin, da in der Regel keine formale Verhaltensspezifikation vorliegt bzw. geprüft werden kann.