Den Timer im Codepad benutzen

Benutzung des Timers

Um den Timer zu starten, nutzen wir ein sehr praktisches Feature in BlueJ, die Direkteingabe (in der englischen Version Codepad genannt). Dort kann man einzelne Befehle eingeben, um schnell und einfach einzelne Anweisungen auszuführen. Standardmäßig ist die Direkteingabe nicht aktiviert. Du kannst sie im Menü unter "Ansicht→Direkteingabe" bzw. "View→Show Codepad" anzeigen lassen.

Aufgabe 1

Öffne das Projekt Timer (Entpacken nicht vergessen!), betrachte kurz den Quelltext der Klasse Timer und gib folgende Anweisungen in die Direkteingabe ein:

Codepad

Beschreibe genau welche Wirkung jede einzelne Zeile hat (Fachbegriffe!) (Hilfe: Falls Du Schwierigkeiten hast zu verstehen, was in den ersten beiden Zeilen passiert, dann ersetze gedanklich Timer durch int und new Timer durch 42.

Aufgabe 2

Teste den Effekt einer negativen Zahl für die Sekunden und erkläre das Verhalten. (Tipp: Man kann BlueJ durch Rechtsklick auf den rot-weißen Laufbalken zurücksetzen. Dieser zeigt an, wenn BlueJ gerade eine Methode ausführt.)

Aufgabe 3

Schreibe eine Set-Methode setSekunden, die bewirkt, dass nur positive Werte zugelassen werden. Teste das Verhalten in der Direkteingabe. Warum ist das Problem trotzdem nicht gelöst? (Hinweis: Math.abs(-5) berechnet den Betrag von -5.)

Aufgabe 4

Eine andere Alternative für die set-Methode könnte folgende Form haben:

if-Anweisung

Teste diese Variante der Methode und erkläre die Funktionsweise. if-Anweisungen werden an späterer Stelle noch ausführlich behandelt.

Attribute schützen

Durch die Einführung der set-Methode kann man das erwünsche Verhalten erreichen, z.B. dass negative Werte ignoriert werden oder deren Betrag benutzt wird. Aber trotzdem hat man die Möglichkeit den oben dargestellen Code im Codepad oder einem Programm auszuführen. Man müsste also das Attribut sekunden vor unerwünschtem Zugriff schützen. Dies erreicht man in Java, indem man den Zugriffsmodifikator private voranstellt. Der Konstruktor soll von außerhalb der Klasse ausführbar sein. Sonst könnte man kein Timer-Objekt erzeugen. Das Starten des Timers soll ebenfalls außerhalb der Klasse möglich sein. Man erreicht dies durch:

class Timer
{
    private int sekunden;

    public Timer() {
	...
    }

    public void starten() {
	...
    }
}

Der Zugriffsmodifikator public bewirkt für uns hier keine Veränderung. Diese wirkt sich nur aus, wenn man an größeren Projekten arbeitet. (Genauer: Wenn der eigene Code in Paketen organisiert wird, was wir allerdings nicht machen werden. Siehe z.B. die offiziellen Java-Tutorials)

Aufgabe 5 - Privaten Zugriff

Probiere das selbst einmal aus, indem Du den direkten Zugriff auf das Attribut verbietest und dann die im Codepad den Zugriff darauf dennoch versuchst.

X

Fehler melden

X

Suche