MINT üben

Kapselung mit get und set

Dreißig Übungen zur Kapselung — von private über Getter und Setter bis zur Prüfung im Setter.

Dein Fortschritt:
0 / 0 Aufgaben
1

Übungsaufgaben

Dreißig Übungen in gemischter Reihenfolge — du klickst, ziehst, ordnest, rechnest und knobelst. Jede Übung gibt dir sofort eine Rückmeldung, und zu jeder Aufgabe gibt es zwei gestufte Tipps: Der erste zeigt die Richtung, der zweite den entscheidenden Schritt. Die Chips zeigen das Anforderungsniveau: AFB I heißt wiedergeben und direkt anwenden, AFB II selbst entscheiden und verknüpfen, AFB III begründen, beurteilen oder eine Falle durchschauen. Aufgaben mit dem Chip Mix verbinden Wissen aus früheren Unterkapiteln, bei Trick steckt eine Falle drin. Fährst du über ein unterstrichenes Arbeitswort, siehst du, was es genau von dir verlangt.

A1
Kapselung in Sätzen
AFB II

Erläutere die Zusammenhänge der Kapselung, indem du in jedem Satz auf die farbigen Wörter klickst und sie richtig einstellst.

Klicke auf die farbig hinterlegten Wörter: Jeder Klick schaltet zur nächsten Möglichkeit weiter. Stelle jeden Satz so ein, dass er stimmt. Tastatur: Tab zum Wort, Enter/Leertaste oder ↑/↓ schaltet um.

Ein Attribut mit private kann direkt ändern.

Ein Setter, der den Wert ohne if übernimmt, schützt .

Gibt es zu einem Attribut einen Getter, aber keinen Setter, ist es von außen .

Ungültige Werte werden im Setter .

Private Attribute erreicht nur die eigene Klasse. Ein Setter ohne Prüfung ist nur ein Umweg zum Attribut. Ein Getter ohne Setter macht das Attribut nur lesbar. Ungültige Werte weist der Setter ab, er rät nicht, was gemeint war.
Ansatz: Prüfe bei jedem Satz die Wörter mit zwei oder drei Möglichkeiten.
Weiter: Frage: Wer darf das Attribut ändern, und was macht der Setter mit einem ungültigen Wert?
A2
Die Mensakarte
AFB II

Auf eine Mensakarte passen höchstens 50 €; ins Minus darf sie nicht rutschen. Berechne den Wert, den der Getter nach dem Ablauf unten liefert.

public class Mensakarte {
    private double guthaben;

    public void setGuthaben(double guthaben) {
        if (guthaben >= 0 && guthaben <= 50) {
            this.guthaben = guthaben;
        }
    }

    public void aufladen(double betrag) {
        setGuthaben(guthaben + betrag);
    }

    public void bezahlen(double preis) {
        setGuthaben(guthaben - preis);
    }

    public double getGuthaben() {
        return guthaben;
    }
}
Mensakarte k = new Mensakarte();
k.aufladen(20);
k.bezahlen(3.5);
k.aufladen(40);
k.bezahlen(4.25);
k.bezahlen(15);
k.aufladen(30);

Welchen Wert liefert danach k.getGuthaben()?

Rechne selbst und trage das Ergebnis ein (Dezimalkomma oder -punkt) — Enter prüft direkt.
Verlauf: 0 → 20 → 16,5 → (56,5 abgewiesen) 16,5 → 12,25 → (−2,75 abgewiesen) 12,25 → 42,25. Häufige Fehlantworten: 50 (wer glaubt, der Setter „deckelt“ auf 0 bzw. 50) oder 67,25 (wer die abgewiesenen Aufrufe trotzdem mitrechnet). Weil aufladen und bezahlen den Setter benutzen, gilt die Prüfung auch intern. (Ausgabe mit java geprüft: 42.25.)
Ansatz: Notiere nach jeder Zeile das Guthaben. Rechne bei jedem Aufruf erst den neuen Wert aus und prüfe ihn dann gegen 0 bis 50.
Weiter: Ein abgewiesener Wert ändert gar nichts — das Guthaben bleibt, wie es war. Zwei der sechs Aufrufe werden abgewiesen.
A3
Aufgabe sucht Lösung
AFB I

Erstelle die richtigen Paare: Jede Anforderung gehört zu der Technik, die sie umsetzt.

Decke zwei Karten auf, die zusammengehören. Mit der Tastatur: Tab zur Karte, Enter aufdecken, Pfeiltasten zum Wandern.
private sperrt den Zugriff von außen. Ohne Setter ist ein Wert nur lesbar. Ein if im Setter weist ungültige Werte ab. Der Getter eines boolean heißt istX(), und ein Setter nimmt den neuen Wert als Parameter an.
Ansatz: Überlege bei jeder Anforderung, ob sie das Lesen, das Schreiben oder den Schutz betrifft.
Weiter: Bei Wahrheitswerten gilt eine eigene Namensregel für den Getter.