Angewandte Informatik

Universität Osnabrück , 14.5.2001

Dr. Ute Schmid

letzter Abgabetermin: 21.5.2001, 8:00 Uhr

Elmar Ludwig

Übungen zu Informatik B

Sommersemester 2001

Blatt 5

Aufgabe 1 (7 Punkte)

Machen Sie sich mit den verschiedenen Collection -Klassen in dem Paket java.util vertraut. Was für Collection -Klassen kennt Java? Welche Interfaces spielen dabei eine Rolle?

Zeichnen Sie die Hierarchie dieser Klassen sowie die beteiligten Interfaces als UML Klassendiagramm auf (Variablen und Methoden brauchen im Diagramm nicht berücksichtigt zu werden).

Erklären Sie in diesem Zusammenhang auch die Begriffe Interface , abstrakte Klasse bzw. abstrakte Methode . Wozu dient ein Marker-Interface ?

Aufgabe 2 (8 Punkte)

Erläutern Sie Ihrem Tutor die vier in der Vorlesung vorgestellten Arten von inneren Klassen anhand des Enumerator Beispiels aus der Vorlesung (Kapitel 11.3 ff. im Skript). Welchen Einfluß hat die Verwendung von inneren Klassen auf die Bedeutung der Schlüsselworte this bzw. super in einer Java-Methode?

Betrachten Sie das Programm Hi.java aus dem Katalog /home/binf/Uebung/Blatt5 und erklären Sie die Ausgabe. Könnte man in main() ein B- bzw. ein C-Objekt erzeugen? Wenn ja, wie?

Aufgabe 3 (5 Punkte)


a)
Schreiben Sie ein Java-Programm, das den Wert der Ackermann -Funktion berechnet. Dazu werden dem Programm über die Kommandozeile zwei nicht-negative Werte übergeben und der Funktionswert ack(m, n) wie folgt rekursiv berechnet:

ack(m,n) : = $\displaystyle\left\{ \begin{array}
{l@{\quad}l}
 n+1 &\mbox{f\uml {u}r} \quad m...
 ... \quad m\ne 0, n=0 \\  ack(m-1, ack(m,n-1)) & \mbox{sonst}
 \end{array} \right.$

Natürlich sollte Ihr Programm auch mit falschen oder fehlenden Parametern sinnvoll umgehen können (d.h. eine entsprechende Fehlermeldung ausgeben). Testen Sie Ihr Programm mit einigen (kleinen!) Werten für m und n . Was für Probleme könnten auftreten?

b)
Gehen Sie nun davon aus, daß im short-Bereich gerechnet werden soll, und sorgen Sie dafür, daß die Methode über eine (für die Aufgabe neu zu erfindende) OverflowException berichtet, wenn der Wertebereich von short verlassen wird. Die OverflowException soll neben der Fehlermeldung auch noch die aktuelle Rekursionstiefe zum Zeitpunkt des Fehlers enthalten (die also im Programm mitgezählt werden muß).

Gesamtpunkte: 20



Elmar Ludwig
5/11/2001