MINT lernen

Abituraufgaben: Objektkarten und -diagramme

Zwei Abituraufgaben mit Hinweisen und Erwartungshorizont: Objektkarten zeichnen und Zustände verfolgen – Fahrradverleih und Escape-Room.

Dein Fortschritt:
0 / 0 Aufgaben
1

Leihräder am Bahnhof

AFB I–II

Ein Fahrradverleih am Bahnhof verwaltet seine Leihräder mit einem Programm. Die Klasse Leihrad ist in Material 1 dargestellt. Das Verhalten der Methoden ist wie folgt festgelegt:

Der Konstruktor übernimmt Nummer und Typ; ein neues Rad ist nicht ausgeliehen, hat 0,0 gefahrene Kilometer und 0 Ausleihen. ausleihen() wirkt nur, wenn das Rad gerade nicht ausgeliehen ist: Dann wird es als ausgeliehen markiert und die Zahl der Ausleihen um 1 erhöht. zurueckgeben(km) wirkt nur, wenn das Rad ausgeliehen ist: Dann ist es wieder verfügbar, und die gefahrenen Kilometer werden addiert. In allen anderen Fällen ändern die Methoden nichts.

Material 1: Klassenkarte und Aufruffolge
Leihrad
  • - nummer: Ganzzahl
  • - typ: Zeichenkette
  • - ausgeliehen: Wahrheitswert
  • - kilometer: Fließkommazahl
  • - anzahlAusleihen: Ganzzahl
  • c Leihrad(nummer: Ganzzahl, typ: Zeichenkette)
  • + ausleihen()
  • + zurueckgeben(km: Fließkommazahl)
  • + istAusgeliehen(): Wahrheitswert
  • + getKilometer(): Fließkommazahl
Leihrad r1 = new Leihrad(12, "Trekking");   // Zeile 1
Leihrad r2 = new Leihrad(15, "E-Bike");     // Zeile 2
r1.ausleihen();                             // Zeile 3
r2.ausleihen();                             // Zeile 4
r1.zurueckgeben(14.5);                      // Zeile 5
r1.ausleihen();                             // Zeile 6
r2.zurueckgeben(32.0);                      // Zeile 7
r2.zurueckgeben(8.0);                       // Zeile 8
r1.ausleihen();                             // Zeile 9
Aufruffolge an einem Vormittag im Verleih
  1. Zeichnen Sie die Objektkarten von r1 und r2 unmittelbar nach Ausführung von Zeile 2.
  2. Stellen Sie den Zustand beider Objekte nach Zeile 6 und nach Zeile 9 jeweils in Objektkarten dar.
  3. Begründen Sie, warum die Zeilen 8 und 9 den Zustand der Objekte nicht verändern, und warum nach Zeile 2 zwei Objektkarten, aber nur eine Klassenkarte existieren.

Hinweise

Hinweis zu Aufgabe a)
Kopf der Objektkarte: objektname: Klasse, unterstrichen. Darunter alle fünf Attribute mit Werten – auch die, die der Konstruktor nicht als Parameter bekommt. Zeichenketten stehen in Anführungszeichen.„Zeichnen“ heißt hier: die wesentlichen Eigenschaften übersichtlich in der üblichen Objektkarten-Form darstellen.
Hinweis zu Aufgabe b)
Gehe Zeile für Zeile vor und prüfe vor jedem Aufruf die Bedingung: Ist das Rad gerade ausgeliehen oder nicht? Notiere nur die Attribute, die sich ändern, und übertrage am Ende alles in vollständige Karten.
Hinweis zu Aufgabe c)
Schau dir den Wert von ausgeliehen direkt vor Zeile 8 bzw. Zeile 9 an. Für den zweiten Teil: Was beschreibt eine Klassenkarte, was eine Objektkarte?

Erwartungshorizont

Erwartungshorizont zu Aufgabe a)
r1: Leihrad
  • nummer = 12
  • typ = "Trekking"
  • ausgeliehen = false
  • kilometer = 0.0
  • anzahlAusleihen = 0
r2: Leihrad
  • nummer = 15
  • typ = "E-Bike"
  • ausgeliehen = false
  • kilometer = 0.0
  • anzahlAusleihen = 0

Erwartet: unterstrichener Kopf mit Objekt- und Klassenname, alle Attribute mit Startwerten, Zeichenketten in Anführungszeichen, keine Methoden in der Objektkarte.

Erwartungshorizont zu Aufgabe b)

Nach Zeile 6:

r1: Leihrad
  • nummer = 12
  • typ = "Trekking"
  • ausgeliehen = true
  • kilometer = 14.5
  • anzahlAusleihen = 2
r2: Leihrad
  • nummer = 15
  • typ = "E-Bike"
  • ausgeliehen = true
  • kilometer = 0.0
  • anzahlAusleihen = 1

Nach Zeile 9:

r1: Leihrad
  • nummer = 12
  • typ = "Trekking"
  • ausgeliehen = true
  • kilometer = 14.5
  • anzahlAusleihen = 2
r2: Leihrad
  • nummer = 15
  • typ = "E-Bike"
  • ausgeliehen = false
  • kilometer = 32.0
  • anzahlAusleihen = 1

Weg: Zeile 3 und 4 leihen beide Räder aus (je 1 Ausleihe). Zeile 5 gibt r1 mit 14,5 km zurück, Zeile 6 leiht r1 erneut aus (2 Ausleihen). Zeile 7 gibt r2 mit 32,0 km zurück; Zeile 8 und 9 bleiben wirkungslos.

Erwartungshorizont zu Aufgabe c)

Vor Zeile 8 ist r2 bereits zurückgegeben (ausgeliehen = false); zurueckgeben wirkt aber nur bei einem ausgeliehenen Rad, daher werden die 8,0 km nicht addiert. Vor Zeile 9 ist r1 bereits ausgeliehen (seit Zeile 6); ausleihen wirkt nur bei einem verfügbaren Rad, deshalb steigt anzahlAusleihen nicht.

Die Klassenkarte beschreibt den Bauplan (welche Attribute und Methoden jedes Leihrad hat) und existiert daher genau einmal. Mit jedem new entsteht ein eigenes Objekt mit eigenem Zustand; zwei Konstruktoraufrufe erzeugen zwei Objekte, also zwei Objektkarten.

2

Zahlenschlösser im Escape-Room

AFB II–III

In einem Escape-Room müssen Teams mehrere elektronische Zahlenschlösser öffnen. Jedes Schloss wird durch ein Objekt der Klasse Schloss gesteuert (Material 2). Der Konstruktor legt den dreistelligen Code fest; ein neues Schloss ist geschlossen, nicht gesperrt und hat 0 Fehlversuche.

eingeben(versuch) arbeitet so: Ist das Schloss gesperrt, ändert sich nichts und es wird false geliefert. Ist es bereits offen, ändert sich nichts und es wird true geliefert. Andernfalls wird der Versuch mit dem Code verglichen: Stimmt er, wird das Schloss geöffnet und true geliefert. Stimmt er nicht, steigt die Zahl der Fehlversuche um 1; beim dritten Fehlversuch wird das Schloss gesperrt. Dann wird false geliefert. Nur die Spielleitung kann mit zuruecksetzen() ein Schloss wieder in den Ausgangszustand versetzen (geschlossen, nicht gesperrt, 0 Fehlversuche).

Material 2: Klassenkarte Schloss und Spielprotokoll
Schloss
  • - code: Ganzzahl
  • - offen: Wahrheitswert
  • - fehlversuche: Ganzzahl
  • - gesperrt: Wahrheitswert
  • c Schloss(code: Ganzzahl)
  • + eingeben(versuch: Ganzzahl): Wahrheitswert
  • + zuruecksetzen()
  • + istOffen(): Wahrheitswert
Schloss s1 = new Schloss(417);   // Zeile 1
Schloss s2 = new Schloss(250);   // Zeile 2
Schloss s3 = new Schloss(999);   // Zeile 3
s1.eingeben(471);                // Zeile 4
s1.eingeben(417);                // Zeile 5
s2.eingeben(205);                // Zeile 6
s2.eingeben(520);                // Zeile 7
s2.eingeben(502);                // Zeile 8
s2.eingeben(250);                // Zeile 9
s1.eingeben(123);                // Zeile 10
s3.eingeben(99);                 // Zeile 11
Protokoll eines Spieldurchgangs
Material 3: Objektkarten aus einem Fehlerbericht
s4: Schloss
  • code = 808
  • offen = true
  • fehlversuche = 2
  • gesperrt = false
s5: Schloss
  • code = 315
  • offen = true
  • fehlversuche = 3
  • gesperrt = true
s6: Schloss
  • code = 640
  • offen = false
  • fehlversuche = 1
  • gesperrt = false
Momentaufnahmen, die der Betreiber im Speicher gefunden hat
  1. Wenden Sie die Aufruffolge aus Material 2 an: Geben Sie für die Zeilen 4 bis 11 jeweils den Rückgabewert an und zeichnen Sie die Objektkarten von s1, s2 und s3 nach Zeile 11.
  2. Analysieren Sie die Objektkarten aus Material 3: Entscheiden Sie jeweils, ob der Zustand durch Aufrufe der Methoden entstanden sein kann. Geben Sie im Fall „möglich“ eine passende Aufruffolge an und begründen Sie im Fall „unmöglich“.
  3. Vergleichen Sie die Klassenkarte Schloss mit der Objektkarte von s2 nach Zeile 11 hinsichtlich Inhalt, Aussagekraft und Zeitbezug.
  4. Ein Teammitglied schlägt vor, das Attribut gesperrt zu streichen und stattdessen eine Anfrage istGesperrt(): Wahrheitswert anzubieten, die „fehlversuche ≥ 3“ auswertet. Die Spielleitung wünscht sich außerdem für später, ein gesperrtes Schloss per Knopfdruck zu entsperren, ohne die Fehlversuche für die Auswertung zu löschen. Erörtern Sie den Vorschlag unter Berücksichtigung Ihrer Ergebnisse aus b) und des Wunsches der Spielleitung.

Hinweise

Hinweis zu Aufgabe a)
Prüfe vor jedem Aufruf in dieser Reihenfolge: gesperrt? offen? Code richtig? Führe für jedes Schloss eine eigene kleine Spalte mit offen, fehlversuche, gesperrt.„Anwenden“ heißt: das beschriebene Verfahren mit den konkreten Werten Schritt für Schritt durchführen.
Hinweis zu Aufgabe b)
Überlege, wie ein Schloss offen werden kann – und ob danach noch Fehlversuche gezählt werden. Kann ein gesperrtes Schloss je geöffnet werden, ohne zurückgesetzt zu werden? Was bewirkt zuruecksetzen()?
Hinweis zu Aufgabe c)
Mögliche Kriterien: Was steht jeweils im Kopf? Gibt es Datentypen oder Werte? Stehen Methoden darin? Gilt die Darstellung immer oder nur zu einem Zeitpunkt? Wie viele Karten gibt es von jeder Sorte?„Vergleichen“ heißt: Gemeinsamkeiten und Unterschiede nach Kriterien darstellen.
Hinweis zu Aufgabe d)
Sammle Argumente für und gegen den Vorschlag: Welche unmöglichen Zustände aus b) würden verhindert? Was wird aus dem Wunsch der Spielleitung, wenn „gesperrt“ nur noch aus den Fehlversuchen berechnet wird? Wäge ab und komme zu einem Ergebnis.„Erörtern“ heißt: Argumente gegenüberstellen, gewichten und zu einem begründeten Schluss kommen.

Erwartungshorizont

Erwartungshorizont zu Aufgabe a)

Zeile 4: false (s1: 1 Fehlversuch) · Zeile 5: true (s1 offen) · Zeile 6: false (s2: 1) · Zeile 7: false (s2: 2) · Zeile 8: false (s2: 3, gesperrt) · Zeile 9: false (gesperrt – obwohl der Code stimmt, keine Änderung) · Zeile 10: true (s1 ist schon offen, keine Änderung) · Zeile 11: false (s3: 1).

s1: Schloss
  • code = 417
  • offen = true
  • fehlversuche = 1
  • gesperrt = false
s2: Schloss
  • code = 250
  • offen = false
  • fehlversuche = 3
  • gesperrt = true
s3: Schloss
  • code = 999
  • offen = false
  • fehlversuche = 1
  • gesperrt = false

Typische Fehler: in Zeile 9 true angeben (Sperre übersehen), in Zeile 10 den Fehlversuch zählen (offenes Schloss übersehen).

Erwartungshorizont zu Aufgabe b)

s4 – möglich: z. B. new Schloss(808), zwei falsche Eingaben (etwa 880 und 088), dann eingeben(808). Nach zwei Fehlversuchen ist das Schloss noch nicht gesperrt; das Öffnen setzt die Fehlversuche nicht zurück.

s5 – unmöglich: Offen wird ein Schloss nur durch den richtigen Code, solange es nicht gesperrt ist. Ist es offen, verändern weitere Eingaben nichts, es können also keine Fehlversuche mehr hinzukommen. Ist es dagegen durch den dritten Fehlversuch gesperrt, kann es nicht mehr geöffnet werden; zuruecksetzen() würde alle drei Attribute gleichzeitig zurücksetzen. „offen und gesperrt“ kann daher nie gleichzeitig gelten; der Zustand deutet auf einen Programmfehler oder eine Manipulation hin.

s6 – möglich: new Schloss(640) und eine falsche Eingabe. Auch möglich: drei Fehlversuche, zuruecksetzen(), ein weiterer Fehlversuch.

Erwartungshorizont zu Aufgabe c)

Gemeinsamkeiten: Beide beziehen sich auf dieselbe Klasse und nennen dieselben vier Attribute.

Unterschiede: Die Klassenkarte trägt nur den Klassennamen, die Objektkarte den unterstrichenen Kopf s2: Schloss. Die Klassenkarte nennt Sichtbarkeiten und Datentypen sowie Konstruktor und Methoden, aber keine Werte; die Objektkarte nennt konkrete Werte (z. B. fehlversuche = 3) und keine Methoden. Die Klassenkarte gilt dauerhaft für alle Schlösser (es gibt sie einmal), die Objektkarte ist eine Momentaufnahme eines einzelnen Objekts nach Zeile 11 und veraltet mit dem nächsten verändernden Aufruf (z. B. zuruecksetzen()).

Erwartungshorizont zu Aufgabe d)

Für den Vorschlag: gesperrt ist im jetzigen Modell redundant, weil es immer genau dann wahr ist, wenn fehlversuche 3 erreicht hat. Redundante Attribute können auseinanderlaufen; ohne das Attribut wäre ein Teil der Fehlerbilder wie in b) unmöglich. Die Klasse wird kleiner, nach außen ändert sich nichts, weil istGesperrt() dieselbe Information liefert.

Gegen den Vorschlag: Den Wunsch der Spielleitung – entsperren, ohne die Fehlversuche zu löschen – kann das berechnete Modell nicht erfüllen: Solange fehlversuche 3 beträgt, gilt das Schloss als gesperrt. Mit einem eigenen Attribut ist die Sperre unabhängig von der Statistik steuerbar. Zudem hängt die Korrektheit ohnehin von der Implementierung der Methoden ab: Der Fehlerzustand von s5 entsteht nur durch fehlerhaften Code, nicht durch das Attribut selbst.

Mögliches Ergebnis: Für die aktuellen Anforderungen ist der Vorschlag sinnvoll. Soll der Wunsch der Spielleitung umgesetzt werden, ist das eigene Attribut gesperrt beizubehalten, weil „gesperrt“ dann eine eigenständige Information ist. Erwartet werden Argumente beider Seiten und ein begründetes Ergebnis, das sich auf die Zukunftsanforderung bezieht.