Abstrakte Klassen und Methoden

Abstrakte Klassen

In manchen Anwendungsfällen ist eine Instanziierung, also eine Objekterzeugung, einer Klasse nicht erwünscht, da die Klasse nur als Basisvorlage für weitere Klassen dienen soll. Für diesen Zweck sind abstrakte Klassen eingeführt worden. Sie verbieten die eigene Instanziierung.

In der UML werden abstrakte Klassen durch Verwendung einer kursiven Schriftart gekennzeichnet. Im Rahmen dieses Kurses ist es auch möglich vor den Namen das eingeklammerte Signalwort "(abstract)" zu verwenden.

 

Beispiel:

Aufgrund der Tatsache, dass jede Baureihe eine spezielle Zusammensetzung verschiedenster Bauteile ist und zur Erfüllung unterschiedlichster Aufgabenstellungen eingesetzt wird, soll im Rahmen dieses Beispiels keine konkrete Instanz eines Roboters existieren. Jeder Roboter gehört einer speziellen Baureihe an. Die Klasse Roboter wird daher als abstrakt deklariert. Attribute und Methoden werden aber je nach Sichtbarkeit trotzdem vererbt.

Abstrakte Klasse

 

Polymorphismus (abstrakte Methoden)

Im Zusammenhang mit abstrakten Klassen ist auch der Polymorphismus eingeführt worden. Polymorphismus bezeichnet die Möglichkeit in einer abstrakten Klasse eine Signatur einer Methode zu hinterlegen. Die eigentlich Funktionsweise muss zwingend in der Unterklasse implementiert werden. Daher wird in der Unterklasse in jedem Fall (außer die Unterklasse ist wieder abstrakt) die Signatur wiederholt. Die Signatur der abstrakten Klasse wird abstrakte Methode genannt.

 

Beispiel:

Jeder Roboter wird verschieden eingeschaltet. In der Baureihe 6 zum Beispiel wird lediglich der Steuerungscomputer mit Strom versorgt und das dort aufgespielte Programm ausgeführt. In der Baurreihe 7 hingegen müssen zuerst verschiedene mechanische Komponenten in Stellung gebracht werden.

Da die Klasse Roboter allgemein gültig bleiben soll, wird die Methode "einschalten" abstrakt definiert. In jeder Baureihe wird so zwar die Methode "einschalten" übernommen, aber der Einschaltprozess muss explizit definiert werden.

Abstrakte Methode

Hinweis: Eine Klasse, die eine abstakte Methode enthält, muss automatisch als abstrakte Klasse deklariert werden, da die Funktionsweise der Methode in einer Unterklasse zuerst noch implementiert werden muss.