Vererbung ist ein weiteres wichtiges Konzept objektorientierter Programmiersprachen. Dabei gibt es übergeordnete Klassen, auch Superklasse oder Elternklasse, die ihre Eigenschaften (Attribute) und Fähigkeiten (Methoden) an untergeordnete Klassen, auch Basisklasse oder Kindklasse, mitgeben. Man spricht vom vererben.
In diesem Artikel lernst Du das Konzept der Vererbung mit Super- und Basisklassen kennen und wendest sie beim Programmieren in Python an.
Jedes Tier hat als Eigenschaft ein Gewicht.
Man erstellt eine Elternklasse, deren Eigenschaften und Fähigkeiten für alle Kindklassen auch gültig sind.
Ein Schaf zur Aufzucht hat zusätzlich zum Gewicht bspw. die einzigartige Eigenschaft Region 🌍 und Namen.
Die Eigenschaft Gewicht wird von der Elternklasse Tier geerbt.
Ein Vogel hat zusätzlich zum Gewicht bspw. die einzigartige Eigenschaft einer Flügelspannweite ↔ und der größe 🥚.
Die Eigenschaft Gewicht wird von der Elternklasse Tier geerbt.
Tier
und Nutztiere
sowie Waldtiere
.class Tier: def __init__(self, gewicht = 2.5): self.gewicht = gewicht def __str__(self): return self.__class__.__name__ + f" ⚖ {self.gewicht} kg" class Vogel(Tier): def __init__(self, gewicht, spannweite = 25, gelegegroesse = 3): super().__init__(gewicht) #alternativ: Tier.__init__(self, gewicht) self.spannweite = spannweite self.gelegegroesse = gelegegroesse
Die Elternklasse enthält übergeordnete Eigenschaften.
Vererbung wird in Python verwirklicht, in dem die Elternklasse(n) dem Kindklassennamen in Klammern hinten angestellt wird.
Konstruktoren in der Kindklasse werden verwendet, um zusätzliche Attribute zu initialisieren. Um dabei den Konstruktor der Elternklasse aufzurufen, verwendet man das Schlüsselwort super()
.
Eine dreistufige Vererbung mit der Großelternklasse Tier, den Elternklassen Nutztiere und Wildtiere, sowie den Kindklassen Säugetier und Vogel.
Tier
mit den Attributen alter
und
gewicht
. Programmiere den Konstruktuor und die to-String-Methode.Nutztiere
als Kindklasse der Klasse Tier
. Wähle als Attribute
haltungsart
und
region
.Wildtiere
als Kindklasse der Klasse Tier
. Wähle als Attribute
nahrung
und
feinde
.Schaf
als Kindklasse der Klasse Nutztier
. Wähle als Attribute:
name
und
gewicht
.Vogel
als Kindklasse der Klasse Nutztier
. Wähle als Attribute:
name
spannweite
und
gelegegroesse
.Für ein Restaurant soll eine Speisekarte programmiert werden.
Menüartikel
mit den Attributen
name
, preis
und kategorie
.Speisen
mit den Attributen
vegetarisch
, vegan
und zutatenliste
sowie Getränke
mit den Attributen volumen
und alkoholisch
.Zutaten
mit den Attributen name
und menge
.Speisekarte
mit dem Attribut material
und der Methode addItem(item)
sowie einer ArrayList zutatenListe
vom Typ Zutat
. Kennzeichne den Beziehungstyp zwischen der Klasse Zutat
und Pizza
als Kommentar in deinem Programm.zutatenListe
und ersetze das Attribut zutatenListe
durch den Methodenaufruf createZutatenListe(name)
.createZutatenListe(String name)
. Erzeuge mit Hilfe der switch-case-Struktur die einzelnen Zutaten mit Mengen als Objekte.Test
wird eine Liste mit fünf verschiedenen Pizzen erzeugt. Gib alle Pizzen mit Preis und Zutaten als Menü aus.Menue
wird für verschiedene Menüs erstellt.Zutat
in dem package packagePizza
mit den Attributen
name
und menge
.Pizza
mit folgenden Attributen: name
und preis
sowie einer ArrayList zutatenListe
vom Typ Zutat
. Kennzeichne den Beziehungstyp zwischen der Klasse Zutat
und Pizza
als Kommentar in deinem Programm.zutatenListe
und ersetze das Attribut zutatenListe
durch den Methodenaufruf createZutatenListe(name)
.createZutatenListe(String name)
. Erzeuge mit Hilfe der switch-case-Struktur die einzelnen Zutaten mit Mengen als Objekte.Test
wird eine Liste mit fünf verschiedenen Pizzen erzeugt. Gib alle Pizzen mit Preis und Zutaten als Menü aus.Menue
wird für verschiedene Menüs erstellt.das Objekt, -e | Objekte haben Eigenschaften (engl. states) und Fähigkeiten (engl. behaviors). Diese werden in einer zugehörigen Klasse festgelegt. |
die Klasse, -n | Eine Klasse beschreibt, welche Eigenschaften und Fähigkeiten ein Objekt haben darf und stellt somit den Bauplan von Objekten bereit. |
die Methode, -en | Fähigkeiten von Objekten werden in Methoden beschrieben. |
das Attribut, -en | Eigenschaften von Objekten werden in Attributen (Variablen) festgelegt. |
der Modifier, ~ | legt die Sichtbarkeit von Eigenschaften und Fähigkeiten fest, also ob diese bspw. privat oder öffentlich zugänglich sind |
die set-, get-Methoden, - | Methoden die die abgeschirmten Attribute setzen oder auslesen. |
der Konstruktor, -en | Methode welche die Initialisierung der Parameter bei Objekterzeugung ermöglicht |
die Assoziation, -en | Sie beschreibt eine einfache Bindung. Objekte verschiedener Klassen stehen in Beziehung, existieren aber unabhängig voneinander. |
die Aggregation, -en | Sie beschreibt eine stärkere Bindung. Objekte bestehen aus anderen Objekten. |
die Komposition, -en | Sie beschreibt die stärkste Bindung. Objekte bestehen aus anderen Objekten, welche alleine nicht existieren können. |