MINT lernen

Probe-Klausur

Probe-Klausur für den Leistungskurs: 90 Minuten, 60 Punkte, drei Anforderungsbereiche — von der Klassenkarte bis zur Polymorphie, mit Auswertung in Notenpunkten.

Punkte0 / 60
Notenpunkte—
Bearbeitet0 / 0
Bearbeitungszeit90 Minuten
AFB I

Wissen und Reproduzieren

18 Punkte
A1
Die Musikschule
AFB I 6 Punkte

Eine Musikschule verwaltet Lehrkräfte und Schüler. Zusätzlich gilt: Lehrkraft ——schueler——> 0..15 Schueler.

Person
  • - name: Zeichenkette
  • # telefon: Zeichenkette
  • + getName(): Zeichenkette
Lehrkraft
  • - fach: Zeichenkette
  • - schueler: Reihung von Schueler
  • c Lehrkraft(name: Zeichenkette, fach: Zeichenkette)
  • + aufnehmen(s: Schueler): Wahrheitswert
Schueler
  • - instrument: Zeichenkette
  • + ueben(minuten: Ganzzahl)
a) Ordnen Sie jedem Element seine Rolle zu. 4 P
b) Nennen Sie die Anzahl der Attribute eines Lehrkraft-Objekts, geerbte eingeschlossen. 1 P
c) Welche Java-Deklaration setzt - schueler mit der Kardinalität 0..15 um? 1 P
Lö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).

A2
Die Werkzeugkiste
AFB I 6 Punkte

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);
a) Geben Sie kiste.size() am Ende an. 1 P
b) Bestimmen Sie die Summe der Gewichte aller Einträge der Kiste am Ende. 2 P
g
c) Welche Aussagen treffen am Ende zu? (mehrere Antworten richtig) 3 P
Lö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).

A3
Konten einer Bank
AFB I 6 Punkte

Eine Bank modelliert ihre Konten so:

Konto
  • - nummer: Zeichenkette
  • # stand: Fließkommazahl
  • + einzahlen(b: Fließkommazahl)
  • + abheben(b: Fließkommazahl): Wahrheitswert
Sparkonto
  • - zinssatz: Fließkommazahl
  • + verzinsen()
Girokonto
  • - dispo: Fließkommazahl
  • + abheben(b: Fließkommazahl): Wahrheitswert
a) Welcher Klassenkopf gehört zu Girokonto? 1 P
b) Entnehmen Sie dem Diagramm die Anzahl der Attribute eines Girokonto-Objekts. 2 P
c) Welche Aussagen treffen zu? (mehrere Antworten richtig) 3 P
Lö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).

AFB II

Zusammenhänge herstellen

27 Punkte
A4
Gebühren im Parkhaus
AFB II 7 Punkte

Ein 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();
a) Ermitteln Sie liste.get(2).gebuehr(3). 2 P
€
b) Berechnen Sie summe nach der Schleife. 2 P
€
c) Geben Sie f.gebuehr(1) an. 2 P
€
d) Erklären Sie, warum in c) die Methode von Wohnmobil ausgeführt wird. 1 P
Lö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).

A5
Ein Tag im Stundenplan
AFB II 7 Punkte

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.

a) Implementieren Sie eintragen(s: Stunde, nr: Ganzzahl): Wahrheitswert. Welcher Rumpf ist korrekt? 2 P
b) Welcher Rumpf von anzahlFrei(): Ganzzahl ist korrekt? 2 P
Tag 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);
c) Wenden Sie Ihre Methoden an: Welchen Wert liefert danach t.anzahlFrei()? 3 P
Lö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).

A6
Die Zoo-App
AFB II 7 Punkte

„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.“

a) Analysieren Sie den Text: Wie wird jede Formulierung im Klassendiagramm umgesetzt? 4 P
b) Erstellen Sie gedanklich das Klassendiagramm. Welche Aussage über einen vollständigen Entwurf trifft zu? 3 P
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).

A7
Sonderangebote im Shop
AFB II 6 Punkte

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)
    }
}
a) Überprüfen Sie den Code: Welche Zeilen verhindern das Übersetzen? (mehrere Antworten richtig) 4 P
b) Welche Korrektur von Zeile (5) ist am besten? 2 P
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).

AFB III

Verallgemeinern und beurteilen

15 Punkte
A8
Buchungen im Kino
AFB III 8 Punkte

Ein 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:

Vorstellung
  • - filmtitel: Zeichenkette
  • - saal: Ganzzahl
  • - beginn: Zeichenkette
  • - plaetze: Reihung von Wahrheitswert
  • + buchen(nr: Ganzzahl): Wahrheitswert
Buchung
  • - kundenname: Zeichenkette
  • - filmtitel: Zeichenkette
  • - platz: Ganzzahl
a) Untersuchen Sie den Entwurf auf Schwächen. (mehrere Antworten richtig) 3 P
b) Entwerfen Sie einen verbesserten Entwurf. Welcher erfüllt alle Anforderungen? 3 P
c) Beurteilen Sie die Beziehung zwischen Kunde und Buchung im verbesserten Entwurf. 2 P
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).

A9
Rabatt beim Lieferdienst
AFB III 7 Punkte

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.

a) Entscheiden Sie, wo endpreis() implementiert wird. 2 P
b) Erweitern Sie Bestellung um endpreis(). Welcher Rumpf ist korrekt? 2 P
c) Werten Sie endpreis() für eine Expressbestellung mit den Positionen 12,50 € und 19,00 € aus. 3 P
€
Lö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

Erreicht
0 / 60
Prozent
0 %
Notenpunkte
—
AufgabeThemaPunkte

Punkteverteilung

AufgabeThemaAFBPunkte
A1Die MusikschuleAFB I6
A2Die WerkzeugkisteAFB I6
A3Konten einer BankAFB I6
A4Gebühren im ParkhausAFB II7
A5Ein Tag im StundenplanAFB II7
A6Die Zoo-AppAFB II7
A7Sonderangebote im ShopAFB II6
A8Buchungen im KinoAFB III8
A9Rabatt beim LieferdienstAFB III7
Summe (AFB I: 18 P · AFB II: 27 P · AFB III: 15 P)60

Notenpunkte

PunkteNotenpunkteBeurteilung
57 – 60 P15sehr gut
54 – 56 P14sehr gut
51 – 53 P13sehr gut
48 – 50 P12gut
45 – 47 P11gut
42 – 44 P10gut
39 – 41 P09befriedigend
36 – 38 P08befriedigend
33 – 35 P07befriedigend
30 – 32 P06ausreichend
27 – 29 P05ausreichend
24 – 26 P04ausreichend
20 – 23 P03mangelhaft
17 – 19 P02mangelhaft
12 – 16 P01mangelhaft
0 – 11 P00ungenügend