05. Vererbung
Allgemeine Vererbung
Bei der Erstellung eines Programms zur Verwaltung der Kfz einer Firma müssen verschiedene Fahrzeugtypen berücksichtigt werden:
- Omnibusse:
- Eigenschaften: …, Anzahl Sitzplätze, Anzahl Stehplätze, Tankinhalt, Verbrauch, …
- Benötigte Infos/Funktionen: …, ermittle Reichweite, ermittle Anzahl aller Mitfahrer, …
- PKW:
- Eigenschaften: …, Anzahl Sitzplätze, Tankinhalt, Verbrauch, Kofferraum-Volumen…
- Benötigte Infos/Funktionen: …, ermittle Reichweite, ermittle Anzahl aller Mitfahrer, …
- LKW:
- Eigenschaften: …, Anzahl Sitzplätze, Tankinhalt, Verbrauch, max.Zuladung, …
- Benötigte Infos/Funktionen: …, ermittle Reichweite, ermittle Anzahl aller Mitfahrer, ermittle Zuladung, …
(Hinweis: Auszug aus möglichen Eigenschaften und Funktionalitäten)
Klassendiagramm
Dafür werden entsprechende Klassen gebildet. In UML-Notation sieht dies folgendermaßen aus:
Neue Klassenstruktur
Syntax
Beispiele
Konstruktor & Destruktor
- Abgeleitete Klassen können sowohl Konstruktoren, als auch einen Destruktor haben.
- Der Konstruktor der Oberklasse wird immer vor dem Konstruktor der abgeleiteten Klasse abgearbeitet.
- Der Destruktor der Oberklasse wird immer nach dem Destruktor der abgeleiteten Klasse abgearbeitet.
Parameter für Konstruktoren
Aufruf des Konstruktors der Oberklasse in der Initialisierungsliste mit einem Parameter aus der Parameterliste des Konstruktors der abgeleiteten Klasse!
class CKFZ
{
private stringMarke;
public string getTyp() {return "Kfz";}
public string getMarke() {return Marke;}
public CKFZ(string myMarke) {Marke=myMarke;}
}
class CPKW : CKFZ
{
public CPKW(string Marke) : base (Marke) {}
}
//Testanwendung:
void Test()
{
CPKW pkw = new CPKW("Merday");
Console.WriteLine (pkw.getTyp());
Console.WriteLine (pkw.getMarke());
}
Einfachvererbung & Mehrfachvererbung
Unterklassen können nicht nur von einer, sondern auch von mehreren Oberklassen erben. Diesen Zusammenhang bezeichnet man als Mehrfachvererbung.
Klassenarten
- Klassen, von denen keine Instanzen gebildet werden, nennt man abstrakte Klassen.
- Klassen, von denen Objekte erzeugt werden, bezeichnet man als konkrete Klassen.
Abstrakte Klasse:
Wird in C# realisiert, indem die Klasse selbst als abstrakt gekennzeichnet wird: abstract class CMitarbeiter { ... }
In C# können abstrakte Klassen auch abstrakte Methoden beinhalten.
Konkrete Klasse:
Damit aus CAngestellter Objekte erzeugt werden können, müssen alle abstrakten Methoden der Oberklasse überschrieben
werden!
Klassendiagramm
In Klassendiagrammen können unterschiedliche Beziehungsarten auftreten:
- Komposition zwischen Rechnung und PositionenListe.
- Assoziation zwischen Kunde und Rechnung.
- Vererbungsbeziehung zwischen Person und Kunde.