prev up next

Previous: Externes Sortieren Up: skript Next: Abstrakte Datentypen

Objektorientierte Programmierung

Die Modellierung eines Ausschnittes der realen Welt geschieht durch eine Klassenhierarchie, d.h., gleichartige Objekte werden zu Klassen zusammengefasst, von denen durch Vererbung Spezialisierungen abgeleitet werden. Gleichartigkeit bedeutet die Übereinstimmung von objektbezogenen Datenfeldern und objektbezogenen Methoden. Die abgeleitete Klasse erbt von der Oberklasse die dort definierten Datenfelder und Methoden, fügt ggf. eigene hinzu und kann ihnen ggf. durch Überschreiben eine neue Bedeutung geben. Jede Klasse besitzt einen oder mehrere Konstruktoren, die für das Instanziieren ihrer Objekte zuständig sind. Wird kein eigener Konstruktor definiert, existiert automatisch der vom System bereitsgestellte Default-Konstruktor (ohne Parameter).

Datenfelder, die mit dem Schlüsselwort static deklariert werden, heißen Klassenvariable. Sie existieren pro Klasse genau einmal (unabhängig von der Zahl der kreierten Instanzen) und alle Objekte dieser Klasse können auf sie zugreifen.

Die Sichtbarkeit von Variablen und Methoden wird mit Hilfe von Modifiern geregelt. Ist ein Element einer Klasse mit keinem der Schlüsselworte public, private oder protected deklariert, dann ist es nur innerhalb von Klassen desselben Pakets sichtbar. Das Standardpaket besteht aus allen Klassen im aktuellen Arbeitsverzeichnis. Eigene Pakete können beispielsweise durch

package meinpaket;
angelegt und und eine dort definierte Klasse kann später durch
import meinpaket.MeineKlasse;
importiert werden.

Die folgende Tabelle zeigt die Umstände, unter denen Klassenelemente der vier Sichtbarkeitstypen für verschiedene Klassen erreichbar sind.

Erreichbar für: public protected paketsichtbar private
Dieselbe Klasse ja ja ja ja
Subklasse im selben Paket ja ja ja nein
Keine Subklasse, selbes Paket ja ja ja nein
Subklasse in anderem Paket ja ja nein nein
Keine Subklasse, anderes Paket ja nein nein nein

Source: Datum.java     JavaDoc: Datum.html     Source: DatumTest.java     JavaDoc: DatumTest.html     Applet: Source: Person.java     JavaDoc: Person.html     Source: PersonTest.java     JavaDoc: PersonTest.html     Applet: Source: Student.java     JavaDoc: Student.html     Source: StudentTest.java     JavaDoc: StudentTest.html     Applet: Source: PersonStudentTest.java     JavaDoc: PersonStudentTest.html     Applet:

Statisches Binden bezeichnet den Vorgang, einem Objekt zur Übersetzungszeit den Programmcode seiner Methoden zuzuordnen; dynamisches Binden bezeichnet den Vorgang, einem Objekt zur Laufzeit den Programmcode seiner Methoden zuzuordnen.

Folgende Fälle können auftreten:

Auf der folgenden Seite verdeutlicht eine Grafik das Zusammenspiel zwischen den Klassen Person und Student und ihrer Instanzen. Auf dem Laufzeitkeller führt von der Variable s ein Verweis auf die Speicherfläche, welche eine Instanz vom Typ Student aufnimmt. Da einige Bestandteile von Student (nämlich vorname, nachname, geb_datum und fach) selbst wieder Objekte sind, führen dorthin weitere Verweise; die Instanzvariablen matr_nr und jsb werden hingegen explizit gespeichert. Ein weiterer Verweis (gezeichnet von links nach rechts) führt zu den Klassenvariablen und Klassenmethoden; von dort sind die Oberklassen erreichbar, von denen geerbt wurde.


Source: Kind.java     JavaDoc: Kind.html     Applet:


prev up next
Previous: Externes Sortieren Up: skript Next: Abstrakte Datentypen