Abitur Hessen Praktische Informatik 2022 · LK
Abiturprüfung Praktische Informatik in Hessen 2022, LK: 26 Aufgaben mit Lösungen. Themen: Klassendiagramme und Objektdiagramme. Mit automatischer Korrektur.
Themen der Prüfung: Klassendiagramme und Objektdiagramme · Klassen und Methoden implementieren · Dynamische Datenstrukturen · Anwendungsfalldiagramme · Client-Server und Nebenläufigkeit · ER-Modelle entwickeln · Relationenmodell und Normalisierung · SQL-Anweisungen und Transaktionen
Aufgabe Vorschlag A - 1.1 · ER-Modelle entwickeln
Material 1
Entity-Relationship-Modell
Hinweise: Die Herkunft eines Lebewesens speichert sein Ursprungsgebiet (z. B. Südamerika, Kamerun). Die Wuchshöhe der Pflanzenarten und die Länge der Fischarten wird in Zentimeter angegeben. Der Lichtbedarf von Pflanzenarten ist gering, mittel oder hoch. Die Gruppengröße bei Fischen erfasst die optimale Anzahl von Individuen einer Art in einem Aquarium.
Das Lieferdatum wird erst nach erfolgter Lieferung der Bestellung eingetragen.
1.1 Beschreiben Sie die in dem ERM auftretenden Notationselemente und erklären Sie deren Bedeutung jeweils anhand eines Beispiels aus dem vorliegenden Modell.
Aufgabe Vorschlag A - 1.2 · Relationenmodell und Normalisierung
Material 1
Entity-Relationship-Modell
Hinweise: Die Herkunft eines Lebewesens speichert sein Ursprungsgebiet (z. B. Südamerika, Kamerun). Die Wuchshöhe der Pflanzenarten und die Länge der Fischarten wird in Zentimeter angegeben. Der Lichtbedarf von Pflanzenarten ist gering, mittel oder hoch. Die Gruppengröße bei Fischen erfasst die optimale Anzahl von Individuen einer Art in einem Aquarium.
Das Lieferdatum wird erst nach erfolgter Lieferung der Bestellung eingetragen.
1.2 Überführen Sie das ERM in das relationale Modell in der 3. Normalform und begründen Sie Ihre Entscheidungen.
Hinweise: Es ist darauf zu achten, dass möglichst keine null-Werte in den Datenfeldern auftreten. Alle Relationen sind in der Schreibweise Relation( PK, Attribut,..., FK#) anzugeben.
Aufgabe Vorschlag A - 1.3 · SQL-Anweisungen und Transaktionen
Material 1
Entity-Relationship-Modell
Hinweise: Die Herkunft eines Lebewesens speichert sein Ursprungsgebiet (z. B. Südamerika, Kamerun). Die Wuchshöhe der Pflanzenarten und die Länge der Fischarten wird in Zentimeter angegeben. Der Lichtbedarf von Pflanzenarten ist gering, mittel oder hoch. Die Gruppengröße bei Fischen erfasst die optimale Anzahl von Individuen einer Art in einem Aquarium.
Das Lieferdatum wird erst nach erfolgter Lieferung der Bestellung eingetragen.
1.3 Einige Daten der Datenbank sollen ergänzt, geändert bzw. ausgewertet werden.
1.3.1
Der neue Kunde Hans Hecht aus 89075 Ulm, Donautor 1, Telefon 0177 1234567 erhält die Kundennummer 7654 und bestellt am 02.05.2022 einen Aquariumbelüfter (artNr 277). Entwickeln Sie die SQL-Anweisungen, um die erforderlichen Datensätze einzufügen und den Bestand des Artikels zu aktualisieren.
Hinweis: Die Bestellnummer einer Bestellung wird automatisch vergeben (AUTO_INCREMENT).
1.3.2
Formulieren Sie eine SQL-Anweisung, die die Bestellnummern und Kundendaten der Bestellungen, die noch nicht geliefert wurden und in den PLZ-Bereich 12 versendet werden sollen, ausgibt.
1.3.3
Die Gesamtumsätze von Fischen der Bestellungen mit dem Bestelldatum im 1. Quartal 2022 sollen nach Herkunft gruppiert ausgegeben werden. Implementieren Sie eine entsprechende SQL-Anweisung.
Aufgabe Vorschlag A - 1.4 · ER-Modelle entwickeln
Material 1
Entity-Relationship-Modell
Hinweise: Die Herkunft eines Lebewesens speichert sein Ursprungsgebiet (z. B. Südamerika, Kamerun). Die Wuchshöhe der Pflanzenarten und die Länge der Fischarten wird in Zentimeter angegeben. Der Lichtbedarf von Pflanzenarten ist gering, mittel oder hoch. Die Gruppengröße bei Fischen erfasst die optimale Anzahl von Individuen einer Art in einem Aquarium.
Das Lieferdatum wird erst nach erfolgter Lieferung der Bestellung eingetragen.
1.4 Im Aquaristikhandel werden Daten zum Versand der Artikel einer Bestellung erfasst, die zurzeit noch in Form einer Tabelle (Material 2) festgehalten werden.
Entwickeln und zeichnen Sie die Erweiterung des ERM in Material 1 auf Grundlage der Tabelle in Material 2.
Hinweis: Es sind nur die Erweiterungen und Veränderungen zum ursprünglichen Modell zu berücksichtigen. [10 BE]
Material 2: Tabelle Versanddaten (Ausschnitt)
Hinweise: Der Versand lebender Artikel (vierstellige Artikelnummern) erfordert entsprechendes Verpackungsmaterial und wird über Firmen abgewickelt, die auf Tiertransporte spezialisiert sind. Zubehör (dreistellige Artikelnummern) wird immer über DHL getrennt versendet. Ein Kunde kann mehrere Lieferadressen haben.
Ihre Modellierung und Zeichnung der ERM-Erweiterung:
Aufgabe Vorschlag A - 2 · Klassendiagramme und Objektdiagramme
2 Objektorientierte Entwicklung eines Zuchtmanagementsystems
Ein erstes UML-Klassendiagramm finden Sie in Material 3:
Material 3
UML-Klassendiagramm Zuchtmanagement
Hinweise: Die Einheit aller Längenmaße ist Zentimeter. Auf alle Attribute kann mittels get-Methoden zugegriffen werden.
2.1
Beschreiben Sie das Prinzip der Datenkapselung unter Nennung der verschiedenen Zugriffsmodifizierer aus dem Klassendiagramm und erläutern Sie dieses Prinzip am Beispiel des Containers lebewesen der Klasse Aquarium.
[4 BE]
2.2
In Material 4 ist beispielhaft der Besatz zweier Aquarien aufgeführt. Entwickeln und zeichnen Sie auf Grundlage von Material 4, unter Berücksichtigung der dort aufgeführten Hinweise sowie des Klassendiagramms, ein Objektdiagramm in UML-Notation.
[8 BE]
Material 4: Beispiel-Besatz von Aquarien
Aquarium Nr. 13
Länge 100 cm, Breite 40 cm, Höhe 40 cm
Volumen netto 140 Liter (brutto 160 Liter)
Aquarium Nr. 18
Länge 160 cm, Breite 60 cm, Höhe 60 cm
Volumen netto 504 Liter (brutto 576 Liter)
Hinweise: Das Brutto-Volumen eines Aquariums in Litern berechnet sich aus Länge*Breite*Höhe/1000. Das Netto-Volumen (Attribut nettoVolumenInLiter) ist durch Substrat (Kies und Sand) um pauschal 12,5% geringer als das Brutto-Volumen. Das jeweilige Netto-Mindestvolumen für die Fische eines Aquariums berechnet sich nach der Faustregel: Pro Zentimeter Fischlänge (Attribut laengeInCM) sind 2 Liter Wasser erforderlich.
Beispiel: 15 Tiere „Blauer Neon“ je 3 cm * 2 Liter = 90 Liter, 5 Tiere „Panda-Panzerwels“ je 5 cm * 2 Liter = 50 Liter. Die Summe von 140 Liter beider Volumenergebnisse wird in dem Attribut literBelegt gespeichert. Das Netto-Volumen des Aquariums Nr. 13 ist also mit 140 Litern ausreichend. Der Besatz mit Pflanzen ist bei dieser Berechnung nicht zu berücksichtigen.
Eine Fischart wird in einem Aquarium in einer festgelegten Gruppengröße gehalten (Attribut gruppengroesse). In einem Aquarium werden nur Arten gehalten, die zueinander verträglich sind.
Aufgabe Vorschlag A - 2 · Klassen und Methoden implementieren
Material 3
UML-Klassendiagramm Zuchtmanagement
Hinweise: Die Einheit aller Längenmaße ist Zentimeter. Auf alle Attribute kann mittels get-Methoden zugegriffen werden.
2.3
Überführen Sie die Klassen Aquarium, Lebewesen und Fischart in Anweisungen einer objektorientierten Programmiersprache und implementieren Sie die dargestellten Methoden.
Hinweise: Die Methode ermittleHerkunft() der Klasse Aquarium gibt die Herkunft des ersten Lebewesens oder einen leeren String bei einem leeren Aquarium zurück. Die Methode pruefeFreiesVolumen() gibt true zurück, wenn das Volumen des Aquariums für die Gruppe der übergebenen Fischart ausreicht, ansonsten false. Die Methode besetzeAquarium() fügt die übergebene Art dem Container lebewesen hinzu. Bei Fischarten ist das nur möglich, wenn das freie Volumen des Aquariums ausreichend ist. Sie können davon ausgehen, dass der Methode besetzeAquarium() nur verträgliche Fischarten übergeben werden. Die Dokumentation der Klasse List ist in Material 5 zu finden.
2.4
Die Methode findeAquarium() der Klasse Zuchtmanagement gibt ein Aquarium für die übergebene Fischart zurück, wobei folgende Festlegungen zu berücksichtigen sind:
Es ist immer mindestens ein leeres Aquarium vorhanden.
Ein Aquarium muss über ausreichend freien Platz für die Gruppengröße der Fischart verfügen.
In einem Aquarium haben alle Lebewesen dieselbe Herkunft.
Die Fischarten in einem Aquarium müssen untereinander verträglich sein. Eine Fischart, die mit keiner anderen verträglich ist, wird als einzige in einem Aquarium gehalten.
Ein Aquarium wird nur einmal mit derselben Fischart besetzt.
Der Besatz einer Fischart in ein bereits mit Lebewesen gleicher Herkunft belegtes Aquarium ist bei ausreichendem Platz vorzuziehen. Wenn das nicht möglich ist, wird das erste leere Aquarium des Containers aquarien zurückgegeben.
Entwickeln und zeichnen Sie ein Struktogramm für die Methode.
Aufgabe Vorschlag A - 2.5.1 · Klassen und Methoden implementieren
Material 6
UML-Klassendiagramm Aquariumssteuerung
Material 7
Belegung der Ports (schematisch)
Hinweise: Der Temperatursensor LM 35 hat eine Empfindlichkeit von und einen messbaren Temperaturbereich von bis . Die Formel zur Berechnung der Temperatur in Abhängigkeit vom gemessenen Wert am analogen Eingang lautet:
2.5.1 Die Klasse Steuerung (Material 6) überwacht und regelt die Temperatur eines Aquariums.
Bei der Erzeugung eines Steuerungsobjekts für das übergebene Aquarium auf dem angegebenen Device wird die optimale Temperatur (Attribut optimaleTemp) für die Lebensgemeinschaft des Aquariums anhand der Methode ermittleOptimaleTemp() initialisiert.
Die Methode ermittleAktuelleTemp() gibt einen über 20 eingelesene Messwerte des Temperatursensors gemittelten und in Grad Celsius umgewandelten Wert zurück, wobei zwischen den einzelnen Messungen 10 Millisekunden Wartezeit liegen.
Die Methode run() der Klasse Steuerung schaltet den Heizstab ein und prüft im Minutentakt das Erreichen der optimalen Temperatur. Ist diese erreicht, wird der Heizstab entsprechend ausgeschaltet.
Zur daraufhin beginnenden Überwachung wird die aktuelle Temperatur ermittelt und mit der optimalen Temperatur verglichen. Um ständige Schaltvorgänge zu verhindern, ist eine Abweichung von Grad Celsius zu berücksichtigen. Ein Messintervall beträgt in der Regel 5 Minuten.
Wenn eine Messung unter oder über dem Sollbereich liegt, wird der Heizstab entsprechend geschaltet, das Ereignis gezählt und das Messintervall auf 1 Minute heruntergesetzt.
Wenn der Sollbereich nach 5 Minuten nicht wiederhergestellt ist, wird die Alarmleuchte eingeschaltet.
Implementieren Sie Klasse Steuerung mit dem Konstruktor und den Methoden run() sowie ermittleAktuelleTemp().
Hinweis: Die Dokumentation der Klasse VUSB ist in Material 5 zu finden. [12 BE]
Aufgabe Vorschlag A - 2.5.2 · Client-Server und Nebenläufigkeit
Material 6
UML-Klassendiagramm Aquariumssteuerung
Material 7
Belegung der Ports (schematisch)
Hinweise: Der Temperatursensor LM 35 hat eine Empfindlichkeit von und einen messbaren Temperaturbereich von bis . Die Formel zur Berechnung der Temperatur in Abhängigkeit vom gemessenen Wert am analogen Eingang lautet:
2.5.2 Die Steuerung soll um die Lichtregelung mit folgenden Anforderungen erweitert werden:
Eine dimmbare LED-Beleuchtung für ein Aquarium zeichnet sich durch ihr Modell und die maximale Leistung in Lumen aus. Die optimale Lichtmenge, die Farbtemperatur und die Tageslänge (Dauer der Beleuchtung pro Tag) werden entsprechend der Herkunft der Lebensgemeinschaft festgelegt.
Die Lichtsteuerung soll durch entsprechendes Dimmen der Leuchte einen natürlichen Tagesablauf simulieren (Sonnenaufgang, Sonnenuntergang, Mondphasen usw.).
Die Steuerung von Temperatur und Licht müssen gleichzeitig ablaufen.
Entwickeln Sie auf Grundlage von Material 6 ein UML-Klassendiagramm mit Attributen, Konstruktoren, Methoden und Assoziationen, das die genannten Anforderungen zusätzlich umsetzt.
Hinweis: Set- und get-Methoden müssen nicht dargestellt werden.
Aufgabe Vorschlag B - 1.1 · Anwendungsfalldiagramme
Material 1
1.1
Der Zugang einer Kundin oder eines Kunden (im Folgenden Kunde genannt) auf ein Konto erfolgt über den EB-Server. Folgende Funktionalitäten sind bei der Entwicklung des EB-Systems bereit zu stellen:
Der Kunde muss sich beim EB-Server unter Angabe von IBAN und Online-PIN des Kontos anmelden (Login).
Er kann den aktuellen Kontostand abfragen.
Der Kunde kann Überweisungen tätigen, wobei eine Überweisung nur ausgeführt wird, wenn das Konto des Kunden eine entsprechende Deckung aufweist.
Der Kunde kann sich eine Übersicht über die Buchungen seines Kontos anzeigen lassen.
Er kann nach Buchungen suchen.
Der Kunde kann die Sitzung beenden.
Entwickeln und zeichnen Sie für diese Anwendungsfälle ein Anwendungsfalldiagramm in UML-Notation. [5 BE]
Aufgabe Vorschlag B - 1 · Klassendiagramme und Objektdiagramme
Material 1
1.2
Datenkapselung ist ein wichtiges Prinzip der Objektorientierten Programmierung. Beschreiben Sie den Zweck der Datenkapselung und die im Klassendiagramm (Material 1) vertretenen Zugriffsarten. Erläutern Sie das Geheimnisprinzip am Beispiel der Attribute pin und kontostand der Klasse Konto. [4 BE]
1.3
In Material 2 ist ein Beispiel für die Buchungsanzeige eines Kontos dargestellt.
Material 2: Beispiel Buchungsanzeige
Konto IBAN DE07123412341234123412
Kontostand 599,48 EUR
Buchungstag
Buchungstext
Betrag in EUR
18.04.2022
Einkauf Proper-Markt
-42,70
10.04.2022
Geburtstagsgeld von Oma
100,00
01.04.2022
Mietzins 04/2022
-566,30
31.03.2022
Lohn 03/2022 Soft GmbH
1108,48
Zeichnen Sie ein UML-Objektdiagramm auf Grundlage dieser Buchungsanzeige unter Berücksichtigung des Klassendiagramms in Material 1.
Hinweis: Fehlende Attributwerte sind durch sinnvolle Werte zu ergänzen. [4 BE]
Aufgabe Vorschlag B - 1.4 · Dynamische Datenstrukturen
Material 1
1.4 Implementieren Sie die Klassen Konto und Buchung aus Material 1 ohne get- und set-Methoden.
Hinweise: Der PIN eines neuen Konto-Objekts wird mithilfe der statischen Methode generierePin() der Klasse EBVerwaltung erzeugt. Die Methode zeigeBuchungen() der Klasse Konto generiert einen String in Form der Umsatzanzeige in Material 2. Die Methoden einzahlen() und ueberweisen() erzeugen nach erfolgreicher Ausführung der Operation jeweils ein Buchungsobjekt, das als neueste in der verketteten Liste eingefügt wird. Eine Überweisung wird nur ausgeführt, wenn das Konto dadurch nicht überzogen wird. Die Methode sucheBuchungen() durchsucht die Buchungstexte nach der übergebenen Zeichenfolge und gibt die gefundenen Buchungsobjekte als Liste zurück. Die toString()-Methode der Klasse Buchung generiert eine Zeichenkette mit den Buchungsdaten gemäß der Umsatzanzeige in Material 2. Die Dokumentationen der Klassen Date, List und String sind in Material 3 zu finden.
Material 2: Beispiel Buchungsanzeige
Material 3: Klassendokumentationen
a)
b)
Aufgabe Vorschlag B - 1.5 · Klassen und Methoden implementieren
Material 1
1.5
Die Methode sucheKonto() der Klasse EBVerwaltung prüft zunächst die IBAN und sucht dann das entsprechende Konto. Dieses wird zurückgegeben, im Fehlerfall null.
Entwickeln Sie ein Struktogramm für den Algorithmus dieser Methode. [5 BE]
Aufgabe Vorschlag B - 1 · Client-Server und Nebenläufigkeit
Material 1
1.6 Das EB-System ermöglicht einem Kunden den Zugriff auf sein Konto, um Überweisungen zu tätigen. Wurde vom EB-Server eine Verbindungsanfrage akzeptiert, werden Client-Anfragen entgegengenommen und gemäß Protokoll bearbeitet. Nach erfolgreicher Anmeldung kann der Kunde bei ausreichender Kontodeckung Überweisungen tätigen, bis er sich vom Server abmeldet. Eine typische Sitzung des EB sieht folgendermaßen aus:
( > für Antwort vom Server, < für Kommandos vom Client, <LF> Enter-Taste): > +OK E-Banking
< anmelden;DE06550205000222222222;4554<LF> (Client sendet IBAN und PIN)
> +OK Willkommen
< ueberweisen;DE68210501700012345678;Einkauf Topmarkt;99.76<LF> (IBAN des Empfängers, Buchungstext und Betrag)
> +OK Überweisung erfolgt
> Aktueller Kontostand: 108.04 EURO
< ueberweisen;DE68210501700012345678;KFZ-Versicherung;499.0<LF>
> -ERR Überweisung nicht erfolgt
> Aktueller Kontostand: 108.04 EURO
< quit<LF> In der Beispielsitzung meldet sich ein Kunde mit der IBAN DE06 5502 0500 0222 2222 22 und dem PIN 4554 erfolgreich an und überweist 99,76 EURO auf das Konto mit der IBAN DE68 2105 0170 0012 3456 78. Für die zweite Überweisung besteht keine ausreichende Deckung auf dem Konto und es wird eine entsprechende Meldung ausgegeben. Daraufhin meldet sich der Kunde ab.
1.6.1
Erläutern Sie das Client-Server-Modell anhand des EB-Systems unter Berücksichtigung der Begriffe "Client", "Server", "Dienst" und "Protokoll". [4 BE]
1.6.2
Implementieren Sie die Klasse EBServer aus Material 1 unter Berücksichtigung des in Aufgabe 1.6 wiedergegebenen Sitzungsprotokolls sowie des UML-Sequenzdiagramms für die Server-Seite aus Material 4. [9 BE]
Hinweise: Die Dokumentationen der Klassen Socket, ServerSocket und String sind in Material 3 zu finden. Zur Umwandlung eines Strings in eine Integer-Zahl bzw. Fließkommazahl stehen die Methoden Integer.parseInt(s: String): int und Double.parseDouble(s: String): double zur Verfügung.
1.6.3
Entwickeln und zeichnen Sie das UML-Sequenzdiagramm für die Client-Seite unter Berücksichtigung des in Aufgabe 1.6 wiedergegebenen Sitzungsprotokolls sowie des UML-Sequenzdiagramms für die Server-Seite (Material 4) in Material 5. [8 BE]
Hinweise: Die Methode getAnmeldeDaten() der Klasse EBClient liefert einen String in der Form anmelden;[iban];[pin], die Methode getUeberweisungsDaten() liefert einen String in der Form ueberweisen;[text];[iban];[betrag] bzw. quit für das Beenden der Sitzung.
1.7 Multithreading im EB-Server
Der EB-Server soll zukünftig mehrere Clients gleichzeitig bedienen können.
1.7.1
Beschreiben Sie die Eigenschaften von Prozessen und Threads. Erläutern Sie anhand des E-Banking-Systems, dass es zu Problemen kommen kann, wenn mehrere Threads auf eine Variable zugreifen und benennen Sie eine Lösung für das Problem. [4 BE]
1.7.2
Entwickeln Sie auf der Grundlage des Klassendiagramms aus Material 1 ein erweitertes Modell und zeichnen Sie dieses. [3 BE]
Hinweis: Es sind nur die für die Aufgabenstellung relevanten Klassen aus dem gegebenen Klassendiagramm (Material 1) zu übernehmen.
Aufgabe Vorschlag B - 2.1 · Relationenmodell und Normalisierung
Material 6
ER-Diagramm
Hinweise: Der Abschluss von Darlehensverträgen ist von der Führung eines Gehaltskontos (Girokonto) des Kreditnehmers bei der Bank abhängig. Summe legt die aufgenommene Kreditsumme fest. Die Darlehensrate (Attribut rate) setzt sich aus der Tilgungsrate und dem Zinsanteil zusammen. Mit Turnus wird die Anzahl der Ratenzahlungen pro Jahr bestimmt (12 monatlich, 4 vierteljährlich, 1 jährlich). Die Laufzeit wird in Jahren angegeben. Auf Wunsch des Kunden kann eine höhere als die Mindest-Rate vereinbart werden.
2.1 Überführen Sie das ER-Modell in das relationale Modell in der 3. Normalform.
Hinweis: Alle Relationen sind in der Schreibweise Relation( PK, Attribut,..., FK#) anzugeben.
Aufgabe Vorschlag B - 2.2 · SQL-Anweisungen und Transaktionen
Material 6
ER-Diagramm
Hinweise: Der Abschluss von Darlehensverträgen ist von der Führung eines Gehaltskontos (Girokonto) des Kreditnehmers bei der Bank abhängig. Summe legt die aufgenommene Kreditsumme fest. Die Darlehensrate (Attribut rate) setzt sich aus der Tilgungsrate und dem Zinsanteil zusammen. Mit Turnus wird die Anzahl der Ratenzahlungen pro Jahr bestimmt (12 monatlich, 4 vierteljährlich, 1 jährlich). Die Laufzeit wird in Jahren angegeben. Auf Wunsch des Kunden kann eine höhere als die Mindest-Rate vereinbart werden.
Einige Daten der Datenbank sollen ergänzt, geändert bzw. ausgewertet werden. Folgende Funktionen stehen zur Verfügung:
NOW() liefert das aktuelle Tagesdatum.
POWER(m, n) liefert das Ergebnis von .
ROUND(x, n) liefert den auf Nachkommastellen gerundeten Betrag .
2.2.1
Die letzten zehn Buchungen des Kontos mit der IBAN DE06 5502 0500 0222 2222 22 sollen nach Buchungstag absteigend sortiert ausgegeben werden. Geben Sie eine entsprechende SQL-Anweisung an. (3 BE)
2.2.2
Der Kunde Paul Müller schließt heute ein neues Darlehen (Vertragsnummer 12345) über die Summe von 30.000 EUR ab. Die Laufzeit beträgt 10 Jahre bei einem Zinssatz von 1,76 Prozent. Die Raten werden im monatlichen Turnus (Turnus = 12) von dem Referenzkonto mit der IBAN DE06 5502 0500 0222 2222 22 abgebucht. Entwickeln Sie die SQL-Anweisungen, um das neue Darlehen in die Datenbank einzufügen und die monatliche Rate zu setzen. (5 BE)
Hinweis: Die Mindest-Höhe der (jährlichen) Annuität eines Kredits mit der Kreditsumme bei einem Zinssatz von (z.B. ) und einer Laufzeit von Jahren lässt sich mittels der Formeln berechnen.
2.2.3
Am Monatsende werden unter anderem die Buchungen der monatlich zu zahlenden Darlehensraten durchgeführt. Dafür werden zuerst die Kunden mit der IBAN des Referenzkontos, der Vertragsnummer und der Ratenhöhe ausgegeben, bei denen aufgrund nicht ausreichender Deckung auf dem Konto keine Buchung erfolgen kann. Anschließend sollen die Kontostände aller Kunden, die ein Darlehen abgeschlossen haben, entsprechend aktualisiert werden. Entwickeln Sie die entsprechenden SQL-Anweisungen. (6 BE)
Hinweis: Das Hinzufügen der Buchungen in die Buchungstabelle ist nicht Gegenstand dieser Aufgabe.
2.2.4
Alle Kunden sollen mit der Gesamtsumme ihrer aufgenommenen Darlehen aufgeführt werden, sofern die Gesamtsumme 100.000 EUR übersteigt. Die Liste soll nach der Gesamtsumme absteigend sortiert sein. Implementieren Sie eine entsprechende SQL-Anweisung. (4 BE)
Aufgabe Vorschlag B - 2.3 · ER-Modelle entwickeln
Material 6
ER-Diagramm
Hinweise: Der Abschluss von Darlehensverträgen ist von der Führung eines Gehaltskontos (Girokonto) des Kreditnehmers bei der Bank abhängig. Summe legt die aufgenommene Kreditsumme fest. Die Darlehensrate (Attribut rate) setzt sich aus der Tilgungsrate und dem Zinsanteil zusammen. Mit Turnus wird die Anzahl der Ratenzahlungen pro Jahr bestimmt (12 monatlich, 4 vierteljährlich, 1 jährlich). Die Laufzeit wird in Jahren angegeben. Auf Wunsch des Kunden kann eine höhere als die Mindest-Rate vereinbart werden.
Die Datenbank soll um folgende Anforderungen erweitert werden:
Es sollen die beiden Darlehensarten Kleinkredit und Hypothekendarlehen unterschieden werden.
Bei Kleinkrediten ist zusätzlich der Verwendungszweck zu speichern.
Bei Hypothekendarlehen wird die Grundschuld und das Eigenkapital festgehalten. Außerdem wird jedes Hypothekendarlehen durch mindestens eine Immobilie mit den Eigenschaften Adresse, Immobilienart und Verkehrswert abgesichert. Eine Immobilie kann Sicherheit für mehrere Hypothekendarlehen sein.
Ein Kunde kann Depotkonten eröffnen. Ein Depot zeichnet sich durch eine eindeutige ID und das Eröffnungsdatum aus. Auf einem Depotkonto werden die Bestände (Stückzahl) an Wertpapieren und alle Transaktionen verbucht. Ein Wertpapier hat eine eindeutige Wertpapierkennnummer (WKN), eine Bezeichnung und eine Währung. Die Transaktion zu einer Wertpapierposition eines Depots ist mit der Art (An- oder Verkauf), der Anzahl, dem Datum und dem Kurs zu speichern.
Kaufpreise, Verkaufserlöse und Gutschriften eines Depotkontos werden über ein Girokonto des Kunden verbucht.
Entwickeln und zeichnen Sie ein ER-Modell, das die genannten Anforderungen umsetzt.
Hinweise: Die Vorlage des Entity-Relationship-Diagramms in Material 6 kann verwendet werden. Das ER-Diagramm ist mit Entitätstypen, Attributen und Beziehungen sowie deren Kardinalitäten in [min, max]-Notation darzustellen.
Aufgabe Vorschlag B - 2.4 · Relationenmodell und Normalisierung
Material 6
ER-Diagramm
Hinweise: Der Abschluss von Darlehensverträgen ist von der Führung eines Gehaltskontos (Girokonto) des Kreditnehmers bei der Bank abhängig. Summe legt die aufgenommene Kreditsumme fest. Die Darlehensrate (Attribut rate) setzt sich aus der Tilgungsrate und dem Zinsanteil zusammen. Mit Turnus wird die Anzahl der Ratenzahlungen pro Jahr bestimmt (12 monatlich, 4 vierteljährlich, 1 jährlich). Die Laufzeit wird in Jahren angegeben. Auf Wunsch des Kunden kann eine höhere als die Mindest-Rate vereinbart werden.
Mitarbeiterinnen und Mitarbeiter der Bank beraten die Kunden in Finanzangelegenheiten. Dazu werden Beratungstermine vereinbart, die zurzeit in der folgenden Tabelle (Ausschnitt) festgehalten werden:
Analysieren Sie die Struktur der Tabelle und beschreiben Sie eventuell auftretende Probleme anhand von Beispielen.
Aufgabe Vorschlag C - 1.1 · Klassendiagramme und Objektdiagramme
Material 2
UML-Klassendiagramm
Hinweise: Die Methode toString() der Klasse Einzelteil ergibt eine Zeichenkette der Form:
ID=e19, Lenker wiegt 234 g, kostet 45.00 EUR, Hersteller: TeamPro, Name: Evaluation, 42 cm
Die private Methode leseDatenAusDatei() initialisiert das Attribut String[] konfigzeilen der Klasse Bike mittels der Konfigurationsdatei (Material 1).
Auf alle Attribute kann mittels get-Methoden zugegriffen werden.
Die Klasse Komponente hat bei der Modellierung der Bestandteile eines Bikes eine besondere Bedeutung. Beschreiben Sie die im Klassendiagramm in Material 2 vorliegende Vererbungsstruktur (Stichworte: Spezialisierung, Generalisierung, abstrakte Klassen, Methoden, Zugriffsrecht protected, Polymorphie). Erläutern Sie die Beziehung zwischen den Komponenten und deren Bedeutung für die Implementierung einer doppelt verketteten Liste.
[6 BE]
a)
b)
Aufgabe Vorschlag C - 1.2 · Klassen und Methoden implementieren
Material 2
UML-Klassendiagramm
Hinweise: Die Methode toString() der Klasse Einzelteil ergibt eine Zeichenkette der Form:
ID=e19, Lenker wiegt 234 g, kostet 45.00 EUR, Hersteller: TeamPro, Name: Evaluation, 42 cm
Die private Methode leseDatenAusDatei() initialisiert das Attribut String[] konfigzeilen der Klasse Bike mittels der Konfigurationsdatei (Material 1).
Auf alle Attribute kann mittels get-Methoden zugegriffen werden.
1.2 Überführen Sie die Klassen Komponente und RahmenTeil (Material 2) in Anweisungen einer objektorientierten Programmiersprache und implementieren Sie die Konstruktoren und Methoden. [8 BE]
Hinweise: Der Parameter part0 des Konstruktors der Klasse Komponente enthält alle Attributwerte, jeweils durch Komma getrennt. Analog zusammengesetzt ist der zweite Konstruktor-Parameter part1 der Komponententypen.
Aufgabe Vorschlag C - 1.3 · Klassendiagramme und Objektdiagramme
Material 2
UML-Klassendiagramm
Hinweise: Die Methode toString() der Klasse Einzelteil ergibt eine Zeichenkette der Form:
ID=e19, Lenker wiegt 234 g, kostet 45.00 EUR, Hersteller: TeamPro, Name: Evaluation, 42 cm
Die private Methode leseDatenAusDatei() initialisiert das Attribut String[] konfigzeilen der Klasse Bike mittels der Konfigurationsdatei (Material 1).
Auf alle Attribute kann mittels get-Methoden zugegriffen werden.
Material 1
Datenblatt und Konfigurationsdatei für das Bike mit der ID 104
BikeID: 104
Anzahl Komponenten: 28
Modell: Manu ATTAIN GTC Carbon
Kategorie: RacingBike
Ausschnitt Komponenten in Einbaureihenfolge
ID
Bezeichnung
Gewicht in g
Preis in €
Hersteller
Gruppe
Name
Abmessung
Detail
r3
Rahmen
1114
1000.50
Manu
Manu A
56 cm
r7
Gabel
367
299.30
Manu
Manu A
1 1/8"-1 1/4"
e13
Sattel
187
50.00
MFactory
BergWork
Breite L
s12
Kurbel
641
222.69
Champions
Form 12
2-fach
e19
Lenker
234
45.00
TeamPro
Evalution
42 cm
s37
Schaltwerk
232
149.90
Champions
Form 12
2x12-fach
s40
Kette
239
27.70
Champions
Form 12
gekürzt
s10
Bremsgriff r
195
179.00
Champions
Form 12
+Schaltzug
s13
Bremse vorne
163
85.00
Champions
Form 12
Felgen-Br
...
e65
Hinterrad
1226
249.20
Radelfoxi
TubelessC
2.7 cm
1.3
Im Material 1 sind exemplarisch Daten für die Montage eines Rennrads zusammengestellt. Entwickeln und zeichnen Sie ein UML-Objektdiagramm für das dargestellte Bike. [8 BE]
Hinweise: Für das Objektdiagramm sind aus der Tabelle in Material 1 nur die Komponenten von ID r3 bis ID s12 darzustellen. Beachten Sie auch das Klassendiagramm in Material 2. Nur für E-Bikes ist zwingend eine Versicherung notwendig. Auf die Darstellung des Attributs String[] konfigzeilen kann hier verzichtet werden.
Aufgabe Vorschlag C - 1 · Dynamische Datenstrukturen
Material 2
UML-Klassendiagramm
Hinweise: Die Methode toString() der Klasse Einzelteil ergibt eine Zeichenkette der Form:
ID=e19, Lenker wiegt 234 g, kostet 45.00 EUR, Hersteller: TeamPro, Name: Evaluation, 42 cm
Die private Methode leseDatenAusDatei() initialisiert das Attribut String[] konfigzeilen der Klasse Bike mittels der Konfigurationsdatei (Material 1).
Auf alle Attribute kann mittels get-Methoden zugegriffen werden.
1.4
Beim Herstellen eines Bikes ist der Rahmen immer das erste Bauteil. Die Methode hinzufuegenKomp() soll eine automatisierte Montage eines Fahrrads in gegebener Einbaureihenfolge nachbilden. Die Demontage eines Bikes ist genau in der umgekehrten Reihenfolge durchzuführen, weshalb die Komponenten doppelt verkettet werden.
Implementieren Sie die Klasse Bike mit ihrem Konstruktor sowie der Methode hinzufuegenKomp().
Hinweise: Die Methode hinzufuegenKomp() fügt ab der zweiten Komponente eine neue Komponente hinzu. Wenn bereits alle Teile des Bikes montiert sind, gibt sie false zurück. Alle Komponenten des Bikes werden bei der Objekterzeugung automatisch hinzugefügt. [12 BE]
1.5
Es kann erforderlich sein, dass eine in ein Bike eingebaute Komponente ersetzt werden muss. Für den Fall, dass man dafür Komponenten demontieren muss, ist die Kenntnis der Reihenfolge der Demontage vom letzten bis einschließlich zum zu ersetzenden Bauteil erforderlich. Die Methode ersetzeKomp() ersetzt die Komponente mit der gleichen ID und gibt einen String mit den Angaben der auszubauenden Komponenten in der richtigen Reihenfolge zurück. Falls keine Komponente ersetzt wird, soll der zurückgegebene String diese Information enthalten.
Implementieren Sie die Methode ersetzeKomp().
Hinweise: Die zu ersetzende Komponente wird anhand der mitgelieferten ID identifiziert. Da man die erste Komponente, den speziellen Rahmen, nicht ersetzen muss, ist davon auszugehen, dass das Bike mindestens aus zwei montierten Teilen besteht, wenn die Methode ersetzeKomp() ausgeführt wird. [7 BE]
Aufgabe Vorschlag C - 1.6 · Klassen und Methoden implementieren
Material 2
UML-Klassendiagramm
Hinweise: Die Methode toString() der Klasse Einzelteil ergibt eine Zeichenkette der Form:
ID=e19, Lenker wiegt 234 g, kostet 45.00 EUR, Hersteller: TeamPro, Name: Evaluation, 42 cm
Die private Methode leseDatenAusDatei() initialisiert das Attribut String[] konfigzeilen der Klasse Bike mittels der Konfigurationsdatei (Material 1).
Auf alle Attribute kann mittels get-Methoden zugegriffen werden.
1.6 Für das montierte Bike wird in der Methode berechnePreis() der Gesamtpreis ermittelt, wobei es einige Besonderheiten zu beachten gilt.
Das Unternehmen will seine aktuellen Restbestände von Rahmenteilen der Gruppe Manu X abverkaufen und gewährt dafür einen Rabatt von 10% auf den Gesamtpreis.
Neuerdings bietet das Unternehmen seinen Kunden auch Bikes mit Rädern ohne Schlauch an, d.h. der Name eines montierten Einzelteils beginnt mit Tubeless. Dadurch ist die Montage wesentlich komplizierter und bedeutet für jede dieser Tubeless-Komponenten 12€ Zusatzkosten, die noch nicht im Einzelpreis enthalten sind.
Wegen stark erhöhter Nachfrage ist der Aufwand zur Beschaffung von qualitativ hochwertigen Scheibenbremsen gestiegen. Für jede Komponente mit der Bezeichnung Bremsscheibe werden deshalb zusätzlich 8€ berechnet.
Entwickeln und zeichnen Sie ein Struktogramm für diese Methode. [9 BE]
Aufgabe Vorschlag C - 1.7 · Anwendungsfalldiagramme
Material 2
UML-Klassendiagramm
Hinweise: Die Methode toString() der Klasse Einzelteil ergibt eine Zeichenkette der Form:
ID=e19, Lenker wiegt 234 g, kostet 45.00 EUR, Hersteller: TeamPro, Name: Evaluation, 42 cm
Die private Methode leseDatenAusDatei() initialisiert das Attribut String[] konfigzeilen der Klasse Bike mittels der Konfigurationsdatei (Material 1).
Auf alle Attribute kann mittels get-Methoden zugegriffen werden.
1.7 Die Fertigungsorganisation soll durch ein Verwaltungssystem erweitert werden.
Folgende Funktionalitäten sollen vom System bereitgestellt werden:
Kunden konfigurieren ihr zukünftiges Bike, das Servicepersonal kann sie dabei unterstützen.
Das Servicepersonal ist zuständig für die Auslieferung des fertigen Bikes, was voraussetzt, dass das Bike von einer Technikerin bzw. einem Techniker (im folgenden Techniker genannt) montiert und der Preis vom Servicepersonal ermittelt worden ist.
Im Montageprozess der Fahrräder wird regelmäßig ein Bike ausgewählt, das ausführlich im Testlabor geprüft wird. Diese Prüfung liegt in der Verantwortung eines Technikers. Sollte sich dabei zeigen, dass eine montierte Komponente des Bikes den hohen Belastungen nicht standhält, wird sie von einem Techniker ausgetauscht.
Das Unternehmen bietet für seine Bikes auch Zubehör an, zum Beispiel Flaschenhalter und Beleuchtung. Wenn der Kunde Zubehör wünscht, wird die Auslieferung des Bikes um den Anbau von Zubehör erweitert. Dafür ist wiederum ein Techniker zuständig.
1.7.1
Beschreiben Sie den Zweck eines Anwendungsfalldiagramms und ordnen Sie seine Verwendung in den Softwarelebenszyklus ein. [2 BE]
1.7.2
Entwickeln und zeichnen Sie für die unter Aufgabe 1.7 genannten Funktionalitäten ein Anwendungsfalldiagramm in UML-Notation. [8 BE]
Aufgabe Vorschlag C - 2 · Relationenmodell und Normalisierung
2 Entwicklung der Datenbank zur Verwaltung der montierten und ausgelieferten Bikes
Ein erstes Entity-Relationship-Modell (ERM) der Datenbank finden Sie in Material 4.
Material 4
Entity-Relationship-Modell
Hinweis: Der Datentyp des Attributs versicherung ist boolean.
2.1
Geben Sie drei unterschiedliche Lösungen an, um die Spezialisierung zwischen Komponente, Rahmenteil, Schaltelement und Einzelteil in das relationale Modell zu transformieren. Diskutieren Sie die Vor- und Nachteile dieser Möglichkeiten. [6 BE]
2.2
Überführen Sie das ERM (Material 4) unter Beachtung von Aufgabe 2.1 in das Relationenmodell in der 3. Normalform. [5 BE]
Hinweis: Alle Relationen sind in der Schreibweise Relation( PK, Attribut,..., FK#) anzugeben.
Aufgabe Vorschlag C - 2.3 · SQL-Anweisungen und Transaktionen
Material 4
Entity-Relationship-Modell
Hinweis: Der Datentyp des Attributs versicherung ist boolean.
2.3 Einige Daten der Datenbank sollen ergänzt, geändert bzw. ausgewertet werden.
2.3.1
Die Komponenten des Herstellers Manu verteuern sich um 5%. Formulieren Sie eine SQL-Anweisung zur Aktualisierung der Datenbank. [2 BE]
2.3.2
Es wird die neue Kategorie E-Bike-Trekking mit notwendigem Versicherungsschutz in die Datenbank aufgenommen. Das nächste Bike, das fertiggestellt wird, ist ein Rad dieser Kategorie (Modell Manu SportABC). Für die Auslieferung an den Kunden wurde dafür ein neuer Fachhändler gewonnen: MyChain, 63452 Hanau, Einkaufsstraße 28. Formulieren Sie die SQL-Anweisungen, um diese Daten einzutragen.
Hinweise: Die IDs der Tabellen Fachhändler und Bike werden vom System automatisch vergeben. Die Funktion NOW() liefert das aktuelle Tagesdatum, die Funktion YEAR() die zu einem Datum zugehörige Jahreszahl. [6 BE]
2.3.3
Formulieren Sie eine SQL-Anweisung, um alle im letzten Jahr gebauten Bikes, die an den Fachhändler "Bosse Zweirad" in Köln geliefert wurden, mit Bike-ID und Bezeichnung von Modell und Kategorie auszugeben. [3 BE]
2.3.4
Die BikeID und das Gesamtgewicht jedes Racing-Bikes sollen ausgegeben werden. Implementieren Sie eine entsprechende SQL-Anweisung. [3 BE]
2.3.5
Für alle Vorjahresmodelle will man diejenigen Hersteller ermitteln, von denen mindestens zehn Felgenbremsen (Detail „Felgen-Br“) verbaut worden sind. Entwickeln Sie eine SQL-Anweisung, die diese Informationen liefert.
Hinweis: Die Angabe der Anzahl ist absteigend zu sortieren. [5 BE]
Aufgabe Vorschlag C - 3 · ER-Modelle entwickeln
3 Für einen Bikeshop soll eine neue Datenbank entwickelt werden, die folgende Anforderungen umsetzt:
Von einer Herstellerin oder einem Hersteller (im Folgenden Hersteller genannt) werden zu einem bestimmten Datum und zu einem bestimmten Einkaufspreis Bikes geliefert. Für das gezielte Anbieten dieser Bikes sind die Eigenschaften Farbe, Rahmengröße, Laufradgröße, Schaltung (Gruppe), Produktzustand und Verfügbarkeit erforderlich.
Hersteller zeichnen sich durch Namen und Ort aus.
Jedes Bike kann durch unterschiedliches Zubehör ergänzt werden. Dies ist, zum Beispiel bei E-Bikes, ein Ladegerät oder ein zweiter Akku. Neben den Marken werden auch die Preise gespeichert.
Das Bike kann an einen Kunden zu einem bestimmten Preis verkauft werden. Dafür ist das Verkaufsdatum zu speichern.
Die Kunden werden mit Namen und Adresse gespeichert.
Bikes können Teil eines Leasingvertrags sein, der von einer Arbeitgeberin oder von einem Arbeitgeber (im Folgenden Arbeitgeber genannt) abgeschlossen werden muss. Ein Arbeitgeber kann beliebig viele Leasingverträge abschließen. Mindestens fünf Bikes sind Teil eines Leasingvertrags. Gespeichert werden die Höhe der monatlichen Leasingrate in Euro, der Beginn und das Ende des Leasingzeitraums sowie der monatliche Versicherungsbeitrag in Euro. Arbeitgeber zeichnen sich durch ihren Firmennamen aus.
Entwickeln und zeichnen Sie ein ER-Diagramm, das die genannten Anforderungen umsetzt.
Hinweis: Das ER-Modell ist in der Form Entitätstypen, Attribute und Beziehungen mit Kardinalitäten in der [min, max]-Notation darzustellen.
Du kannst auch nach Themen lernen
Übe ein Thema mit gemischten Aufgaben aus den Prüfungen aller Jahre.
- Klassen und Methoden implementieren · 8 Aufgaben
- Klassendiagramme und Objektdiagramme · 7 Aufgaben
- Relationenmodell und Normalisierung · 7 Aufgaben
- ER-Modelle entwickeln · 6 Aufgaben
- SQL-Anweisungen und Transaktionen · 6 Aufgaben
- Client-Server und Nebenläufigkeit · 4 Aufgaben