Wie viel verrät eine kleine Karte mit drei Fächern über eine Klasse — und was verschweigt sie ganz bewusst?
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
Die Klassenkarte lesen
AFB I
Die Mensa-App bestellt Essen über diese Klasse. Welche Aussagen stimmen?
Bestellung
- gericht: Zeichenkette
- preis: Fließkommazahl
- bezahlt: Wahrheitswert
c Bestellung(gericht: Zeichenkette, preis: Fließkommazahl)
+ bezahlen()
+ getPreis(): Fließkommazahl
+ istBezahlt(): Wahrheitswert
Mehrere Antworten sind richtig. Markiere alle zutreffenden und klicke dann auf „Prüfen“.
Die Karte zeigt nur was eine Klasse hat, nie wie die Methoden arbeiten. c markiert den Konstruktor. Das Minus vor bezahlt heißt private — ändern kann man es von außen nur über bezahlen(). Der Typ steht immer hinter dem Doppelpunkt; fehlt er bei einer Methode, liefert sie nichts zurück.
Ansatz: Geh die Karte von oben nach unten durch: Name, Attribute, Konstruktor und Methoden.
Weiter: Wo steht in der Karte der Typ einer Methode? Und was bedeutet es, wenn dort nichts steht?
A2
Typnamen übersetzen
AFB I
In Niedersachsen schreibt man im Klassendiagramm deutsche Typnamen. Welcher Java-Typ gehört dazu?
Klicke links einen Eintrag an und dann rechts den passenden — es entsteht eine Verbindungslinie. Mit der Tastatur: Enter zum Auswählen, ↑/↓ zum Wandern.
„Zeichen“ und „Zeichenkette“ werden am häufigsten verwechselt: Ein Zeichen ist genau ein Buchstabe (char, einfache Anführungszeichen), eine Zeichenkette ein ganzer Text (String, doppelte Anführungszeichen). Im Java-Code stehen immer die Java-Namen — Ganzzahl punkte; kennt javac nicht.
Ansatz: Erinnere dich an 1.1.2: Welche fünf Typen hast du dort kennengelernt?
Weiter: Eine „Kette“ besteht aus vielen Gliedern — hier aus vielen Zeichen.
A3
Stimmt's? — Das Fahrradschloss
AFB I
Ein smartes Zahlenschloss für dein Fahrrad:
Fahrradschloss
- code: Ganzzahl
- offen: Wahrheitswert
c Fahrradschloss(code: Ganzzahl)
+ oeffnen(versuch: Ganzzahl): Wahrheitswert
+ schliessen()
+ istOffen(): Wahrheitswert
Fünf Aussagen nacheinander. Eine falsche Einschätzung reicht — dann startest du die Serie mit „Neue Runde“ neu.
Aussage 1 von 5
Merksatz: Was in der Karte fehlt, ist genauso wichtig wie das, was drinsteht. Kein Getter bedeutet: von außen nicht lesbar. Kein Typ hinter der Klammer bedeutet: void.
Ansatz: Suche für jede Aussage die passende Zeile in der Karte.
Weiter: Von außen erreichbar ist nur, was ein Plus davor hat.
A4
Die Smartwatch in Java
AFB II
Wähle zu jeder Zeile der Klassenkarte Smartwatch die passende Java-Zeile.
Wähle in jedem Menü die passende Angabe und klicke dann auf „Prüfen“.
Klassendiagramm
Java
- schritte: Ganzzahl
c Smartwatch(besitzer: Zeichenkette)
+ zaehleSchritt()
+ getSchritte(): Ganzzahl
+ setZiel(ziel: Ganzzahl)
Beim Übersetzen wandert der Typ nach vorn: Aus ziel: Ganzzahl wird int ziel, aus getSchritte(): Ganzzahl wird public int getSchritte(). Fehlt der Rückgabetyp im Diagramm, steht in Java void — außer beim Konstruktor, der gar keinen Rückgabetyp bekommt. Die deutschen Typnamen gibt es nur im Diagramm.
Ansatz: Übersetze Zeichen für Zeichen: Minus/Plus → private/public, deutscher Typ → Java-Typ.
Weiter: In Java steht der Typ immer vor dem Namen. Doppelpunkte kommen in Java-Köpfen nicht vor.
A5
Vom Code zur Karte
AFB II
Aus diesem Java-Code soll die Klassenkarte entstehen. Zwei Bausteine bleiben übrig.
public class Trinkflasche {
private String farbe;
private int fuellung;
public Trinkflasche(String farbe) { … }
public void trinken(int ml) { … }
public boolean istLeer() { … }
}
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.
Die Ablenker sind die typischen Mischfehler: void schreibt man im Diagramm nicht — eine Methode ohne Rückgabe hat einfach nichts hinter der Klammer. Und Java-Typen wie boolean werden in der niedersächsischen Notation zu Wahrheitswert. Methodenrümpfe ({ … }) tauchen in der Karte nie auf.
Ansatz: private → Minus, public → Plus. Der Konstruktor bekommt ein eigenes Kennzeichen.
Weiter: Im Diagramm stehen nur deutsche Typnamen — kein einziges Java-Schlüsselwort.
A6
Fehler im Podcast-Diagramm
AFB II
Zu dieser Java-Klasse hat jemand die Karte gezeichnet — drei Zeilen passen nicht zum Code.
public class Podcast {
private String titel;
private int dauer;
private boolean gehoert;
public Podcast(String titel, int dauer) { … }
public int getDauer() { … }
public void setDauer(int dauer) { … }
public void abspielen() { … }
}
In diesem Text stecken Fehler. Klicke genau die falschen Zeilen an — die richtigen musst du stehen lassen.
Zeile 6 ist der Klassiker: Parameter und Rückgabetyp vertauscht. Was hineingeht, steht in der Klammer; was herauskommt, hinter der Klammer. Ein Setter nimmt einen Wert, ein Getter gibt einen zurück. Und void gehört nie in die Karte.
Ansatz: Vergleiche Zeile für Zeile mit dem Java-Code: Sichtbarkeit, Parameter, Rückgabetyp.
Weiter: Prüfe besonders die beiden Methoden, deren Namen mit get und set beginnen.
A7
Memory: Karte und Code
AFB II
Die Klasse Account einer Gaming-Plattform. Finde zu jeder Diagrammzeile die passende Java-Zeile.
Decke zwei Karten auf, die zusammengehören. Mit der Tastatur: Tab zur Karte, Enter aufdecken, Pfeiltasten zum Wandern.
Erkennungszeichen: Attribute enden in Java mit Semikolon und haben keine Klammern; Methoden haben Klammern. Der Konstruktor ist die einzige Methode ohne Rückgabetyp — im Diagramm erkennst du ihn am c, in Java daran, dass er genau wie die Klasse heißt.
Ansatz: Merke dir beim Aufdecken den Namen (level, guthaben, getLevel …) — er ist in beiden Karten gleich.
Weiter: level und getLevel sehen ähnlich aus — achte auf die Klammern.
A8
Selbst übersetzen: der Tank
AFB III
Ein Rasenmäher-Roboter hat einen Tank. Schreibe zu jeder Diagrammzeile die passende Java-Zeile — beim Konstruktor und bei den Methoden nur den Kopf.
Tank
- fuellstand: Fließkommazahl
c Tank(fuellstand: Fließkommazahl)
+ tanken(liter: Fließkommazahl)
+ istLeer(): Wahrheitswert
Tippe die Java-Zeilen ein. Leerzeichen sind egal, eine öffnende { am Ende darfst du weglassen. Enter prüft.
- fuellstand: Fließkommazahl
c Tank(fuellstand: Fließkommazahl)
+ tanken(liter: Fließkommazahl)
+ istLeer(): Wahrheitswert
Musterlösung: private double fuellstand; · public Tank(double fuellstand) · public void tanken(double liter) · public boolean istLeer(). Die drei häufigsten Fehler: void beim Konstruktor, void bei tanken vergessen und den Typ hinter den Namen schreiben wie im Diagramm (liter: double).
Ansatz: Übersetze jeden Teil einzeln: Sichtbarkeit, Rückgabetyp (oder void, oder beim Konstruktor gar nichts), Name, Parameter mit Typ vorn.
Weiter: Nur die Attributzeile endet mit einem Semikolon. Fließkommazahl → double, Wahrheitswert → boolean.
A9
Mit der Karte programmieren
AFB IIIMix
Du kennst nur die Karte, nicht den Code — und benutzt die Klasse wie in 1.2.1 in main. Welche Zeilen lassen sich übersetzen?
Busticket
- zone: Zeichenkette
- preis: Fließkommazahl
- entwertet: Wahrheitswert
c Busticket(zone: Zeichenkette, preis: Fließkommazahl)
+ entwerten()
+ istGueltig(): Wahrheitswert
+ getPreis(): Fließkommazahl
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). Das Objekt t existiert bereits.
1wird übersetzt
2Übersetzungsfehler
Die Karte reicht, um die Klasse richtig zu benutzen: Minus heißt „Finger weg“ (entwertet has private access), die Reihenfolge der Konstruktor-Parameter ist verbindlich, eine Fließkommazahl passt nicht in ein int („possible lossy conversion“), und eine Methode ohne Rückgabetyp liefert nichts, was man speichern könnte („void cannot be converted to boolean“).
Ansatz: Suche zu jeder Zeile die passende Zeile der Karte: Ist sie mit + gekennzeichnet?
Weiter: Vergleiche dann die Typen: Argumente mit Parametern, Rückgabetyp mit der Variable links.
A10
Trick: Zeilen zählen
AFB IIITrick
Zu dieser Klasse eines Kino-Buchungssystems soll die Klassenkarte gezeichnet werden.
public class Kinokarte {
private String film;
private int reihe;
private int platz;
public Kinokarte(String film, int reihe, int platz) {
this.film = film;
this.reihe = reihe;
this.platz = platz;
}
public int getPreis() {
int grundpreis = 9;
return grundpreis + zuschlag();
}
public String getFilm() {
return film;
}
private int zuschlag() {
if (reihe >= 10) {
return 2;
}
return 0;
}
}
Wie viele Zeilen stehen in der fertigen Karte in den beiden unteren Fächern zusammen (also ohne den Klassennamen)?
Überlege selbst und trage das Ergebnis ein — Enter prüft direkt.
7 Zeilen: drei Attribute (film, reihe, platz), der Konstruktor und drei Methoden — getPreis, getFilm und die private Hilfsmethode - zuschlag(): Ganzzahl. Zwei Fallen: grundpreis ist eine lokale Variable in einer Methode, kein Attribut — sie kommt nicht in die Karte (wer sie zählt, kommt auf 8). Und private Methoden gehören sehr wohl hinein, nur eben mit Minus (wer sie weglässt, kommt auf 6).
Ansatz: Attribute stehen direkt in der Klasse, außerhalb jeder Methode. Was steht innerhalb einer Methode?
Weiter: Zähle alle Methodenköpfe — egal ob public oder private — plus den Konstruktor.