private schützt Attribute
- public:jede andere Klasse darf lesen und schreiben — auch Unsinn wie
l.lautstaerke = 130;. - private:nur die eigene Klasse kommt heran. Von außen meldet
javac:lautstaerke has private access in Lautsprecher. - Kapselung:Attribute
private, Zugriff nur über öffentliche Methoden. - Getter:liefert den Wert:
public int getLautstaerke(); bei WahrheitswertenistAn(). - Setter:ändert den Wert:
public void setLautstaerke(int lautstaerke)— ohne Rückgabe, mit Parameter.
- - lautstaerke: Ganzzahl
- - an: Wahrheitswert
- c Lautsprecher()
- + getLautstaerke(): Ganzzahl
- + istAn(): Wahrheitswert
- + setLautstaerke(lautstaerke: Ganzzahl)
Beide Attribute privat; an lässt sich nur lesen, weil es keinen Setter dafür gibt.
Setter prüfen Werte
- Prüfung:ein
ifim Setter lässt nur gültige Werte durch, hier 0 bis 100. - Abweisen:bei ungültigem Wert passiert nichts — der alte Wert bleibt.
- Nicht kappen:aus 130 wird nicht heimlich 100; falsche Werte werden gar nicht übernommen.
- Nur lesbar:Getter ohne Setter — so ändert niemand von außen, was fest bleiben soll.
Herleitung:
+ setLautstaerke(lautstaerke: Ganzzahl)public void setLautstaerke(int lautstaerke)void.if (lautstaerke >= 0 && lautstaerke <= 100){ this.lautstaerke = lautstaerke; }Stelle mit dem Regler (oder durch Ziehen der Marke w) einen neuen Wert ein. Schalte oben im Balken um: einmal darf jeder direkt an das public-Attribut, einmal steht der Setter an der Tür. Beobachte den Zustand des Lautsprechers — vor allem unter 0 und über 100.
Halte fest: Ist das Attribut public, kann jeder das Objekt in einen unmöglichen Zustand bringen. Mit private und einem prüfenden Setter bleibt es immer gültig — ungültige Werte prallen ab, der alte Wert bleibt.
Kapselung: Attribute private; lesen mit getX() (bei Wahrheitswerten istX()), ändern mit setX(…), der ungültige Werte abweist.
Allgemeine Hinweise
Setter ohne Prüfung
Ein Setter, der nur this.lautstaerke = lautstaerke; enthält, schützt nichts — er ist bloß ein Umweg zum public-Attribut.
Großbuchstabe nach get/set
l.getlautstaerke() gibt es nicht: cannot find symbol. Nach get, set und ist geht es groß weiter.
Abweisen statt raten
Der Setter weiß nicht, was mit 130 gemeint war. Darum übernimmt er lieber nichts, als still 100 daraus zu machen.
