Polymorphie Flashcards

1
Q

Welche Arten von Polymorphie gibt es?

A

Sub-Polymorphie
Parametrische Polymorphie
beschränkt parametrische Polymorphie
Ad-hoc Polymorphie

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was ist Sub-Polymorphie?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was versteht man unter Parametrischer Polymorphie?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was versteht man unter beschränkt parametrischer Polymorphie?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was ist Ad-hoc Polymorphie

A

Das Überladen von Operatoren bzw. Methodennamen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was besagt die Grundregel des Subtyping?

A

(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.“

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Welche syntaktischen Voraussetzungen müssen erfüllt sein, wenn in einer Subklasse eine geerbte Methode überschrieben werden soll?

A

(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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

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?

A

(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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly