Termine im digitalen Schulkalender
AFB I–IIFür den digitalen Schulkalender wird eine Klasse Termin entwickelt. Ein Termin besteht aus einem Titel, einem Tag (1 bis 31), einem Monat (1 bis 12), der Stunde des Beginns (0 bis 23) und einer Dauer in Minuten. Die Dauer muss zwischen 15 und 480 Minuten liegen und ein Vielfaches von 15 sein, weil der Kalender in Viertelstunden-Rastern arbeitet. Vereinfachend wird nicht geprüft, ob ein Monat wirklich 31 Tage hat.
Alle Setter übernehmen einen Wert nur, wenn er gültig ist; andernfalls bleibt der bisherige Wert erhalten. Der Konstruktor belegt zunächst Tag und Monat mit 1, die Stunde mit 8 und die Dauer mit 60 und übernimmt anschließend die übergebenen Werte über die Setter – ungültige Parameter führen also zu den Standardwerten.
- - titel: Zeichenkette
- - tag: Ganzzahl
- - monat: Ganzzahl
- - stunde: Ganzzahl
- - dauer: Ganzzahl
- c Termin(titel: Zeichenkette, tag: Ganzzahl, monat: Ganzzahl, stunde: Ganzzahl)
- + getTitel(): Zeichenkette
- + getTag(): Ganzzahl
- + setTag(tag: Ganzzahl)
- + getMonat(): Ganzzahl
- + setMonat(monat: Ganzzahl)
- + getStunde(): Ganzzahl
- + setStunde(stunde: Ganzzahl)
- + getDauer(): Ganzzahl
- + setDauer(dauer: Ganzzahl)
public class Termin {
private String titel;
private int tag;
private int monat;
private int stunde;
private int dauer;
public String getTitel() {
return titel;
}
public int getTag() {
return tag;
}
public void setTag(int tag) {
if (tag >= 1 && tag <= 31) {
this.tag = tag;
}
}
public int getMonat() {
return monat;
}
public void setMonat(int monat) {
if (monat >= 1 && monat <= 12) {
this.monat = monat;
}
}
public int getStunde() {
return stunde;
}
// Konstruktor, setStunde, getDauer und setDauer fehlen
}
Termin t = new Termin("Zahnarzt", 31, 13, 9);
t.setDauer(50);
t.setStunde(24);
t.setDauer(90);
t.setTag(0);
- Erläutern Sie das Prinzip der Datenkapselung am Beispiel der Klasse
Termin. Gehen Sie dabei auf einen konkreten Fehler ein, der ohne Kapselung entstehen könnte. - Ergänzen Sie die Klasse aus Material 1 um den Konstruktor sowie die Methoden
setStunde,getDauerundsetDauergemäß der Beschreibung. - Geben Sie den Zustand des Objekts
tnach Ausführung der Aufruffolge in Material 2 als Objektkarte an.
Hinweise
Hinweis zu Aufgabe a)
private für andere Klassen? Wie erreichen sie die Werte trotzdem? Stell dir vor, die Kalender-App könnte direkt t.stunde = 25; schreiben – was würde die Wochenansicht dann anzeigen?„Erläutern“ heißt: das Prinzip nicht nur definieren, sondern an diesem Beispiel verständlich machen.Hinweis zu Aufgabe b)
this. „Vielfaches von 15“ prüfst du mit dem Rest der Division: dauer % 15 == 0. Im Konstruktor erst die Standardwerte setzen, dann die Setter aufrufen.„Ergänzen“ heißt: die vorhandene Implementierung weiterführen, ohne sie zu verändern.