Warum private?
- Problem:wäre
stundeöffentlich, könnte jederu.stunde = 25;schreiben — eine unmögliche Uhrzeit. - Datenkapselung:alle Attribute
private; andere Klassen greifen nur über Methoden zu. - Getter:liest einen Wert:
getStunde(), bei WahrheitswertenistX(). - Setter:schreibt einen Wert:
setStunde(…)— und prüft ihn vorher. - Nur lesbar:Getter ohne Setter, z. B. eine Seriennummer, die sich nie ändern darf.
Herleitung:
- stunde: Ganzzahl+ getStunde(): Ganzzahlpublic int getStunde()int vor dem Namen.public int getStunde() { return stunde; }Setter mit Prüfung
- Kopf:
public void setStunde(int stunde)— ein Auftrag mit dem neuen Wert als Parameter. - Prüfung:nur wenn
stunde >= 0 && stunde <= 23, wird der Wert übernommen. - this:
this.stunde = stunde;— links das Attribut, rechts der Parameter. - Ungültig:der alte Wert bleibt erhalten; das Objekt ist nie in einem falschen Zustand.
Links steht die Klasse Uhrzeit, rechts ein Programm aus einer anderen Klasse. Tippe für jede Zeile zuerst, was passiert — dann „Ausführen“. Die Objektkarte zeigt den Zustand von u.
public class Uhrzeit {
private int stunde;
private int minute;
public Uhrzeit(int stunde, int minute) {
this.stunde = stunde;
this.minute = minute;
}
public int getStunde() {
return stunde;
}
public void setStunde(int stunde) {
if (stunde >= 0 && stunde <= 23) {
this.stunde = stunde;
}
}
public void setMinute(int minute) {
if (minute >= 0 && minute <= 59) {
this.minute = minute;
}
}
}Halte fest: Von außen kommt man an ein private-Attribut nur über Methoden. Der Setter prüft jeden neuen Wert — ungültige Werte werden abgewiesen, das Objekt bleibt gültig.
Datenkapselung: Attribute private, lesen über getX(), schreiben über setX(…) mit Prüfung — so bleibt jedes Objekt gültig.
Allgemeine Hinweise
Getter ohne return
Ein Getter mit Rückgabetyp int muss mit return stunde; enden, sonst meldet der Compiler einen Fehler.
this nicht vergessen
Heißt der Parameter wie das Attribut, setzt stunde = stunde; nur den Parameter auf sich selbst — das Attribut bleibt unverändert.
Nicht jedes Attribut braucht einen Setter
Gib nur Setter an, die fachlich sinnvoll sind. Was sich nie ändern soll, bekommt nur einen Getter.
