Einführung in Unterklassen im Rahmen der Lehre der objektorientierten Programmierung. (objektorientiert, Vererbung, objektorientierte Programmierung, Unterklassen), Lektion, Seite 721591
http://www.purl.org/stefan_ram/pub/formal_unterklassen_de ist die kanonische URI dieser Seite.
Stefan-Ram-Startseite

Unterklassen

Eine Klasse kann in vielen formalen Sprachen als eine Unterklasse  einer anderen Klasse gekennzeichnet werden. Damit wird festgelegt, daß die Unterklasse alle Operationen der Oberklasse implementiert. Das wird auch von der formalen Sprache sichergestellt, indem zunächst sämtliche Operationen der Operklasse automatisch von der Unterklasse übernommen werden.

Solch eine Kennzeichnung garantiert leider nicht, daß die Unterklasse  auch ein semantischer Untertyp  ihrer Oberklasse ist. Damit die Unterklasse auch ein semantischer Untertyp ist, müßte jedoch noch zusätzlich sichergestellt sein, daß die Operationen der Unterklasse auch die Spezifikation der Operationen der Oberklasse erfüllen. Das ist aber durch die meisten Sprachen nicht garantiert, weil Signaturen in einer Unterklasse auch anders implementiert werden können als in der Oberklasse und es dabei auch möglich ist, daß sie dann die Spezifikation der entsprechenden Signaturen der Oberklasse nicht mehr erfüllen. Ein Autor einer Unterklasse sollte aber das aber vermeiden.

Eine Unterklasse  ist ein deklarierter Untertyp  und ein formaler Untertyp. Sie sollte  auch ein semantischer Untertyp  sein.

Prorgrammiersprachen können zwar sicherstellen, daß eine Unterklasse ein formaler Untertyp ist, aber nicht, daß sie ein semantischer Untertyp ist. Deswegen muß der Autor einer Unterklasse selber darauf achten, daß dieses Kriterium erfüllt wird, also daß die Signaturen der Unterklasse auch die Spezifikationen der Oberklasse erfüllen.

Da eine Unterklasse ein Untertyp sein sollte und diese Regel auch meistens beachtet wird, kann im allgemeinen davon ausgegangen werden, daß dies so ist und es kann als eine Fehler angesehen werden, wenn es nicht beachtet wird. Die regelmäßige Beachtung dieser Empfehlung führt auch dazu, daß der Unterschied zwischen dem Begriffe „Unterklasse“ und dem Begriff „Untertyp“ nicht immer klar wird.

Eine Oberklasse wird auch als Basisklasse  bezeichnet.

Um auszudrücken, daß B  eine Unterklasse der Klasse A  ist, kann man auch sagen, die Klasse B  sei eine A -Klasse.

In UML  gibt es einen speziellen Pfeil  um eine Unterklassen -Beziehung zu kennzeichnen. Da diese bereits ausdrückt, daß die Unterklasse die Signaturen der Oberklasse enthält, müssen diese Signaturen dann nicht erneut in der Unterklasse angegeben werden.

Eine Klasse und eine Unterklasse [UML class diagram]
.------------------------. 
| | 
| Klasse | 
| | 
|------------------------| 
|------------------------| 
| + f( x : int ) : int | 
'------------------------' 

/_\ 

.------------------------. 
| | 
| Unterklasse | 
| | 
|------------------------| 
|------------------------| 
| + g( x : int ) : int | 
'------------------------'

Die Unterklasse des dargestellten Klassendiagramms enthält also sowohl die Signatur "f( x : int ) : int" als auch die Signatur "g( x : int ) : int", obwohl das Rechteck der Unterklasse nur die zweite Signatur enthält.

Vererbung und Überschreiben

Die automatische Übernahme der Methoden einer Oberklasse in einer Unterklasse wird auch Vererbung  (engl.: “inheritance ”) genannt. Man sagt auch, daß eine Unterklasse die Signaturen und die Implementationen ihrer Oberklasse erbt.

Wenn eine Unterklasse nur die ererbten Operationen ihrer Oberklasse enthielte, dann wäre sie immer semantisch. Sie kann jedoch einzelne Signaturen überschreiben, also das Verhalten der ererbten Signaturen neu festlegen. Diese Festlegung könnte so erfolgen, daß das Verhalten einer Signatur nicht mehr zu der Spezifikation der entsprechenden Operation der Oberklasse paßt. Dann ist die Unterklasse nicht mehr semantisch, was vermieden werden sollte. Es ist kein Mangel, eine ererbte Signatur zu überschreiben, aber dies sollte so geschehen, daß die Spezifikation der zugehörigen Operation der Oberklasse auch für das neu festgelegte Verhalten gilt.

Von der Stefan-Ram-Startseite ausgehend finden sich oft noch mehr Informationen zu Themen, die auf einer Seite angesprochen wurden. (Eine Verbindung zur Stefan-Ram-Startseite befindet sich ganz oben auf dieser Seite.)  |   Seiteninformation und Impressum  |   Formular für diese Seite betreffende Mitteilungen an den Herausgeber  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. slrprd, PbclevtugFgrsnaEnz