Klasse (objektorientierte Programmierung)

aus Wikipedia, der freien Enzyklopädie

Wechseln zu: Navigation, Suche

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

Persönliche Werkzeuge
Buch erstellen