Die Aufgabe
Aufgabe 2
a) In der Vorlesung wurde eine Klasse „Zeitdauer“ mit den Attributen stunden und minuten erstellt. Sie wurde als Rückgabetyp für eine statische Methode verwendet, die eine Gesamtzahl von Minuten in Stunden und Minuten umrechnet. Z. B. werden 123 Gesamtminuten in 2 Stunden und 3 Minuten umgerechnet.
Diese Klasse findet sich im Paket „dauer“.
Nun soll die Klasse „Zeitdauer“ selbst für die Umrechnung zwischen Gesamtminuten und Stunden+Minuten zuständig sein. Hierfür soll es neben dem Konstruktor mit den Parametern stunden und minuten einen zweiten Konstruktur geben, der die gesamtminuten als einzigen Parameter hat. Zudem soll es neben den vorhanden getter-Methoden für Stunden und Minuten eine getter-Methode geben, die die Gesamtminuten zurückgibt.
Testen Sie Ihre Klasse mit Hilfe der Klasse „MinutenInStunden“.
b) Nun soll eine zweite Klasse „ZeitdauerB“ implementiert werden, die sich nach außen hin exakt so verhält wie die Klasse „Zeitdauer“ (gleiche öffentliche Methoden, Konstruktoren mit den gleichen Parametern). Allerdings soll intern die Dauer nicht in Form der zwei Attribute stunden und minuten gespeichert werden, sondern in nur einem int-Attribut als Gesamtminuten. Entsprechend müssen manche Methoden und Konstruktoren angepasst werden.
Testen Sie, ob sich die neue Klasse tatsächlich genauso verhält wie die obige Klasse.
Sie haben mit der Lösung dieser Aufgabe die Anwendung des Geheimnisprinzips demonstriert: Da das Innere der Klasse privat und daher von außen nicht sichtbar ist, kann man die Implementierung verändern, ohne dass andere Klassen etwas davon merken oder mit geändert werden müssen.
In der Vorlesung hat eine Methode wandleMinutenInStunden in der Klasse MinutenInStunden umgerechnet. Sie gab das Ergebnis als Zeitdauer-Objekt zurück. Jetzt soll die Klasse Zeitdauer das Umrechnen selbst übernehmen.
Die Klasse Zeitdauer aus der Vorlesung liegt uns nicht als Datei vor. Rechts steht sie so, wie sie nach Folie 17 aussehen muss. Die Datei MinutenInStunden.java gibt es im Code zur Vorlesung, aber nur auskommentiert: Ihre main-Methode ruft wandleMinutenInStunden auf. Unsere Testklassen ersetzen diesen Aufruf durch den neuen Konstruktor.
public-Teile: Konstruktoren und Methoden. Wie sie innen speichert, ist ihr Geheimnis.- a) Zeitdauer: zweiter Konstruktor und getter für die Gesamtminuten; testen.
- b) ZeitdauerB: dieselben öffentlichen Teile, innen nur ein Attribut; vergleichen.