Wissen und Reproduzieren
18 PunkteEine Musikschule verwaltet Lehrkräfte und Schüler. Zusätzlich gilt: Lehrkraft ——schueler——> 0..15 Schueler.
- - name: Zeichenkette
- # telefon: Zeichenkette
- + getName(): Zeichenkette
- - fach: Zeichenkette
- - schueler: Reihung von Schueler
- c Lehrkraft(name: Zeichenkette, fach: Zeichenkette)
- + aufnehmen(s: Schueler): Wahrheitswert
- - instrument: Zeichenkette
- + ueben(minuten: Ganzzahl)
Lehrkraft-Objekts, geerbte eingeschlossen. 1 P- schueler mit der Kardinalität 0..15 um? 1 PLösung anzeigen (nach Auswerten freigeschaltet)
Erwartungshorizont: a) # heißt protected (geschütztes Attribut); c kennzeichnet den Konstruktor; getName() liefert einen Wert (Anfrage); ueben(…) hat keinen Rückgabetyp (Auftrag) (je 1 P). b) name, telefon (geerbt), fach, schueler = 4 (1 P). c) Feste Obergrenze 15 → Reihung der Länge 15, privat; eine Liste bräuchte zusätzlich eine Prüfung der Obergrenze (1 P).
In einer Werkstatt werden Werkzeuge in einer Kiste verwaltet. Werkzeug hat den Konstruktor Werkzeug(String name, int gramm) und die Methoden getGewicht() und setGewicht(int g).
ArrayList<Werkzeug> kiste = new ArrayList<Werkzeug>();
Werkzeug h = new Werkzeug("Hammer", 600);
kiste.add(h);
kiste.add(new Werkzeug("Zange", 250));
kiste.add(h);
h.setGewicht(700);
kiste.remove(1);kiste.size() am Ende an. 1 PLösung anzeigen (nach Auswerten freigeschaltet)
Erwartungshorizont: Verlauf: [H] → [H, Z] → [H, Z, H]; setGewicht ändert das eine Hammer-Objekt (beide Einträge); remove(1) entfernt die Zange → [H, H]. a) 2 (1 P). b) 700 + 700 = 1400 g (2 P). c) Richtig: zweimal dieselbe Referenz, Zange nicht mehr erreichbar, == liefert true (3 P, falsch markierte ziehen ab).
Eine Bank modelliert ihre Konten so:
- - nummer: Zeichenkette
- # stand: Fließkommazahl
- + einzahlen(b: Fließkommazahl)
- + abheben(b: Fließkommazahl): Wahrheitswert
- - zinssatz: Fließkommazahl
- + verzinsen()
- - dispo: Fließkommazahl
- + abheben(b: Fließkommazahl): Wahrheitswert
Girokonto? 1 PGirokonto-Objekts. 2 PLösung anzeigen (nach Auswerten freigeschaltet)
Erwartungshorizont: a) Unterklasse extends Oberklasse, genau eine Oberklasse (1 P). b) nummer, stand (geerbt), dispo = 3 (2 P). c) Gleicher Methodenkopf → überschrieben; # ist in Unterklassen sichtbar; einzahlen ist geerbt. nummer ist privat, verzinsen gehört nur dem Geschwister Sparkonto (3 P).
Zusammenhänge herstellen
27 PunkteEin Parkhaus berechnet Gebühren (in Euro) für h Stunden:
public class Fahrzeug {
public int gebuehr(int h) { return 2 * h; }
}
public class Motorrad extends Fahrzeug {
@Override public int gebuehr(int h) { return h; }
}
public class Wohnmobil extends Fahrzeug {
@Override public int gebuehr(int h) { return super.gebuehr(h) * 2 + 3; }
}ArrayList<Fahrzeug> liste = new ArrayList<Fahrzeug>();
liste.add(new Fahrzeug());
liste.add(new Motorrad());
liste.add(new Wohnmobil());
int summe = 0;
for (int i = 0; i < liste.size(); i++) {
summe = summe + liste.get(i).gebuehr(3);
}
Fahrzeug f = new Wohnmobil();liste.get(2).gebuehr(3). 2 Psumme nach der Schleife. 2 Pf.gebuehr(1) an. 2 PWohnmobil ausgeführt wird. 1 PLösung anzeigen (nach Auswerten freigeschaltet)
Erwartungshorizont: a) super.gebuehr(3) = 6, · 2 + 3 = 15 € (2 P). b) 6 + 3 + 15 = 24 € (2 P). c) 2 · 1 · 2 + 3 = 7 € (2 P). d) Der Variablentyp legt nur fest, welche Methoden aufgerufen werden dürfen; ausgeführt wird die überschreibende Methode des Objekts (1 P).
Ein Stundenplan-Programm: Ein Tag kennt höchstens acht Unterrichtsstunden (Tag ——stunden——> 0..8 Stunde), umgesetzt als private Stunde[] stunden = new Stunde[8];. Die Stunden werden mit 1 bis 8 nummeriert; ein belegter Platz darf nicht überschrieben werden.
eintragen(s: Stunde, nr: Ganzzahl): Wahrheitswert. Welcher Rumpf ist korrekt? 2 PanzahlFrei(): Ganzzahl ist korrekt? 2 PTag t = new Tag();
t.eintragen(new Stunde("Mathe"), 1);
t.eintragen(new Stunde("Deutsch"), 2);
t.eintragen(new Stunde("Informatik"), 2);
t.eintragen(new Stunde("Sport"), 9);
t.eintragen(new Stunde("Physik"), 8);t.anzahlFrei()? 3 PLösung anzeigen (nach Auswerten freigeschaltet)
Erwartungshorizont: a) Gültigkeitsprüfung 1–8, Index nr - 1, nur freie Plätze belegen, Rückgabe true/false (2 P); Variante 2 greift bei nr = 8 außerhalb der Reihung zu, Variante 3 überschreibt belegte Plätze, Variante 4 füllt alle freien Plätze. b) Zählen der null-Plätze; length ist immer 8, Index 8 existiert nicht, size() gibt es bei Reihungen nicht (2 P). c) Mathe (1), Deutsch (2) und Physik (8) werden eingetragen; Informatik (Platz 2 belegt) und Sport (9) scheitern → 8 − 3 = 5 (3 P).
„Eine Zoo-App verwaltet Gehege und Tiere. Jedes Tier hat einen Namen und lebt in genau einem Gehege. Ein Gehege kennt alle seine Tiere. Raubtiere sind Tiere, die zusätzlich eine Fütterungszeit haben. Pfleger können ein Tier füttern.“
Lösung anzeigen (nach Auswerten freigeschaltet)
Erwartungshorizont: a) Name → Attribut; „genau einem Gehege“ → Assoziation Tier → 1 Gehege; „kennt alle seine Tiere“ → Gehege → * Tier; „sind Tiere“ → Vererbung (je 1 P). b) Tier kennt sein Gehege und das Gehege seine Tiere → beide Richtungen; Raubtier erbt alles von Tier und ergänzt die Fütterungszeit. „füttern“ wird Methode von Pfleger mit Parameter Tier (3 P).
Ein Onlineshop hat die Klasse Artikel mit dem privaten Attribut preis, dem Konstruktor Artikel(String name, double preis) und getPreis(). Ein Praktikant schreibt:
public class Angebot extends Artikel { // (1)
private int rabatt; // (2)
public Angebot(String name, double p, int r) {
rabatt = r; // (3)
super(name, p); // (4)
}
public double getPreis() {
return preis * (100 - rabatt) / 100; // (5)
}
}Lösung anzeigen (nach Auswerten freigeschaltet)
Erwartungshorizont: a) (4): super(…) muss die erste Anweisung sein — Zeile (3) für sich ist korrekt, nur ihre Position vor (4) ist falsch; (5): preis ist in Artikel privat (4 P). b) Über super.getPreis() bleibt die Kapselung erhalten; getPreis() ohne super ruft sich selbst auf (Endlosrekursion), ein zweites Attribut könnte dem ersten widersprechen (2 P).
Verallgemeinern und beurteilen
15 PunkteEin Kino möchte Buchungen verwalten: Jede Vorstellung zeigt einen Film (Titel, Dauer, FSK) in einem Saal; Kunden buchen Plätze und sollen ihre Buchungen später einsehen und stornieren können. Ein erster Entwurf:
- - filmtitel: Zeichenkette
- - saal: Ganzzahl
- - beginn: Zeichenkette
- - plaetze: Reihung von Wahrheitswert
- + buchen(nr: Ganzzahl): Wahrheitswert
- - kundenname: Zeichenkette
- - filmtitel: Zeichenkette
- - platz: Ganzzahl
Lösung anzeigen (nach Auswerten freigeschaltet)
Erwartungshorizont: a) Namen statt Referenzen (Datenbank-Denken), fehlende Verbindung Buchung–Vorstellung, fehlende Filmdaten. Eine Reihung von Wahrheitswerten für die Belegung ist möglich, Vererbung wäre falsch („eine Buchung ist keine Vorstellung“) (3 P). b) Eigene Klassen Film, Saal, Kunde mit Referenzen; der Kunde kennt seine Buchungen (3 P). c) „einsehen und stornieren“ erfordert die Richtung Kunde → Buchung, das Stornieren auch Buchung → Kunde bzw. → Vorstellung; Konsistenz sichert eine gemeinsame Methode (2 P).
Ein Lieferdienst hat die Klasse Bestellung mit gesamt() (Summe der Positionen) und die Unterklasse Expressbestellung, die gesamt() überschreibt: return super.gesamt() + 4.90;. Neu: Jede Bestellung ab 30 € Gesamtpreis erhält 10 % Rabatt; der Endpreis soll über endpreis() abgefragt werden.
endpreis() implementiert wird. 2 PBestellung um endpreis(). Welcher Rumpf ist korrekt? 2 Pendpreis() für eine Expressbestellung mit den Positionen 12,50 € und 19,00 € aus. 3 PLösung anzeigen (nach Auswerten freigeschaltet)
Erwartungshorizont: a) Die Regel gilt für alle Bestellungen → Oberklasse. Weil endpreis() intern gesamt() aufruft, wird bei einer Expressbestellung dynamisch deren Fassung verwendet; kein Code wird doppelt (2 P). b) Ab 30 € (einschließlich) wird mit 0,9 multipliziert; super.gesamt() würde den Expresszuschlag übergehen, „− 10“ ist kein Prozent-Rabatt (2 P). c) gesamt = 31,50 + 4,90 = 36,40 € ≥ 30 → 36,40 · 0,9 = 32,76 € (3 P).
Ergebnis
| Aufgabe | Thema | Punkte |
|---|
Punkteverteilung
| Aufgabe | Thema | AFB | Punkte |
|---|---|---|---|
| A1 | Die Musikschule | AFB I | 6 |
| A2 | Die Werkzeugkiste | AFB I | 6 |
| A3 | Konten einer Bank | AFB I | 6 |
| A4 | Gebühren im Parkhaus | AFB II | 7 |
| A5 | Ein Tag im Stundenplan | AFB II | 7 |
| A6 | Die Zoo-App | AFB II | 7 |
| A7 | Sonderangebote im Shop | AFB II | 6 |
| A8 | Buchungen im Kino | AFB III | 8 |
| A9 | Rabatt beim Lieferdienst | AFB III | 7 |
| Summe (AFB I: 18 P · AFB II: 27 P · AFB III: 15 P) | 60 | ||
Notenpunkte
| Punkte | Notenpunkte | Beurteilung |
|---|---|---|
| 57 – 60 P | 15 | sehr gut |
| 54 – 56 P | 14 | sehr gut |
| 51 – 53 P | 13 | sehr gut |
| 48 – 50 P | 12 | gut |
| 45 – 47 P | 11 | gut |
| 42 – 44 P | 10 | gut |
| 39 – 41 P | 09 | befriedigend |
| 36 – 38 P | 08 | befriedigend |
| 33 – 35 P | 07 | befriedigend |
| 30 – 32 P | 06 | ausreichend |
| 27 – 29 P | 05 | ausreichend |
| 24 – 26 P | 04 | ausreichend |
| 20 – 23 P | 03 | mangelhaft |
| 17 – 19 P | 02 | mangelhaft |
| 12 – 16 P | 01 | mangelhaft |
| 0 – 11 P | 00 | ungenügend |
