Namenskürzel erzeugen
AFB I–IIEin Vereinsprogramm erzeugt aus Vor- und Nachnamen ein Kürzel: der erste Buchstabe des Vornamens, dann die ersten drei Buchstaben des Nachnamens, alles in Großbuchstaben. Aus „Ada“ und „Lovelace“ wird „ALOV“. Es dürfen nur die Zeichenketten-Operationen der Prüfungsanlage verwendet werden.
- Nennen Sie die Zeichenketten-Operationen der Anlage, die Sie für das Kürzel benötigen.
- Entwerfen Sie ein Struktogramm für
kuerzel(vor, nach: Zeichenkette): Zeichenkette. Kleinbuchstaben sollen über den ASCII-Wert in Großbuchstaben umgewandelt werden. Nachnamen mit weniger als drei Buchstaben werden vollständig übernommen. - Implementieren Sie die Operation in einer objektorientierten Programmiersprache Ihrer Wahl.
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
Länge einer Zeichenkette bestimmen, Zeichen an einer Position auslesen, Zeichenketten verbinden, ASCII-Wert eines Zeichens bestimmen und umgekehrt (Teilzeichenkette auslesen ist ebenfalls möglich).
Erwartungshorizont zu Aufgabe b)
kuerzel(vor, nach: Zeichenkette): Zeichenkette
gross(z: Zeichen): Zeichen
Erwartungshorizont zu Aufgabe c)
def gross(z):
a = ord(z)
if 97 <= a <= 122:
a = a - 32
return chr(a)
def kuerzel(vor, nach):
k = gross(vor[0])
n = min(3, len(nach))
for i in range(n):
k = k + gross(nach[i])
return kNotationen im Vergleich
AFB II–IIIFür eine Mediathek liegt folgendes Klassendiagramm vor:
- jahr: Ganzzahl
- ausleihen: dyn. Reihung vom Inhaltstyp Datum
...
+ getTitel(): Zeichenkette
+ anzahlAusleihen(): Ganzzahl
+ istAelterAls(m: Medium): Wahrheitswert
- Erläutern Sie die Bedeutung der Zeichen
-,+,cund...in diesem Diagramm. - Entwerfen Sie ein relationales Datenbankschema in Kurzschreibweise, das dieselben Informationen speichert (Medien und ihre Ausleihdaten).
- Vergleichen Sie, wie die Anzahl der Ausleihen im objektorientierten Modell und in der Datenbank ermittelt wird.
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
-: privat, nur innerhalb der Klasse; +: öffentlich; c: Konstruktor; ...: weitere Attribute bzw. Operationen, die hier keine Rolle spielen.
Erwartungshorizont zu Aufgabe b)
Medium(MNr, Titel, Jahr), Ausleihe(ANr, Datum, ↑MNr). Ein zusätzlicher künstlicher Schlüssel MNr ist nötig, weil Titel nicht eindeutig sein müssen.
Erwartungshorizont zu Aufgabe c)
OOP: anzahlAusleihen() gibt ausleihen.getLength() zurück — die Daten liegen im Objekt. Datenbank: SELECT COUNT(*) FROM Ausleihe WHERE MNr = 7 bzw. mit GROUP BY für alle Medien. Gemeinsam: 1:n-Beziehung. Unterschied: Im Objekt ist die Reihung Teil des Mediums, in der Datenbank verweist jede Ausleihe per Fremdschlüssel auf das Medium.
