Prof. Dr. Franz Schweiggert Abteilung Angewandte Informationsverarbeitung 20.06.2006
Norbert Heidenbluth Blatt 7


Uni Logo



Allgemeine Informatik II (SS 2006)
für
(Wirtschafts-)Mathematiker/Physiker und E-Techniker



Abgabetermin: Drei Tage vor dem Finale (06. Juli 2006)

\fbox{\parbox[c]{17cm}{
\textbf{Schon wieder Terminplanung: }
In der n''achste...
...unde am gewohnten Ort statt (d.h. am
Dienstag, dem 27.06. um 16 Uhr im H22)!
}}

Aufgabe 15 (5 Punkte)

Immer wieder wurde im Skript und in den Übungen im Zusammenhang mit der Behandlung von Fehlern versprochen, ``bald'' käme eine Erklärung wie es besser geht. Und kaum wartet man rund eineinhalb Semester, schon ist es soweit: wir sind beim Thema Exception Handling.

Von nun an sollen alle Aufgaben unter Verwendung dieses Mechanismus gelöst werden, und um sich damit ein wenig vertraut zu machen, gibt es nun vorab einige kleine einführende Aufgaben dazu:

Teil a:

Schreiben Sie ein Java-Programm, das aus einem Try-Block heraus eine Exception der Klasse Exception wirft. Fangen Sie diese Exception im Catch-Block auf.

Fügen Sie nun der geworfenen Exception ein String-Objekt hinzu und lassen Sie diesen String im Catch-Block ausgeben.

Als dritte Ergänzung fügen Sie nun einen Finally-Block hinzu, in dem ein Text ausgegeben wird. Erklären Sie Ihrem Tutor den Ablauf (``Kontrollfluß'') des Programms.

Teil b:

Legen Sie eine Objektreferenz auf ein Objekt einer Klasse Ihrer Wahl an, weisen Sie ihr null zu und rufen Sie eine Methode auf diesem (nicht vorhandenen!) Objekt auf.

Verpacken Sie den Methodenaufruf nun in einen Try-Catch-Block.

Teil c:

Schreiben Sie drei neue (eigene) Exception-Klassen und eine Methode, die alle drei Exceptions wirft. Erfinden Sie hier also jeweils ein Szenario, das zum Auslösen einer der drei Exceptions führt.

Lassen Sie die Methode nun mehrfach so aufrufen, daß die unterschiedlichen Szenarien durchlaufen werden und jeweils eine der drei Exceptions ausgelöst wird. Fangen Sie diese Exceptions

auf.

Verwenden Sie auch hier wieder den Finally-Block.

Teil d:

Schreiben Sie ein Programm, das eine ArrayIndexOutOfBoundsException auslöst und auffängt.

Aufgabe 16 (15 Punkte)

Jetzt ist Deutschland schon so gut wie Weltmeister, und wir haben noch kein einziges Übungsblatt unter ein Fußball-Motto gestellt. Dann wollen wir das mal schleunigst ändern:

Nun, Sie sitzen also so gemütlich im H4/5 und schauen sich an, wie sich die deutsche National-Elf von Minute zu Minute näher an den WM-Titel kickt, als plötzlich Ihr Handy klingelt. Es ist der Fifa-Präsident, der Ihnen aufgeregt erzählt, daß man bei der Fifa zwar an alles gedacht hat (Bier- und Autowerbung rund um die Stadien überkleben, Tickets absolut fälschungssicher machen, Stadionflitzer verhindern, etc.) nur an eines nicht: an ein Verwaltungssystem für die Spielergebnisse. Ein großes deutsches T-Software-Haus kann leider nicht mehr beauftragt werden, weil die Fifa-Konten aufgrund der vielen Helikopter-Flüge von ``Kaiser Franz'' nahezu leer sind, und die Informatiker aus der Togo-Mannschaft hatten zwar ihre Hilfe zugesagt, aber nun streiken sie gerade (mal wieder). Und nun bittet sie die Fifa spontan um Hilfe (und bietet Ihnen dafür ein Ticket ``Angola gegen Saudi-Arabien, mit leichten Sichtbehinderungen''):

Benötigt wird ein kleines Datenbank-System zur Verwaltung der WM-Spiele. Dieses soll beim Start als Argument eine Datei ``genannt'' bekommen und aus dieser Datei die Datensätze lesen bzw. auch wieder - nach dem Beenden - in diese Datei schreiben. Ein Datensatz soll dabei jeweils ein WM-Spiel sein mit den folgenden Informationen:

Das Datenbank-System soll alle die Funktionen zur Verfügung stellen, die man von einem solchen erwartet, d.h.:

Und so lautet nun die offizielle Fifa-WM-Bitte 2006 an Sie:

``Implementieren Sie ein solches Datenbank-System in Java!''

Natürlich sollten dabei alle in der Vergangenheit besprochenen Bordmittel wie Listen, ExceptionHandling und Lesen aus/Schreiben in Dateien mit Hilfe der File-IO verwendet werden.

0.0.0.1 Wichtig:

Für diese Aufgabe darf die Bibliothek IOulm nicht verwendet werden!

Beispiel:

Oh je, für alles hier auf dem Übungsblatt ein Beispiel zu zeigen - das würde das Übungsblatt auf sehr viele Seiten aufblähen, das Abholzen der Wälder beschleunigen und Ihr mühsam erspartes Druckerkontigent dezimieren. Deswegen machen wir's diese Woche mal anders:

Auf unserem FTP-Server finden Sie die Datei WMmanager.jar Diese enthält bereits den ausführbaren Byte-Code eines ersten Prototypen der Beispiellösung. Desweiteren finden Sie auf dem Server auch eine kleine Textdatei wm.txt, welche ein kleines Beispiel dafür liefert, in welcher Form die Daten durch die Beispiellösung ``persistiert'', d.h. zur Verwendung zu einem späteren Zeitpunkt abglegt werden könn(t)en.

Wichtig:

Der Prototyp ist - wie der Name schon sagt - noch nicht endgültig fertig. Zwar können alle gewünschten Funktionalitäten demonstriert werden, aber 100% robust gegen Falscheingaben ist er momentan noch nicht.

Die Verwendung des Beispiel-Programm funktioniert wie folgt:

  1. Herunterladen des jar-Files (und ggf. der Textdatei).
  2. Kopieren Sie beide Dateien in das selbe Verzeichnis.
  3. Rufen Sie in diesem Verzeichnis das Programm wie folgt auf:
    java -jar WMmanager.jar daten.txt

Hinweise:

Wie immer, so gibt es auch in dieser Woche wieder einige Tips und Hinweise zu den Übungen:

Viel Erfolg!



Norbert Heidenbluth 2006-06-20