Klasse (objektorientierte Programmierung)

Klasse (objektorientierte Programmierung)

Klasse ist in der Objektorientierung ein abstrakter Oberbegriff für die Beschreibung der gemeinsamen Struktur und des gemeinsamen Verhaltens von realen Objekten (Klassifizierung) im Softwaredesign: reale Objekte werden auf die für die Software wichtigen Merkmale abstrahiert. Im Zusammenspiel mit anderen Klassen ermöglichen sie die Modellierung eines abgegrenzten Systems in der objektorientierten Analyse und dem objektorientierten Design.

Die Klasse dient als Bauplan für Abbildung von realen Objekten in Softwareobjekte, sog. Instanzen. Die Klasse fasst hierfür notwendige Eigenschaften (Attribute) und zur Manipulation der Eigenschaften notwendige Methoden zusammen.

Klassen können von anderen Klassen abgeleitet werden (Vererbung). Dabei erbt die Klasse einige oder alle Eigenschaften (Attribute) und Methoden von der vererbenden Klasse (Basisklasse). Die abgeleitete Klasse (Subklasse) kann Methoden der Basisklasse überschreiben (sofern diese es erlaubt; die Möglichkeit, dies zu verbieten, hängt von der Programmiersprache ab), d. h. die Methode neu implementieren, und eigene Methoden und Daten (Attribute) hinzufügen. Ein Objekt der abgeleiteten Klasse kann überall verwendet werden, wo ein Objekt der Basisklasse erwartet wird (Liskovsches Substitutionsprinzip); überschriebene Methoden werden dann auf der abgeleiteten Klasse ausgeführt (Polymorphie). Weiterhin ist es auch möglich, die vorhandene Basismethode zu erweitern, d. h. den vorhandenen Code der Basisklasse nicht komplett zu überschreiben (durch Neuimplementierung), sondern durch Aufruf der Basisklassenfunktion weiter zu benutzen. Dabei muss dem Programm mittels der korrekten Notation mitgeteilt werden, dass man die Basisklasse aufrufen möchte (in Java z. B. durch Verwendung des Schlüsselwortes „super“, in C++ wird der Klassenname der Basisklasse und zwei Doppelpunkte dem Funktionsaufruf vorangestellt).

Ein ähnliches Werkzeug, welches zum systematischen Verwalten von Attributen verwendet werden kann, ist eine Struktur. Bei Programmiersprachen, welche keine Objektorientierung unterstützen (z. B. C), ist dies die einzige Möglichkeit.

Beispiele

Ein sehr einfaches Beispiel ist das einer Lampe. In der realen Welt gibt es verschiedene Formen von Lampen, z. B. Stehlampen, Schreibtischlampen, Taschenlampen. Jede dieser Lampen hat Eigenschaften (Attribute), wie Farbe, Form und Größe. Für die Abbildung der Lampe in der Software abstrahiert man nun aus den Eigenschaften des realen Objektes „Lampe“ die für den Zweck der Software wichtigen Eigenschaften in eine Klasse. Diese bildet nun mit geeigneten Methoden zur Manipulation der Eigenschaften eine Art Konstruktionsplan.

Ist der Zweck der Software beispielsweise die Simulation eines Experimentes mit einer Lichtquelle, so ist für die Abbildung der Lampe in der Software die Farbe und Form der Lampe uninteressant, wohl aber, ob das Licht an oder aus ist. Für eine Software zur Innenraumplanung eines Gebäudes ist die Eigenschaft, ob das Licht an oder aus ist uninteressant, es interessiert viel mehr Form, Größe und Farbe der Lampe. Ein Objekt Lampe wird daher im Kontext zur Anwendung unterschiedlich klassifiziert:

Die Klasse Lampe in der Simulationssoftware:

  • hat das Attribut Licht an/aus
  • hat die Methode Lichtschalter

Weitere benötigte Methoden zur Veränderung des Experimentes:

  • hat die Methode Lampe hinzufügen
  • hat die Methode Lampe entfernen

Die Klasse Lampe in der Innenraumplanungssoftware:

  • hat das Attribut Form (z. B. Schreibtischlampe, Stehlampe)
  • hat das Attribut Größe (z. B. groß, mittel, klein, hoch)
  • hat das Attribut Farbe (z. B. rot, grün, blau)
  • hat die Methode Form_ändern
  • hat die Methode Größe_ändern
  • hat die Methode Farbe_ändern
  • hat die Methode Position_ändern

Ebenfalls werden hier Methoden zum Entfernen und Hinzufügen von Lampen benötigt:

  • hat die Methode Lampe hinzufügen
  • hat die Methode Lampe entfernen

In der jeweiligen Software wird nun durch die Methode hinzufügen eine Lampe erstellt und bekommt einen Namen (z. B. Versuchslampe_1 oder Stehlampe_Wohnzimmer) als Referenz. Über diese kann sie später in der Simulationssoftware ein- und ausgeschaltet bzw. in der Innenraumplanungssoftware in Form, Größe, Farbe oder Position verändert werden.

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.

Siehe auch


Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Vererbung (objektorientierte Programmierung) — Vererbung dargestellt mittels UML. Die abgeleitete Klasse hat die Attribute x und y und verfügt über die Methoden a und b (im UML Sprachgebrauch Operationen a und b). Die Vererbung (engl. Inheritance) ist eines der grundlegenden Konzepte der… …   Deutsch Wikipedia

  • Methode (objektorientierte Programmierung) — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden… …   Deutsch Wikipedia

  • Kapselung (objektorientierte Programmierung) — Die Objektorientierung, kurz OO, ist ein Ansatz zur Entwicklung von Software, der darauf beruht, die zu verarbeitenden Daten anhand ihrer Eigenschaften und der möglichen Operationen zu klassifizieren. Im Vergleich zu Ansätzen, bei denen… …   Deutsch Wikipedia

  • Schnittstelle (objektorientierte Programmierung) — In der objektorientierten Programmierung (OOP) vereinbaren Schnittstellen (engl. Interface) gemeinsame Signaturen von Methoden oder Funktionen, welche in unterschiedlichen Klassen implementiert werden. Die Schnittstelle gibt an, welche Methoden… …   Deutsch Wikipedia

  • Überschreiben (objektorientierte Programmierung) — Der Begriff Überschreiben (engl. override, wörtlich außer Kraft setzen, überwinden) beschreibt eine Technik in der objektorientierten Programmierung, die es einer Unterklasse erlaubt, eine eigene Implementierung einer von der Oberklasse geerbten… …   Deutsch Wikipedia

  • Objektorientierte Programmierung — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee dabei ist, Daten und Funktionen, die auf diese Daten angewandt werden können, möglichst eng in einem… …   Deutsch Wikipedia

  • Objektorientierte Programmiersprache — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden… …   Deutsch Wikipedia

  • Objektorientierte Softwareentwicklung — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden… …   Deutsch Wikipedia

  • Klasse (Programmierung) — Unter einer Klasse (auch Objekttyp genannt) 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 die Abbildung von realen Objekten… …   Deutsch Wikipedia

  • Aspekt-orientierte Programmierung — Die Artikel Aspektorientierte Programmierung und Cross Cutting Concern überschneiden sich thematisch. Hilf mit, die Artikel besser voneinander abzugrenzen oder zu vereinigen. Beteilige dich dazu an der Diskussion über diese Überschneidungen.… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”