MINT lernen

Übungen: Klassendiagramme lesen

Drei Felder, ein paar Plus- und Minuszeichen — und doch verrät eine Klassenkarte alles, was man mit einem Objekt tun darf.

Dein Fortschritt:
0 / 0 Aufgaben
1

Übungsaufgaben

Zehn Übungen zum Klicken, Ziehen und Knobeln — von AFB I bis AFB III. Jede Übung gibt dir sofort Rückmeldung; wenn du hängst, helfen dir die gestuften Tipps.

A1
Was verrät die Klassenkarte?
AFB I

Ein Verleih für E-Scooter hat seine Klasse so entworfen. Welche Aussagen kannst du direkt aus der Klassenkarte ablesen?

EScooter
  • - id: Zeichenkette
  • - akku: Ganzzahl
  • - gesperrt: Wahrheitswert
  • - kmStand: Fließkommazahl
  • c EScooter(id: Zeichenkette)
  • + entsperren(code: Ganzzahl): Wahrheitswert
  • + fahren(km: Fließkommazahl)
  • + getAkku(): Ganzzahl
  • + laden()
Mehrere Antworten sind richtig. Markiere alle zutreffenden und klicke dann auf „Prüfen“.
Der Rückgabetyp steht hinter der schließenden Klammer: fahren(km: Fließkommazahl) hat keinen — Fließkommazahl ist der Typ des Parameters km. Das Minus vor akku bedeutet privat: kein direkter Zugriff von außen. Und was „man gern wüsste“, zählt nicht: laden() hat laut Karte keine Rückgabe.
Ansatz: Lies jede Methodenzeile von links nach rechts: Sichtbarkeit, Name, Klammer mit Parametern, dann erst nach dem Doppelpunkt der Rückgabetyp.
Weiter: Steht nach der schließenden Klammer nichts, gibt die Methode nichts zurück. Minus heißt privat.
A2
Notation in Worten
AFB I

Beschreibe die Klassenkarte eines Handyvertrags in Worten — ein Wort bleibt übrig.

Handyvertrag
  • - rufnummer: Zeichenkette
  • - volumenMB: Fließkommazahl
  • - verbrauchtMB: Fließkommazahl
  • c Handyvertrag(rufnummer: Zeichenkette, volumenMB: Fließkommazahl)
  • + surfen(mb: Fließkommazahl)
  • + getRestvolumen(): Fließkommazahl
Wort anklicken, dann Lücke anklicken (oder umgekehrt) — mit Tab und Enter geht es genauso. Ein Klick auf eine gefüllte Lücke legt das Wort zurück.

Das Minuszeichen vor rufnummer bedeutet, dass das Attribut ist. Die Zeile, die mit c beginnt, beschreibt den . In surfen(mb: Fließkommazahl) ist mb ein . getRestvolumen() liefert einen vom Typ Fließkommazahl. surfen ist ein , weil es den Zustand ändert und nichts zurückgibt.

„öffentlich“ bleibt übrig — es wäre das Pluszeichen, das bei den Methoden steht. Wer bei der ersten Lücke „öffentlich“ einsetzt, verwechselt + und −. Achte auch auf den Unterschied zwischen Parameter (Wert, der hineingeht) und Rückgabewert (Wert, der herauskommt).
Ansatz: Gehe die Karte Zeichen für Zeichen durch: Was bedeuten −, + und c?
Weiter: Was in der Klammer steht, geht in die Methode hinein (Parameter); was hinter dem Doppelpunkt nach der Klammer steht, kommt heraus (Rückgabewert).
A3
Konstruktor, Anfrage oder Auftrag?
AFB I

Die Klasse Aquarium einer Zoohandlung hat diese Einträge im unteren Feld. Sortiere sie.

Ziehe jede Karte in den passenden Korb — oder wähle sie mit Enter aus und drücke dann die Ziffer des Korbs (0 legt sie zurück).
1Konstruktor
2Anfrage
3Auftrag
Entscheidend ist allein, ob hinter der Klammer ein Rückgabetyp steht (Anfrage) oder nicht (Auftrag) — nicht, ob es Parameter gibt. Typischer Fehler: anzahlFische() als Auftrag einsortieren, weil der Name nicht mit get beginnt. Er liefert aber eine Ganzzahl, ist also eine Anfrage. Der Konstruktor ist an dem vorangestellten c zu erkennen.
Ansatz: Schau bei jeder Zeile zuerst ganz nach rechts: Folgt auf die Klammer ein Doppelpunkt mit Datentyp?
Weiter: Anfragen liefern einen Wert und ändern nichts; Aufträge ändern den Zustand und liefern nichts. Das c markiert den Konstruktor.
A4
Diagrammzeile trifft Bedeutung
AFB II

Die Klasse Ticket eines Konzertveranstalters. Verbinde jede Zeile der Klassenkarte mit ihrer Bedeutung.

Ansatz: Sortiere zuerst grob: Welche Zeilen haben Klammern (Methoden, Konstruktor), welche nicht (Attribute)?
Weiter: Bei den Methoden entscheidet der Rückgabetyp hinter der Klammer zwischen Anfrage und Auftrag; der Inhalt der Klammer verrät die Parameter.
A5
Wer liefert etwas zurück?
AFB II

Die Stadtwerke haben ihr Parkhaus so modelliert. Wie viele Methoden (ohne Konstruktor) liefern einen Rückgabewert?

Parkhaus
  • - name: Zeichenkette
  • - plaetze: Ganzzahl
  • - belegt: Ganzzahl
  • - preisProStunde: Fließkommazahl
  • c Parkhaus(name: Zeichenkette, plaetze: Ganzzahl)
  • + einfahren(): Wahrheitswert
  • + ausfahren()
  • + getFreiePlaetze(): Ganzzahl
  • + istVoll(): Wahrheitswert
  • + setPreisProStunde(preis: Fließkommazahl)
  • + berechneGebuehr(minuten: Ganzzahl): Fließkommazahl
Rechne selbst und trage das Ergebnis ein — Enter prüft direkt.
Es sind einfahren, getFreiePlaetze, istVoll und berechneGebuehr. Häufiger Fehler: nur 3 zählen, weil einfahren nach einem Auftrag klingt. Es ändert zwar den Zustand (ein Platz mehr belegt), meldet aber zusätzlich mit einem Wahrheitswert zurück, ob die Schranke aufging. Maßgeblich ist nur, was hinter der Klammer steht — und der Konstruktor zählt nie mit.
Ansatz: Gehe die sechs Methodenzeilen durch und schaue nur, ob hinter der schließenden Klammer ein Doppelpunkt mit Datentyp folgt.
Weiter: Lass dich nicht vom Namen leiten: Auch eine Methode, die etwas verändert, kann zusätzlich einen Wert zurückgeben.
A6
Ein Quiz komplett durchspielen
AFB IIMix

Du darfst nur die öffentlichen Methoden der Klasse Quiz benutzen. Bring die Schritte eines Algorithmus (wie in Kapitel 1), der ein ganzes Quiz spielt, in die richtige Reihenfolge.

Quiz
  • - fragen: Reihung vom Typ Zeichenkette
  • - punkte: Ganzzahl
  • - aktuelleFrage: Ganzzahl
  • c Quiz(anzahl: Ganzzahl)
  • + naechsteFrage(): Zeichenkette
  • + antworten(antwort: Zeichenkette): Wahrheitswert
  • + istBeendet(): Wahrheitswert
  • + getPunkte(): Ganzzahl
Ziehe die Karten in die richtige Reihenfolge — mit der Tastatur: ↑/↓ verschiebt, Shift+↑/↓ wechselt nur den Fokus.
1Mit dem Konstruktor ein Quiz-Objekt mit 10 Fragen erzeugen
2Solange istBeendet() falsch liefert, wiederhole:
3naechsteFrage() aufrufen und die gelieferte Frage anzeigen
4Antwort einlesen und mit antworten(antwort) an das Quiz übergeben
5Nach der Schleife getPunkte() aufrufen und das Ergebnis ausgeben
Am häufigsten rutscht getPunkte() in die Schleife oder ganz nach vorn. Der Endstand steht aber erst fest, wenn istBeendet() wahr liefert. Und ohne Objekt geht gar nichts: Der Konstruktor muss vor jedem Methodenaufruf stehen. Beachte außerdem: Auf die Reihung fragen kommst du von außen nicht heran — sie ist privat; du bekommst die Fragen nur über naechsteFrage().
Ansatz: Was muss existieren, bevor man irgendeine Methode aufrufen kann? Was darf erst nach dem Ende des Quiz passieren?
Weiter: Die Schleife braucht eine Bedingung (istBeendet), im Schleifenrumpf wechseln sich Frage holen und Antwort übergeben ab.
A7
Stimmt's? — Der Stromzähler
AFB II

Fünf Behauptungen zur Klassenkarte eines Stromzählers:

Stromzaehler
  • - nummer: Zeichenkette
  • - stand: Fließkommazahl
  • - tarif: Fließkommazahl
  • c Stromzaehler(nummer: Zeichenkette, tarif: Fließkommazahl)
  • + ablesen(): Fließkommazahl
  • + verbrauchen(kWh: Fließkommazahl)
  • + kostenSeit(alterStand: Fließkommazahl): Fließkommazahl
  • + setTarif(tarif: Fließkommazahl)
Fünf Aussagen nacheinander. Eine falsche Einschätzung reicht — dann startest du die Serie mit „Neue Runde“ neu.
Aussage 1 von 5

Merksatz: Eine Klassenkarte ist ein Vertrag — sie sagt, welche Werte hineingehen (Parameter) und welche herauskommen (Rückgabetyp), aber nicht, wie die Methode arbeitet.
Ansatz: Unterscheide in jeder Methodenzeile streng: Klammerinhalt = Parameter, Typ nach der Klammer = Rückgabe.
Weiter: Was eine Methode intern tut (z. B. Werte prüfen), steht nicht in der Klassenkarte.
A8
Klassenkarte vermessen: Kalender
AFB III

Eine Kalender-App nutzt diese Klasse. Werte die Karte Schritt für Schritt aus.

Termin
  • - titel: Zeichenkette
  • - ort: Zeichenkette
  • - tag: Ganzzahl
  • - monat: Ganzzahl
  • - startStunde: Ganzzahl
  • - dauerMinuten: Ganzzahl
  • - erinnerung: Wahrheitswert
  • c Termin(titel: Zeichenkette, tag: Ganzzahl, monat: Ganzzahl)
  • + verschieben(tage: Ganzzahl)
  • + getTitel(): Zeichenkette
  • + getEndeMinuten(): Ganzzahl
  • + istGanztaegig(): Wahrheitswert
  • + erinnerungSetzen(an: Wahrheitswert)
  • + ueberschneidetSich(start: Ganzzahl, dauer: Ganzzahl, tag: Ganzzahl): Wahrheitswert
Rechne die Kette Schritt für Schritt: Erst wenn ein Schritt stimmt, wird der nächste freigeschaltet. Enter prüft.
  1. Wie viele Attribute haben den Datentyp Zeichenkette?
  2. Wie viele Attribute werden nicht über einen Konstruktor-Parameter gesetzt?
  3. Wie viele Methoden sind Anfragen?
  4. Wie viele Parameter haben alle Methoden (ohne Konstruktor) zusammen?
Sieben Attribute, davon zwei Zeichenketten; nur titel, tag und monat kommen über den Konstruktor, die übrigen 4 bekommen ihren Startwert in der Klasse. Anfragen sind getTitel, getEndeMinuten, istGanztaegig und ueberschneidetSich. Parameter: 1 + 1 + 3 = 5. Typischer Fehler im letzten Schritt: die drei Konstruktor-Parameter mitzählen oder den Rückgabetyp als Parameter werten.
Ansatz: Zähle jeweils nur im passenden Feld: Attribute oben, Konstruktor und Methoden unten.
Weiter: Parameter stehen nur in den runden Klammern; getrennt werden sie durch Kommas. Der Typ hinter der Klammer ist die Rückgabe, kein Parameter.
A9
Fehlersuche in der Klassenkarte
AFB III

Eine Mitschülerin hat die Klassenkarte eines Fitnesstrackers in der Notation der Ergänzenden Hinweise gezeichnet. Drei Zeilen verstoßen gegen die Notation oder die Konventionen — finde sie.

In diesem Text stecken Fehler. Klicke genau die falschen Zeilen an — die richtigen musst du stehen lassen.
Der häufigste Klausurfehler ist das „void“: In der Notation der Ergänzenden Hinweise bedeutet ein fehlender Rückgabetyp „keine Rückgabe“. Ebenfalls oft: Name und Typ vertauscht — die Reihenfolge ist immer name: Typ, bei Attributen wie bei Parametern.
Ansatz: Prüfe jede Zeile gegen das Muster „Sichtbarkeit Name(parameter: Typ): Rückgabetyp“.
Weiter: Achte auf Sichtbarkeit bei Attributen, auf Java-Wörter in der Klassenkarte und auf die Reihenfolge von Name und Typ.
A10
Trickaufgabe: Wie viele Werte beim Aufruf?
AFB IIITrick

Zeilen aus der Klassenkarte Schachfigur. Wie viele Werte musst du angeben, wenn du diesen Eintrag aufrufst bzw. benutzt? Schätze jede Zeile ein — Vorsicht, nicht jede Zeile ist, wonach sie aussieht.

Wähle für jede Zeile eine Stufe: 0 = kein Wert, 1 = ein Wert, 2 = zwei Werte, 3 = drei Werte, 4 = vier Werte. Mit der Tastatur: Tab zur Zeile, ←/→ zwischen den Stufen, Enter setzt.
0 = kein Wert4 = vier Werte
+ ziehen(spalte: Zeichen, zeile: Ganzzahl): Wahrheitswert
c Schachfigur(farbe: Zeichenkette, art: Zeichenkette, spalte: Zeichen, zeile: Ganzzahl)
+ umwandeln(neueArt: Zeichenkette)
- zeile: Ganzzahl
+ bewerten(eigene: Ganzzahl, gegner: Ganzzahl, zug: Ganzzahl): Ganzzahl
Nur was in den runden Klammern steht, musst du beim Aufruf mitgeben. Der Rückgabetyp hinter der Klammer ist kein Wert, den du angibst — bei ziehen sind es 2, nicht 3. Die Falle: - zeile: Ganzzahl ist gar keine Methode, sondern ein privates Attribut; man ruft es nicht auf und übergibt nichts.
Ansatz: Zähle nur die durch Komma getrennten Einträge in den runden Klammern.
Weiter: Eine Zeile ohne Klammern ist ein Attribut — dort gibt es nichts zu übergeben.