Theorieteil 2 zu Folge 4:

1. Aufbau einer Klasse

Bereits im Theorieteil zu Folge 1 wurde Grundsätzliches über den Aufbau einer Klasse gesagt, so dass wir uns hier recht kurz fassen können. Eine Java-Klasse enthält

  1. Attribute
  2. Konstruktoren
  3. Methoden

1.1 Attribute

Von Barnes und Kölling werden die Attribute auch Datenfelder genannt. Ich halte diese Bezeichnung nicht für besonders glücklich - erinnert sie doch zu sehr an Felder im Sinne von Arrays. In unserem Kurs bleiben wir also bei dem Begriff Attribut.

Man kann zwei Typen von Attributen unterscheiden, primitive Attribute und Referenz-Attribute.

1.1.1 Primitive Attribute

Primitive Attribute speichern einfache Daten, z.B. ganze oder reelle Zahlen, Buchstaben, Zeichenketten oder Wahrheitswerte. Referenzattribute dagegen sind Zunächst einmal gibt es Attribute, in denen einfach Daten gespeichert werden. Als Beispiel betrachten wir wieder die Klasse Auto:

public class Auto
{
   double tankvolumen, benzinstand;
   double verbrauch, kmstand;

   public Auto()
   {
   }
}

Für einfache Attribute passt auch die Barnes/Kölling-Definition gut: "Datenfelder sind kleine Bereiche innerhalb eines Objektes, in denen Werte gespeichert werden können."
Solche Werte haben wir bisher als Attributwerte bezeichnet. Attribute müsse nicht vom Typ int sein, sondern können auch String-, float-, boolean- oder double-Attribute sein (um mal die wichtigsten Datentypen zu nennen).

1.1.2 Referenz-Attribute - Objekte anderer Klassen.

1 Diese Klasse hat zwei einfache Attribute sowie vier Referenz-Attribute

Die in Abbildung 1 dargestellte Klasse Zeichenbrett hat zum Beispiel zwei primitive Attribute (zahlObjekte, durchschnitt) und zusätzlich vier Referenzattribute (sonne, mond, haus und dach).

In der Buchversion ist dieser Theorieteil wesentlich ausführlicher dargestellt als in dieser Webversion.

1.2 Konstruktoren

Jede Klasse muss mindestens einen Konstruktor haben. Es sind auch mehrere Konstruktoren möglich, die sich dann aber in ihren Parameterlisten unterscheiden müssen (Overloading). Der Konstruktor muss genau so heißen wie die Klasse; auch auf Groß- und Kleinschreibung ist dabei zu achten.

Der Konstruktor ist eine besondere Methode, die zum Erzeugen von Objekten dient. Möchte der Benutzer der Klasse hier irgendwie steuernd eingreifen, also zum Beispiel bestimmte Werte selbst bestimmen, so geschieht das mit Hilfe von Parametern.

1.3 Methoden

Das Prinzip der Datenkapselung kennen Sie bereits aus den Theorieteilen der ersten Folgen. Auf dieses Prinzip greifen auch die Methoden einer Klasse zurück. Die Attribute dürfen nur mit Hilfe von Methoden ausgelesen oder gar verändert werden. Dementsprechend unterscheidet man zwischen sondierenden Methoden und verändernden Methoden (siehe auch Theorieteil zu Folge 1). Die meisten Klassen verfügen noch über eine dritte Sorte von Methoden, nämlich die Ausgabemethoden. Dieser Typ von Methoden dient dazu, Daten in die Konsole auszugeben oder in bestimmten Komponenten eines Java-Applets darzustellen. Auch die graphische Darstellung von Daten in einem Applet gehört dazu.

2. Klassendiagramme

Klassendiagramme kennen Sie bereits, obwohl wir noch nie direkt darüber gesprochen haben. Schauen Sie sich doch Ihr BlueJ einmal genauer an. In dem Hauptarbeitsbereich sehen Sie nicht nur die Klassen, mit denen Sie arbeiten, sondern auch die Beziehungen zwischen den Klassen sind graphisch in Form von Pfeilen dargestellt. Eine solche graphische Darstellung, die auch die Beziehungen zwischen den Klassen zeigt, heißt Klassendiagramm.

2 Das Klassendiagramm

Ein Klassendiagramm wie in Abbildung 2 gibt Auskunft darüber, wie die einzelnen Klassen Zeichnung, Kreis, Quadrat, Dreieck und Leinwand zusammenhängen. Man kann erkennen, dass die Klasse Zeichnung Objekte der Klasse Kreis als Attribute hat. Wie diese Attribute heißen, und wie viele Kreis-Objekte ein Zeichnungs-Objekt hat, geht aus dem Klassendiagramm allerdings nicht hervor. Will man dies veranschaulichen, so zeichnet man ein Objektdiagramm (siehe weiter unten)
.

Ein Klassendiagramm stellt den Zusammenhang zwischen den Klassen eines Java-Programms übersichtlich und vereinfacht dar. Den Status von Objekten kann man aus einem Klassendiagramm aber nicht entnehmen.

Klassendiagramme in UML

dieser Teil ist nur in der Buchversion verfügbar!

3. Objektdiagramme

3 Objektdigramm des Objektes bild der Klasse Zeichenbrett

Das Objektdiagramm in Abbildung 3 zeigt wesentlich mehr Informationen. Dargestellt ist das Objekt bild, das der Klasse Zeichenbrett angehört. Dem Kasten links, der für das Objekt bild steht, können nicht nur die Attribute, sondern auch die Attributwerte entnommen werden, die den Status des Objektes bild zum Zeitpunkt t beschreiben. Die beiden einfachen Attribute zahlObjekte und durchschnitt haben auch einfache Attributwerte, die direkt in den weißen Kästchen stehen. Diese Werte werden direkt in dem Objekt gespeichert. In den weißen Kästchen der Attribute sonne, mond, haus und dach stehen keine Werte, sondern Pfeile. Wie Sie bereits gelernt haben, handelt es sich bei diesen vier Attributen nicht um einfache Datenfelder, sondern um Objekte einer anderen Klasse. Diese Objekte befinden sich aber nicht in dem Objekt bild, sondern außerhalb. Dies sollen die leeren Kästchen und die Pfeile verdeutlichen.

Betrachten wir das Attribut sonne einmal näher. Der leere Kasten und der Pfeil zeigen uns, dass es sich dabei um ein Objekt einer anderen Klasse handelt. Folgen wir nun dem Pfeil, so führt er uns zu einem neuen Kasten mit der Überschrift : Kreis.

Dies ist so zu lesen: "Das Attribut sonne ist ein Objekt der Klasse Kreis."

Als Objekt einer Klasse hat das Attribut sonne selbst Attribute: xpos, ypos, radius und farbe. Da es sich bei diesen vier Attributen um einfache Attribute handelt und nicht um Objekte einer anderen Klasse, können die Attributwerte direkt in die weißen Kästchen geschrieben werden.

Ich denke, auf die anderen Kästchen des Objektdiagramms müssen wir nicht weiter eingehen; die Sache sollte jetzt eigentlich klar sein.

In der Buchversion finden Sie ein weiteres Beispiel für ein Objektdiagramm.

Aus einem Objektdiagramm kann man den genauen Zustand eines Objektes ablesen. Dazu gehören auch die Zustände von Attributen, die selbst wieder Objekte von Klassen sind.

4. Klassenfelder

dieser Teil ist nur in der Buchversion verfügbar!

Diese HTML-Seite wurde erstellt von Ulrich Helmich am 28. Januar 2005 mit Golive 6 und verändert am 15. September 2006.