C-Programmierung

Vererbung und Ableitung

Aggregation | | Basisklassen

Klassen können hierarchisch aufeinander aufbauen.

Dies bedeutet, dass in einer Klassenhierachie auf der untersten Ebene Basisfunktionalität implementiert ist, die bei jeder zusätzlichen Ebene um spezifische Methoden erweitert werden kann (sog. Spezialisierung). Die erweiterten Klassen nennt man Ableitung.

Von Ebene zu Ebene werden die Methoden und Definitionen der Basisklasse an die abgeleitete Klasse durch Vererbung weitergegeben.

class Derived : public Base
{
   ...
};

Eine derart abgeleitete Klasse besitzt sämtliche Methoden und Definitionen der Basisklasse (inkl. Konstruktor und Destruktor). Zusätzlich können weitere eigene Methoden mittels Spezialisierung definiert werden.

Die Gesamtheit aller abgeleiteten Klassen nennt man Klassenhierarchie.

Unterscheidung von Ableitung und Aggregation: Seien zwei Klassen A und B gegeben. Dann gilt

  • B ist abgeleitet von A → B ist ein “A”-Object
  • A besitzt das Aggregat B → A hat ein “B”-Object

Rule-of-Thumb: Prefer Compositing over Inheritance!

Beispiel:

Vererbung: Ein Manager ist ein Mitarbeiter, der wiederum ein Mensch ist
Aggregation: Mitarbeiter ist ein Mensch, der Zuständigkeiten hat, wobei ein Manager einen erweiterten Satz an Zuständigkeiten hat

Letzteres passt sich flexibler unterschiedlichen Zuständigkeiten an.

Aggregation | | Basisklassen

Options: