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:

AWP - Vererbung 01

Neue Klassenstruktur

AWP - Vererbung 02

Syntax

AWP - Vererbung 03

Beispiele

AWP - Vererbung 04

AWP - Vererbung 05

AWP - Vererbung 06

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

AWP - Vererbung 07

Unterklassen können nicht nur von einer, sondern auch von mehreren Oberklassen erben. Diesen Zusammenhang bezeichnet man als Mehrfachvererbung.

AWP - Vererbung 08

Klassenarten

  • Klassen, von denen keine Instanzen gebildet werden, nennt man abstrakte Klassen.
  • Klassen, von denen Objekte erzeugt werden, bezeichnet man als konkrete Klassen.

AWP - Vererbung 09

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:

AWP - Vererbung 10

  • Komposition zwischen Rechnung und PositionenListe.
  • Assoziation zwischen Kunde und Rechnung.
  • Vererbungsbeziehung zwischen Person und Kunde.