MINT üben

Kapselung mit get und set

Zwei Textaufgaben mit Hinweisen und Erwartungshorizont zu private, Gettern und prüfenden Settern.

Dein Fortschritt:
0 / 0 Aufgaben
1

Das Profil in der Skater-App

AFB I–II

In einer App für Skaterinnen und Skater legt jede Person ein Profil an. Der Benutzername wird bei der Anmeldung festgelegt und kann danach nicht mehr geändert werden. Das Alter muss zwischen 13 und 120 Jahren liegen; ungültige Angaben werden abgewiesen, der bisherige Wert bleibt. Ein neues Profil ist zunächst privat und hat das Alter 13.

Material 1: Klassenkarte Profil
Profil
  • - benutzername: Zeichenkette
  • - alter: Ganzzahl
  • - privat: Wahrheitswert
  • c Profil(benutzername: Zeichenkette)
  • + getBenutzername(): Zeichenkette
  • + getAlter(): Ganzzahl
  • + setAlter(alter: Ganzzahl)
  • + istPrivat(): Wahrheitswert
  • + setPrivat(privat: Wahrheitswert)
Alle Attribute sind privat.
Material 2: Profil.java (Ausschnitt)
public class Profil {
    private String benutzername;
    private int alter;
    private boolean privat;

    public Profil(String benutzername) {
        this.benutzername = benutzername;
        this.alter = 13;
        this.privat = true;
    }

    public int getAlter() {
        return alter;
    }

    // setAlter fehlt noch
}
Weitere Methoden sind weggelassen.
Material 3: Aufrufe in der App
Profil p = new Profil("skater_nils");
p.setAlter(12);
p.setAlter(15);
p.setPrivat(false);
p.setAlter(-3);
p.alter = 200;
Nils probiert sein neues Profil aus.
  1. Nenne für jedes Attribut, ob es von außen nur gelesen oder gelesen und geändert werden kann.
  2. Ergänze in Material 2 die Methode setAlter.
  3. Bestimme die Objektkarte von p nach den Zeilen 1 bis 5 aus Material 3 und gib an, wie javac auf Zeile 6 reagiert.
  4. Erläutere, warum benutzername einen Getter, aber keinen Setter hat.

Hinweise

Hinweis zu Aufgabe a)
Suche zu jedem Attribut in der Karte einen Getter (get… bzw. bei Wahrheitswerten ist…) und einen Setter (set…).
Hinweis zu Aufgabe b)
Ein Setter hat den Rückgabetyp void. Übernimm den Wert nur, wenn er im erlaubten Bereich liegt. Parameter und Attribut heißen gleich.
Hinweis zu Aufgabe c)
Starte mit den Werten aus dem Konstruktor und prüfe jeden Aufruf gegen die Regel. Darf App das Attribut direkt ansprechen?
Hinweis zu Aufgabe d)
Lies noch einmal, was im Text über den Benutzernamen steht. Wer braucht den Namen lesend – z. B. die Anzeige in der App?