26.2 UML-Notation der StoppuhrAttribute und Objektmethoden

 

UML = Unified Modeling Language Um ein objektorientiertes Design (OOD) z.B. einer Stoppuhr sprachenunabhängig zu entwerfen benutzt man häufig die UML-Notation

In UML wird eine Klasse als ein Kasten dargestellt. Der Kasten ist in drei Abteilungen aufgeteilt. In der oberen Abteilung steht der Name der Klasse. In der mittleren Abteilung stehen die Attribute der Klasse StoppUhr, ihre Werte beschreiben den Zustand einer StoppUhr. In der Regel will man, dass diese Werte geschützt (engl. protected) sind. In UML drücken wir dies durch das Gatter-Zeichen (#) vor den Attributsnamen. Hinter dem Doppelpunkt, der den Attributsnamen folgt, steht der Datentyp des Attributes. In der unteren Abteilung stehen die Methoden.  mit denen man den Zustand, also die Werte der Attribute einer Stoppuhr verändern kann. Das Pluszeichen vor den Methodennamen sagen, die Methoden sind öffentlich zugänglich (public). Attribute und Methoden schreibt man i.a. klein, wobei man wegen der leichteren Lesbarkeit Großbuchstaben einstreuen kann. Methodennamen und Attribute sind leicht zu unterscheiden, denn Methodennamen werden immer mit runden Klammernpaar abgeschlossen. Diese runden Klammern können, wie unser Beispiel zeigt leer sein, müssen aber nicht. Dies kennen wir schon aus vielen Beispielen. Während die Methoden starten() und stoppen() lediglich Aktionen auslösen, sollen getLaufzeit() bzw istAktiv() einen Wert liefern, nämlich die gestoppte Zeit bzw. den Zustand der Uhr. Dass diese Methoden an den Aufrufer Werte zurückgeben sollen, erkennen wir an der Angabe des Rückegabetyps. Es ist der Typ des Wertes, den die Methode liefern soll. Wir erkennen, die Notation ist ist der von Java sehr ähnlich.

Die Methoden müssen nun noch genauer spezifiziert werden:


starten()
wenn istAktiv false
ist dann wird istAktiv auf true gesetzt, die Systemzeit des Rechners wird in startZeit gespeichert. [System.currentTimeMillis() liefert ]

stoppen()
wenn
istAktiv true ist, dann auf false setzen, die Systemzeit in stoppZeit speichern.

getLaufzeit(): long
wenn Stoppuhr läuft (
istAktiv ist true) ist die gelieferte Laufzeit die Differenz zwischen System- und startZeit, sonst die Differenz zwischen stoppZeit und startZeit.

istAktiv(): boolean
liefert den Wert des Attributs
istAktiv.

Implementieren Sie die Klasse StoppUhr in Java. Folgendes ist dabei zu beachten:

Die Methodenköpfe haben folgende Gestalt:

public void starten() {
   ...
}

public void stoppen() {
  ...
}

public long getLaufzeit() {
  ...
}

public boolean istAktiv() {
  ...
}

Die beiden Methoden starten() und stoppen() liefern keinen Rückgabewert, da aber in Java Methoden immer einen Rückgabewert haben, drückt man dies durch die Rückgabe von void aus.

 

zu 26.3 Die Klasse StoppUhr in Java
zur Lösung www.pohlig.de (C) MPohlig 2003