Klasse (objektorientierte Programmierung)
aus Wikipedia, der freien Enzyklopädie
Unter einer Klasse versteht man in der objektorientierten Programmierung ein abstraktes Modell bzw. einen „Bauplan“ für eine Reihe von ähnlichen Objekten.
Die Klasse dient als Bauplan für Abbildung von realen „Objekten“ in Softwareobjekte und enthält Attribute (Eigenschaften) und Methoden (Verhaltensweisen) der Objekte. Verallgemeinernd könnte man auch sagen, dass eine Klasse dem Datentyp eines Objekts entspricht.
Inhaltsverzeichnis |
[Bearbeiten] Eigenschaften
Klassen können miteinander in hierarchischen Beziehungen stehen und zu komplexen Strukturen werden. Die Gesetzmäßigkeiten nach denen diese gebildet werden beschreibt das grundlegende Konzept der Vererbung. Hier sind weiterhin die Begriffe Subklasse und Superklasse von Bedeutung, um die Verhältnisse der Klassen untereinander zu charakterisieren.
Ein ähnliches Werkzeug ist der Verbund, ein aus Komponenten verschiedener Datentypen zusammengesetzter Datentyp, welcher zum systematischen Verwalten von Attributen verwendet werden kann.
[Bearbeiten] Beispiel
Als Beispiel soll die Lampe dienen. Eine Lampe kann verschiedene Eigenschaften (Attribute) besitzen, zum Beispiel Farbe, Gewicht und ob sie leuchtet. Da man mit den Eigenschaften Farbe und Größe wenig operieren kann, wäre eine sinnvolle Verhaltensweise demnach eine Lichtschalter-Methode, die den jeweiligen Zustand von an und aus beeinflusst. Eine abstrakte Notation könnte so aussehen:
class Lampe { // Eigenschaften farbe; gewicht; licht; // Methode lichtschalter(); }
Konzepte wie die Vererbung ließen sich dadurch beschreiben, dass es ja verschiedene Arten von Lampen gibt z. B. Straßenlampen, Schreibtischlampen oder Taschenlampen. Diese spezielle Lampen wären dann Unterklassen, d h. sie würden erweiterte Attribute (z. B. Kippbarkeit) und Methoden (z. B. kippen) besitzen.
[Bearbeiten] Programmbeispiel
Das folgende Beispiel ist in der Programmiersprache C++ geschrieben:
#include <iostream> using namespace std; class Fahrzeug // Die Klasse "Fahrzeug" ist die Basisklasse. { public: virtual void bewegen() { cout << "Fahrzeug wird bewegt.\n"; } }; class Auto : public Fahrzeug // Die Klasse "Auto" ist die abgeleitete Klasse. { public: void bewegen() { cout << "Auto wird bewegt.\n"; } }; void aktion(Fahrzeug &f) { f.bewegen(); } int main() { Fahrzeug objekt1; Auto objekt2; objekt1.bewegen(); objekt2.bewegen(); aktion(objekt1); aktion(objekt2); return 0; } |
Dieses Programm definiert eine Klasse Fahrzeug und eine davon abgeleitete Klasse Auto. Die Basisklasse hat eine Methode namens bewegen(), die den Text „Fahrzeug wird bewegt.\n“ auf dem Computerbildschirm ausgibt. Das Schlüsselwort virtual bedeutet in C++ an dieser Stelle „kann überschrieben werden“. Das macht die abgeleitete Klasse dann auch, sie definiert die Methode um, so dass sie „Auto wird bewegt.\n“ ausgibt. Anschließend folgt die Definition einer eigenständigen Funktion aktion(), die ein Objekt der Basisklasse als Argument bekommt. Auf diesem Objekt wird die Methode bewegen() aufgerufen. Schließlich folgt das Hauptprogramm, das sowohl ein Objekt der Basisklasse (objekt1) als auch der abgeleiteten Klasse (objekt2) definiert, und auf beide zuerst bewegen() aufruft und danach mit Hilfe von aktion() ebenfalls noch einmal bewegen() für beide Objekte aufruft. Wird dieses Programm kompiliert und ausgeführt, so erscheint auf dem Bildschirm Fahrzeug wird bewegt. Auto wird bewegt. Fahrzeug wird bewegt. Auto wird bewegt. Auch erkennt man hier, obwohl die Funktion aktion() nur für die Basisklasse definiert ist, kann sie trotzdem mit abgeleiteten Klassen benutzt werden. |
[Bearbeiten] Erweiterung
Eine Erweiterung bzw. Abstraktion dieses Konzepts findet sich in dem Modell der abstrakten Klassen und der Metaklassen.
[Bearbeiten] Literatur
- Laura Lemay und Charles L. Perkins, Java in 21 Tagen, 2000, ISBN 3-8272-5578-3
- Peter Pepper, Programmieren lernen - Eine grundlegende Einführung mit Java, Springer, 2007, ISBN 978-3-540-72363-9
- Katharina Morik und Volker Klingspor, Informatik kompakt: Eine grundlegende Einführung mit Java, Springer, 2006, ISBN 3-540-24304-6
[Bearbeiten] Weblinks
-
Wikibooks: Python-Programmierung: Objekt-Orientiertes Programmieren und Klassen – Lern- und Lehrmaterialien - http://www.highscore.de/cpp/einfuehrung/klassen.html - allgemeine Aspekte
- http://www.php-kurs.com/objektorientierte-programmierung-klassen-objekte.htm - Abstraktion und Anschauung

