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.
|