Glossar zur Objektorientierung mit Python

<== Zur Übersicht der Begriffe ==>


Polymorphie


Mit dem Begriff Polymorphie bezeichnet man die Möglichkeit, in objektorientierten Systemen Klassen, Objekte, Attribute und Methoden einzusetzen, ohne dass der konkrete Typ jeweils im Programmtext klar sein muss.

Die Übersetzung des Begriffes Polymorphie ist "Vielgestaltigkeit". Konkret bei Python betrifft das wegen der fehlenden Typdeklaration vor allem die Polymorphie bei Methoden.

Ein Programmtext enthalte einen Methodenaufruf. Welche konkrete Variante einer Methode aufgerufen wird, hängt dann aber davon ab, für welches konkrete Objekt diese Methode aufgerufen worden ist.


Beispiele

Zaehlerprojekt:

Ein einfaches Beispiel tritt im Zaehlerprojekt auf, wenn man einen ZyklischenZaehler einführt.

 
class ZyklischerZaehler(Zaehler):

    def __init__(self, zyklus=3):
        """Konstruktor von ZyklischerZaehler"""
        Zaehler.__init__(self)
        self.__zyklus = zyklus

    def Zaehle(self):
        """Veraendernde Methode fuer den Stand.
        Diese Methode ueberschreibt Zaehle() von Zaehler,
        verwendet die Methode aber."""
        super(ZyklischerZaehler,self).Zaehle()
        if self.GibStand()==self.__zyklus:
            self._Zaehler__stand = 0 # zuruecksetzen
 

Raumplanerprojekt:

Ein typisches Beispiel aus dem Raumplanerprojekt tritt bei einer Möbelgruppe auf. Beim Schreiben der Klasse MoebelGruppe ist belanglos, welche konkreten Möbelobjekte der Gruppe hinzugefügt werden und welche konkreten Attributwerte sie haben.

Alle in der Liste self.__komponenten auftretenden Objekte müssen aber die aufgerufene Methode bereit stellen. Für die Methode self.GibFigur() gilt das, solange sie Objekte von Klassen repräsentieren, die von der Klasse Moebel erben, denn Moebel stellt diese [hier abstrakt] bereit.

Für jedes konkrete Objekt kann daher die Methode unterschiedlich sein. Das wird möglich, da sie die [hier abstrakte] Methode GibFigur() von Moebel implementieren.

class MoebelGruppe(Moebel):
    def __init__(self,
                 xPos=100,
                 yPos=200,
                 winkel=0,
                 farbe='red'):
        """Konstruktor ..."""
        self.__komponenten=[]
        Moebel.__init__(self, xPos, yPos, 0, 0, winkel, farbe, True)

    def GibFigur(self):
        """definiert die zu zeichnende Figur"""
        path = self.GibZeichenPfad()
        for moebel in self.__komponenten:
            path.AddPath(moebel.GibFigur())
        return self.Transformiere(path)

    ...
        

<== Zur Übersicht der Begriffe ==>

© Claus Albowski