Java Begriffe

Pakete, Klassen, Objekte, Methoden, Konstruktoren, Schnittstellen

Das Unverständnis von Studenten steht oft in keinem Verhältnis zu den erwiesenen Erklärungsversuchen ihres Dozenten.

Java als objektorientierte Programmiersprache ist modular aufgebaut; einzelne Bausteine erlauben den effizienten Entwurf komplexer Programme.

  • Der Programmierer verfügt mittels Bibliotheken (Pakete) über vorgefertigte, abstrakte Algorithmen (Klassen), die er über Parameter nur noch auf ein konkretes Problem anpassen muss. Mit diesen Werten generiert er konkrete Instanzen (Objekte) der abstrakten Klassen. In der objektorientierten Programmierung stehen diese Objekte für separate Programmkomponenten.
  • Objekte gruppieren Daten und Aktionen (Methoden), die auf diese Daten angewendet werden, zu handlichen Teilstücken eines Programms. Objekte sind nach außen hin gekapselt, so das Methoden fremder Objekte diese Daten nicht ungewollt verändern können.
  • Zusätzlich zu vorhandenen Klassen können Programmentwickler weitere, neue Klassen entwerfen, aus denen sich ebenfalls Objekte ableiten lassen.

Klassen sind Basiselemente der objektorientierten Programmierung. Sie sind abstrakte Vorlagen, aus denen Objekte erzeugt werden. Klassen beinhalten Programmcode zur Modellierung von Objekten und für Aktionen (Methoden). Sie stehen für einzelne, vorgefertigte Algorithmen. Aus derartigen Teilstücken setzt sich ein Programm zusammen.

Objekte werden immer aus einer Klasse abgeleitet. Sie entsprechen einem Verbund von Datenelementen und Funktionen (Methoden), für die ein zusammenhängender Speicherbereich reserviert ist. In Objekten sind Daten und Algorithmen zur Manipulation dieser Daten zusammengefasst. Parametersätze definieren konkrete Eigenschaften der Datenelemente. Adressen der Objekte werden in Referenzvariablen gespeichert, mit denen im Programm auf diese Objekte zugegriffen werden kann.

Methoden definieren die Verhaltensweisen von Objekten einer Klasse. Methoden können Objekte erzeugen, Ausdrücke auswerten oder andere Methoden aufrufen. Eine Klasse kann mehrere Methoden mit dem selben Namen verwalten (Überladen von Methoden); sie unterscheiden sich durch Anzahl und Datentyp der Argumente. Die Liste der Argumente steht in runden Klammern (...), welche dem Namen der Methode folgen.

  • Klassen dienen als Schablone zur Erzeugung von Objekten.
  • Operationen einer Klasse werden durch ihre Methoden vorgegeben.

Konstruktoren sind spezielle Methoden einer Klasse, die der Generierung von Objekten dieser Klasse dienen. Sie tragen den gleichen Namen wie die Klasse, gefolgt von einer Parameterliste in runden Klammern. Im Allgemeinen weist ein Konstruktor Objekten Anfangswerte zu, stellt Speicherplatz bereit und generiert damit eine konkrete Instanz der Klasse. Konstruktoren werden mit dem Schlüsselwort new gestartet.

Schnittstellen stellen abstrakte Entwürfe von Methoden klassenübergreifend zur Verfügung. Durch Verknüpfung (Anweisung: implements) einer Klasse mit einer Schnittstelle verfügt erstere über alle Methoden der Schnittstelle - z.B. Reaktionen auf Aktionen mit der Maus oder Druckroutinen - und kann damit ihr Profil erweitern.

Pakete fassen Klassen, ihre Methoden und Schnittstellen mit vergleichbarer Funktionalität in Form von Bibliotheken zusammen. Die Bereitstellung von Paketen und damit der Zugriff auf zugehörige Klassen bzw. Schnittstellen erfolgt mit der Anweisung import jeweils am Beginn eines Programmquelltextes.

Die modulare Konstruktion eines Programms soll kurz am Beispiel eines Applets mit eigener, grafischer Benutzeroberfläche (GUI) erläutert werden:

  • Zunächst wird eine benutzereigene Klasse vom Typ Applet erstellt, die alle bereits vordefinierten Eigenschaften und Methoden eines Applets übernimmt; dazu gehört u.a. die Anzeige grafischer Komponenten im Bildschirmausschnitt eines Browsers.
  • Grafische Komponenten selbst, wie Textfelder, Beschriftungen, Rollbalken oder Schaltflächen, werden in Form von Objekten über spezielle Methoden direkt in die GUI eingefügt, wobei diese Objekte aus Klassen erzeugt werden, die in Bibliotheken hinterlegt sind. Die Generierung der Objekte aus den abstrakten Klassen geschieht mit Hilfe von Parametern, welche das konkrete Erscheinungsbild dieser Objekte (z.B. die Beschriftung eines Buttons oder die Größe eines Textfeldes) festlegen.
  • Layouts regeln die Anordnung aller grafischen Komponenten im Appletrahmen.
  • Aktionen, die z. B. durch Mausklick auf eine Schaltfläche (Button) ausgelöst werden, sind in Methoden festzulegen. Der Programmierer kann auf eine Vielzahl vorhandener Methoden zurückgreifen, über welche die Klassen verfügen bzw. welche mittels Schnittstellen implementiert werden können.

Vererbung

Einzelne Klassen werden in festgelegten Hierarchieebenen höheren Klassen untergeordnet, wie folgendes Beispiel verdeutlicht:

java.lang.Object

  java.awt.Component

    java.awt.Container

      java.awt.Window

        java.awt.Frame

          javax.swing.JFrame

Diese untergeordneten Klassen erben Instanzvariablen und Methoden von übergeordneten Klassen und verfügen damit über deren Eigenschaften bzw. Aktionen.

Vererbung ermöglicht es, neue Klassen auf der Basis bereits vorhandener Klassen zu abzuleiten, ohne sie komplett neu zu definieren (Schlüsselwort: extends). Sie erben alle Eigenschaften und Methoden der originalen Klasse; neue können hinzugefügt werden.

Ererbte Methoden lassen sich überschreiben (override), d. h. der Programmierer verändert einzelne Verhaltensweisen von Methoden der übergeordneten Klasse. Dazu definiert er Name, Rückgabetyp und Parameterliste in der Subklasse exakt so wie in der übergeordneten Klasse und modifiziert oder ergänzt die entsprechende Methode im aktuellen Quelltext.