Python Tutorial
- jetzt Python programmieren lernen

Lösung Aufgabe Vererbung

In der Aufgabe zum Üben (und Testen) von Vererbung von Elternklassen und Überschreiben von Methoden sollten wir zu unserer Klasse „Pkw“ eine weitere Geschwisterklasse erstellen, den „Lkw“. Alle bisher vorhandenen Eigenschaften und Methoden sollen in die Elternklasse „Fahrzeug“ verlagert werden.

Beim Auto zusätzlich Eigenschaft: Kofferraumvolumen

Methode „parken()“ beim Lkw überschrieben mit Ausgabe: „auf Firmenhof abgestellt“.

Der Lkw soll eine zusätzliche Methode bekommen: aufladen()

Sortieren wir die Punkte, in welcher Reihenfolge diese am meisten Sinn ergeben:

  1. Elternklasse „Fahrzeug“ erstellen
  2. alle Eigenschaften und Methoden verlagern
  3. Klasse Auto mit Eigenschaft Kofferraumvolumen erweitern
  4. Klasse Lkw erzeugen
  5. Lkw-Methode parken() überschreiben
  6. Lkw-Methode aufladen() erzeugen

Gehen wir es an:

Punkt 1: Elternklasse „Fahrzeug“ erstellen

Das Erstellen einer neuen Klasse ist nicht wirklich ein Thema:

class Fahrzeug():
    """ Klasse für das Erstellen von Fahrzeugen """

Punkt 2: alle Eigenschaften und Methoden verlagern

Nach dem Verlagern müssen wir an die Vererbung denken (class Pkw(Fahrzeug):) und die __init__ in der Kindklasse entsprechend mit super() ausstatten.

class Pkw(Fahrzeug):
    """ Klasse für das Erstellen von Personenkraftwagen """

    def __init__(self, farbe, baujahr, kmstand, sitze, marke):
        super().__init__(farbe, baujahr, kmstand, sitze, marke)

Der gesamte Code (auch zum Testen, denn an der Ausgabe hat sich nichts geändert – aber funktionieren sollte es)

class Fahrzeug():
    """ Klasse für das Erstellen von Fahrzeugen """

    def __init__(self, farbe, baujahr, kmstand, sitze, marke):
        """ Eigenschaften farbe, baujahr, kmstand, Sitzplätze, Marke erfassen """
        self.farbe   = farbe
        self.baujahr = baujahr
        self.kmstand = kmstand
        self.sitze   = sitze
        self.marke   = marke

    def hupen(self):
        """ hier sollte noch eine MP3-Datei ausgegeben werden """
        print("Trööt")

    def fahren(self, km):
        """ wie viele KM gefahren werden, was dem Tachostand aufaddiert wird """
        self.kmstand += km
        print("Ich fahre ", km, " Kilometer")
        print("Insgesamt bin ich ", self.kmstand ," gefahren")

    def parken(self):
        """ neben fahren schon das größere Problem in Städten """
        print("Ich habe eine Parkplatz gefunden")

    def kilometerstand(self):
        """ Ausgabe des KM-Standes vom Tacho """
        print("Ich habe ", str(self.kmstand) ," auf dem Tacho")

class Pkw(Fahrzeug):
    """ Klasse für das Erstellen von Personenkraftwagen """

    def __init__(self, farbe, baujahr, kmstand, sitze, marke):
        super().__init__(farbe, baujahr, kmstand, sitze, marke)

trabi = Pkw("rot", 1981, 143000, 4, "Trabi")
trabi.hupen()
trabi.kilometerstand()
trabi.fahren(5)

Punkt 3: Klasse Auto mit Eigenschaft Kofferraumvolumen erweitern

Wir können auch komplett eigenständige Eigenschaften in einer Kindklasse haben, die nicht in der Elternklasse vorkommen. Das sieht man schön am Kofferraumvolumen.

Diese müssen wir wie gewohnt in der __init__ übertragen:

    def __init__(self, farbe, baujahr, kmstand, sitze, marke, kofferraumvolumen):

Und natürlich beim Erzeugen des Objekts nicht vergessen:

trabi = Pkw("rot", 1981, 143000, 4, "Trabi", 20)

Und nun noch in Eigenschaft (self nicht vergessen) speichern, damit wir darauf zugreifen können:

class Pkw(Fahrzeug):
    """ Klasse für das Erstellen von Personenkraftwagen """

    def __init__(self, farbe, baujahr, kmstand, sitze, marke, kofferraumvolumen):
        super().__init__(farbe, baujahr, kmstand, sitze, marke)
        self.kofferraumvolumen = kofferraumvolumen

Jetzt können wir diese Eigenschaft abfragen

trabi = Pkw("rot", 1981, 143000, 4, "Trabi", 20)
print(trabi.kofferraumvolumen)

Eine von der Elternklasse unabhängige Eigenschaft. Auch andere Geschwisterklassen wissen von der Eigenschaft nichts, denn diese erben nur von der Elternklasse!

Punkt 4: Klasse Lkw erzeugen

Hier kommt bisher keine große Überraschung:

class Lkw(Fahrzeug):
    """ Klasse für das Erstellen von Lastkraftwagen """

    def __init__(self, farbe, baujahr, kmstand, sitze, marke):
        super().__init__(farbe, baujahr, kmstand, sitze, marke)

Und nun ein Lkw-Objekt erstellen:

lkw_plattnase = Lkw("orange", 1999, 50000, 3, "MAN")
print(lkw_plattnase.farbe)

Am Rande bemerkt: ein klasse Artikel über „Plattnasen“ und „Langhauber“:
https://www.spiegel.de/auto/fahrkultur/warum-lastwagen-in-deutschland-und-den-usa-unterschiedlich-aussehen-a-855319.html

Punkt 5: Lkw-Methode parken() überschreiben

Und nun bekommt unsere Klasse Lkw die Methode „parken()“. Nachdem diese sich exakt gleich schreibt, wie die in der Elternklasse „Fahrzeug“ überschreibt diese die ursprüngliche Methode.

class Lkw(Fahrzeug):
    """ Klasse für das Erstellen von Lastkraftwagen """

    def __init__(self, farbe, baujahr, kmstand, sitze, marke):
        super().__init__(farbe, baujahr, kmstand, sitze, marke)

    def parken(self):
        print("auf Firmenhof abgestellt")

lkw_plattnase = Lkw("orange", 1999, 50000, 3, "MAN")
print(lkw_plattnase.farbe)
lkw_plattnase.parken()

Punkt 6: Lkw-Methode aufladen() erzeugen

Und nun noch eine zusätzliche Methode für den Lkw:

class Lkw(Fahrzeug):
    """ Klasse für das Erstellen von Lastkraftwagen """

    def __init__(self, farbe, baujahr, kmstand, sitze, marke):
        super().__init__(farbe, baujahr, kmstand, sitze, marke)

    def parken(self):
        print("auf Firmenhof abgestellt")

    def aufladen(self):
        print("habe fertig geladen")

lkw_plattnase = Lkw("orange", 1999, 50000, 3, "MAN")
print(lkw_plattnase.farbe)
lkw_plattnase.parken()
lkw_plattnase.aufladen()

Und unser kompletter Code:

class Fahrzeug():
    """ Klasse für das Erstellen von Fahrzeugen """

    def __init__(self, farbe, baujahr, kmstand, sitze, marke):
        """ Eigenschaften farbe, baujahr, kmstand, Sitzplätze, Marke erfassen """
        self.farbe   = farbe
        self.baujahr = baujahr
        self.kmstand = kmstand
        self.sitze   = sitze
        self.marke   = marke

    def hupen(self):
        """ hier sollte noch eine MP3-Datei ausgegeben werden """
        print("Trööt")

    def fahren(self, km):
        """ wie viele KM gefahren werden, was dem Tachostand aufaddiert wird """
        self.kmstand += km
        print("Ich fahre ", km, " Kilometer")
        print("Insgesamt bin ich ", self.kmstand ," gefahren")

    def parken(self):
        """ neben fahren schon das größere Problem in Städten """
        print("Ich habe eine Parkplatz gefunden")

    def kilometerstand(self):
        """ Ausgabe des KM-Standes vom Tacho """
        print("Ich habe ", str(self.kmstand) ," auf dem Tacho")

class Pkw(Fahrzeug):
    """ Klasse für das Erstellen von Personenkraftwagen """

    def __init__(self, farbe, baujahr, kmstand, sitze, marke, kofferraumvolumen):
        super().__init__(farbe, baujahr, kmstand, sitze, marke)
        self.kofferraumvolumen = kofferraumvolumen

class Lkw(Fahrzeug):
    """ Klasse für das Erstellen von Lastkraftwagen """

    def __init__(self, farbe, baujahr, kmstand, sitze, marke):
        super().__init__(farbe, baujahr, kmstand, sitze, marke)

    def parken(self):
        print("auf Firmenhof abgestellt")

    def aufladen(self):
        print("habe fertig geladen")

lkw_plattnase = Lkw("orange", 1999, 50000, 3, "MAN")
print(lkw_plattnase.farbe)
lkw_plattnase.parken()
lkw_plattnase.aufladen()

trabi = Pkw("rot", 1981, 143000, 4, "Trabi", 20)
print(trabi.kofferraumvolumen)
trabi.hupen()
trabi.kilometerstand()
trabi.fahren(5)

Weiterempfehlen • Social Bookmarks • Vielen Dank

Bitte unterstützen Sie dieses Projekt

Sie können dieses Projekt in verschiedenen Formen unterstützen - wir würden uns freuen und es würde uns für weitere Inhalte motivieren :).

Empfehlen Sie es weiter - wir freuen uns immer über Links und Facebook-Empfehlungen.

Das neue E-Book zum Kurs gibt es zum Kaufen.

Sie können uns auch eine Spende über PayPal zukommen lassen.

Bestellen Sie Bücher über folgenden Link bei Amazon:
Bücher über Python

Vielen Dank für Ihre Unterstützung