Objektorientierte Programmierung: Vererbung I

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

Eines der wichtigsten Merkmale der objektorientierten Programmierung ist die Vererbung. Dank der Vererbung kann man für ein Objekt eine Basisklasse erstellen, die grundlegende Eigenschaften und Methoden für dieses Objekt bereitstellt. Benötigen Sie nun ein weiteres Objekt, das auf dem ersten Objekt aufbaut, aber weitere oder geänderte Eigenschaften und Methoden enthält, müssten Sie ohne Vererbung die gleiche Klasse nochmal erstellen und nach ihren Wünschen anpassen. Dank Vererbung brauchen Sie in der Klasse für das neue Objekt jedoch nur die Erweiterungen und Änderungen zu definieren. Den Rest verwenden Sie von der ersten Klasse – und brauchen eine Menge Code nur an einer Stelle zu warten.

Sie können natürlich, genau wie bei Tabellen einer Datenbank, ein Objekt erstellen, das alle denkbaren Eigenschaften und Methoden liefert (beziehungsweise im Fall einer Tabelle entsprechende Felder enthält). Ein Beispiel wäre eine Tabelle, die zunächst nur Personendaten enthält, die dann aber um Daten für verschiedene Arten von Personen erweitert wird – für Mitarbeiter, Kunden et cetera.

In der Tabelle blieben dann, je nachdem, ob man einen Mitarbeiter oder einen Kunden pflegen möchte, die jeweils für den anderen Personentyp vorgesehenen Felder leer. Damit diese nicht versehentlich gefüllt werden, würde man dafür verschiedene Formulare vorsehen, von denen eines nur die Basisdaten plus die Mitarbeiterfelder und ein anderes nur die Basisdaten plus die Kundenfelder anzeigt.

Im Datenbankentwurf würde man hier nun eine Tabelle namens tblPersonen erstellen und für die jeweiligen Spezialisierungen Tabellen wie tblKunden oder tblMitarbeiter. Diese würden dann per 1:1-Beziehung miteinander verknüpft werden, damit nicht etwa die Daten eines Datensatzes der Tabelle tblKunden mehreren Datensätzen der Tabelle tblPersonen zugeordnet werden können und umgekehrt. Das Ergebnis sähe dann etwa in einer Access-Datenbank wie in Bild 1 aus.

Spezialisierung in einem Datenmodell

Bild 1: Spezialisierung in einem Datenmodell

In der objektorierten Programmierung sieht es ähnlich aus: Auch hier könnten Sie natürlich eine Klasse entwerfen, die sowohl die Basisdaten einer Person aufnehmen als auch die speziellen Daten für Mitarbeiter oder Kunden. Allerdings wird es dann schwer, bei der Programmierung immer nur genau die für den jeweiligen Typ gültigen Eigenschaften und Methoden zu nutzen, wenn immer alle Member etwa per IntelliSense angeboten werden.

Eine Alternative wäre es, jeweils eine Klasse für die Kunden und eine für die Mitarbeiter zu erstellen. Dabei würden beide jedoch eine Reihe identischer Eigenschaften enthalten wie zum Beispiel Vorname und Nachname. Und vielleicht gibt es auch noch Methoden, die Sie in beiden Klassen implementieren würden – wie etwa GeburtstagskarteSchicken. Diese müssten Sie dann erstens doppelt anlegen und zweitens Änderungen immer direkt in zwei Klassen durchführen.

Und hier kommt die Vererbung ins Spiel – auch die Ableitung von Klassen genannt: Sie erstellen dabei genau wie bei der Basistabelle für die Personendaten erst einmal eine Basisklasse etwa namens Person. Diese stellt Eigenschaften bereit, mit denen Sie Daten wie Vorname oder Nachname einstellen können.

Wenn Sie nun einen Kunden anlegen möchten, benötigen Sie eine weitere Klasse: nämlich eine solche, die von der Klasse Person erbt beziehungsweise davon abgeleitet ist und die zusätzlich die für einen Kunden spezifischen Eigenschaften und Methoden hinzufügt. Diese wollen wir schlicht Kunde nennen. Das Gleiche erledigen wir für die spezielle Ausprägung einer Person namens Mitarbeiter – wir legen eine neue Klasse namens Mitarbeiter an, die von der Klasse Person erbt und ihre eigenen Eigenschaften und Methoden beisteuert.

Vererbung programmieren

 

Schreibe einen Kommentar