empros gmbh - process & information management services
1009-chatExperience is the hardest kind of teacher.
It gives you the test first and the lesson afterward.

-Susan Ruth

Vererbung und Spezialisierung

Heuristik

Vererbung sollte ausschliesslich zur Modellierung von Spezialisierungs-Hierarchien verwendet werden.

Erklärung

Wenn eine Klasse B von Klasse A erbt und eine weitere Klasse C von B erbt, so erbt Klasse C indirekt, via Klasse B, von Klasse A. D.h. die Vererbungs-Beziehung ist stets transitiv. Daraus folgt auch, dass eine Klasse gleichzeitig sowohl als Basisklasse als auch als abgeleitete Klasse auftreten kann: Klasse B ist sowohl eine abgeleitete Klasse (Subklasse der Klasse A) als auch eine Basisklasse (Superklasse von Klasse C). Die Vererbungsbeziehung sollte dabei als Kategorisierungs-Hierarchie betrachtet werden.

Wenn Vererbung dazu verwendet wird, um eine Spezialisierungs-Beziehung auszudrücken - und Vererbung sollte eben ausschliesslich zu diesem Zweck verwendet werden - dann ist es nicht zulässig, dass eine abgeleitete Klasse Funktionalität, die sie von einer ihrer Basisklassen erbt, zu entfernen. Ansonsten könnte jede Klasse als Spezialisierung einer anderen Klasse definiert werden. Dann könnten wir z.B. sagen, dass Affen eine speziellere Form von Bananen sind, die jedoch weder gelb_werden noch geschält_werden können, dafür jedoch hüpfen und springen.

Vgl. hierzu auch das Liskov'sche Substitutionsprinzip, dass einfach formuliert folgendes besagt: "Überall dort, wo das Allgemeine (Basisklasse) erlaubt ist, darf das Speziellere (Subklasse) verwendet werden." Oder anders formuliert: "Objekte der abgeleiteten Klasse können stets an die Stelle von Objekten der Oberklasse treten"
Verletzen wir die obige Faustregel, dann brechen wir i.d.R. auch mit dem Liskov Substitutionsprinzip.