Glossar zur Objektorientierung mit Python

<== Zur Übersicht der Begriffe ==>


Vererbung


Bei der Vererbung werden die gemeinsamen Eigenschaften von verschiedenen Klassen in einer Oberklasse ausmodelliert.

Bei Wikipedia findet man die Formulierung: Die Vererbung (englisch inheritance) ist eines der grundlegenden Konzepte der Objektorientierung und hat große Bedeutung in der Softwareentwicklung. Die Vererbung dient dazu, aufbauend auf existierenden Klassen neue zu schaffen, wobei die Beziehung zwischen ursprünglicher und neuer Klasse dauerhaft ist.

Diese Formulierung ist im Kontext existierender OO Umgebungen verständlich. Es ist die Sicht von oben nach unten, also Oberklasse -> Unterklassen, die Sicht der Erweiterung.

Aus der Sicht der Modellierung ist aber dem gegenüber der Weg von existierenden Klassen zu einer neuen Oberklasse sinnvoller.

Python kennt Mehrfachvererbung. Eine Klasse kann also mehrere Oberklassen haben. Diese Klassen werden im Kopf der Klasse in Klammern hinter dem Klassennamen angegeben.


Beispiel

Wir sind ausgegangen von einem Projekt, das Klassen zum Zeichnen von Exemplaren von Stuhl, Tisch, Sessel, Schrank usw. bereitstellt. Beim Erstellen weiterer Klassen stellt man fest, dass wesentliche Teile des Programmcodes identisch sind.

Vererbung bedeutet Abstraktion

Wir suchen die gemeinsamen Attribute und Methoden aller Möbelklassen, abstrahieren dabei von einer konkreten Möbelklasse und definieren das Abstraktionsergebnis durch eine eigene Klasse Moebel. Diese stellt nun die allen anderen Klassen gemeinsamen Eigenschaften bereit und die von ihr erbenden [abgeleiteten] Klassen enthalten nur noch genau die Methoden, in denen sie sich unterscheiden. Dadurch erweitert jede erbende Klasse die Oberklasse [vererbende Klasse] um ihre speziellen Methoden.

class Stuhl(Moebel):
    """Klasse Stuhl
    ermoeglicht das Zeichnen und Bearbeiten eines
    Stuhl-Symbols fuer den Raumplaner"""

    def __init__(self,
                 xPos=20,
                 yPos=20,
                 breite=40,
                 tiefe=40,
                 winkel=0,
                 farbe="blue",
                 sichtbar=False):
        """Konstruktor mit vordefinierten Parametern;
        Konstruktor der Oberklasse aufrufen!"""
        Moebel.__init__(self, xPos, yPos, breite, tiefe, winkel, farbe, sichtbar)
        if sichtbar: self.Zeige()

<== Zur Übersicht der Begriffe ==>

© Claus Albowski