Abstrakte Klasse
aus Wikipedia, der freien Enzyklopädie
| Gesichtet | ||
Dies ist die letzte gesichtete Version,
(zeige alle), freigegeben am 12. Mai 2008. Die Seite kann bearbeitet werden.
|
Abstrakte Klasse ist ein Begriff aus der objektorientierten Programmierung. Er bezeichnet eine Klasse, von der keine Objekte instanziert werden können. Abstrakte Klassen enthalten meist nur die Signaturen (Name, Rückgabewert, Parameter, Ausnahmen) von Methoden, nicht aber ihren Rumpf (Programmcode) - da nicht alle Methoden implementiert sind, ist klar, dass diese Klassen nicht instanziiert werden können. Im Unterschied dazu können sog. Interfaces (Schnittstellen) nur Methodensignaturen und keine Variablen bzw. implementierte Methoden enthalten. Sind in einer abstrakten Klasse nur die Signaturen spezifiziert, so spricht man von einer rein abstrakten Klasse.
Als Basisklassen in einer Klassenhierachie können abstrakte Klassen grundlegende Eigenschaften ihrer Unterklassen festlegen, ohne diese bereits konkret zu implementieren. Leitet eine Klasse von einer abstrakten Klasse ab, müssen alle vererbten abstrakten Methoden überschrieben und implementiert werden, um nicht selbst wiederum abstrakt zu sein.
Da die einzige Einschränkung abstrakter Klassen darin besteht, dass sie nicht instanziert werden können, kann man sie andernsorts im Programmcode als Typ von Attributen und Parameter verwenden. Diesen Attributen und Parametern können Instanzen von Klassen zugewiesen werden, die Unterklassen der abstrakten Klasse sind polymorph. Dadurch entsteht ein hohes Maß an Flexibilität und Wiederverwendbarkeit des Programmcodes.
Eine verbreitete Verwendung liegt auch darin, abstrakte Klassen als Behälter für Konstanten zu nutzen.
[Bearbeiten] Beispiele
[Bearbeiten] Geometrie
Zweidimensionale geometrische Figuren haben gemeinsam, dass sie über eine Fläche verfügen. Je nach Figur wird diese Fläche aber unterschiedlich berechnet.
Wird eine abstrakte Basisklasse namens "GeometrischeFigur" angelegt, kann mit einem Methodenrumpf für eine Funktion "berechneFlaeche" festgelegt werden, dass alle Unterklassen eine entsprechende Methode implementieren müssen. Zum Beispiel wird eine Klasse "Rechteck" die Länge mit der Breite multiplizieren, in einer Klasse "Rechtwinkliges Dreieck" wird die Länge mit der Höhe multipliziert und dann halbiert.
Durch die Klassenhierachie mit einer abstrakten Basisklasse hat man sich nun die Möglichkeit eröffnet, andernorts Funktionen zu erstellen, die ein Objekt vom Typ "GeometrischeFigur" entgegen nehmen und auf ihm die Funktion "berechneFlaeche" aufrufen, völlig unabhängig davon, ob es sich um Dreiecke, Rechtecke oder Kreise handelt. Die Funktionen sind somit für sämtliche geometrische Figuren nutzbar und weisen einen hohen Grad an Flexibilität und Wiederverwendbarkeit auf.
[Bearbeiten] Datenbank-Zugriff
Ein klassisches Beispiel für die Anwendung abstrakter Klassen kommt aus dem Bereich der Datenbank-Applikationen. Sämtliche Methoden für den Zugriff auf die Datenbank werden in einer abstrakten Klasse definiert. Für jeden Datenbank-Typen kann man nun eine konkrete Klasse programmieren, die alle geerbten Zugriffsmethoden implementiert. In der Applikation muss nur an einer einzigen Stelle die konkret implementierte Klasse bekannt sein - dort wird das Objekt erzeugt. Anschließend wird es im gesamten restlichen Programmcode als Objekt vom Typ der abstrakten Klasse behandelt.
Die konkrete Klasse kann als Property in einem File außerhalb des Programmcodes angegeben werden. So ist kein erneutes Kompilieren nach ausgetauschter Datenbank nötig und es entsteht eine hohe Wiederverwendbarkeit der Applikation.

