MINT lernen

Kapselung mit get und set

Ein Lautsprecher auf 130 Prozent? Nur, wenn niemand an der Tür aufpasst.

1

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 Wahrheitswerten istAn().
  • Setter:ändert den Wert: public void setLautstaerke(int lautstaerke) — ohne Rückgabe, mit Parameter.
Lautsprecher
  • - 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.

2

Setter prüfen Werte

  • Prüfung:ein if im 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)
| Kopf übersetzen
Start: der Setter im Klassendiagramm.
public void setLautstaerke(int lautstaerke)
| Prüfung ergänzen
Kein Rückgabetyp im Diagramm, also void.
if (lautstaerke >= 0 && lautstaerke <= 100)
| zuweisen
Die Bedingung beschreibt, was ein gültiger Wert ist.
{ this.lautstaerke = lautstaerke; }
Ergebnis
Nur wenn die Prüfung stimmt, landet der Parameter im Attribut.

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.

Der Setter als Türsteher

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.

Merke

Kapselung: Attribute private; lesen mit getX() (bei Wahrheitswerten istX()), ändern mit setX(…), der ungültige Werte abweist.

3

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.

Videos