Klausur PR11 im WS'03/'04

Aufgabe 1: Schreiben Sie Dokumentationskommentare (auf Deutsch) für die Klasse IntIO mit den Methoden readInt und writeInt, ähnlich wie in der Übung 15 (datei=new PrintStream(new FileOutputStream("Log.txt"));):

public class IntIO { ...
   public int readInt() throws IOException, NumberFormatException { 
     return Integer.parseInt(tastatur.readLine()); }
   public void writeInt(int zahl) throws IOException { 
     System.out.print(zahl); datei.print(zahl); } }

Aufgabe 2.: Schreiben Sie eine Methode, die das größte Objekt in einer Reihung aus Objekten liefert, deren Klasse die Schnittstelle Comparable implementiert. Die Schnittstelle enthält eine Methode public int compareTo(Object o), die -1, 0 oder +1 liefert, je nach dem, ob das Zielobjekt kleiner, gleich oder größer ist als das Parameterobjekt. Vergessen Sie nicht den speziellen Fall, wenn die Reihung kein Objekt enthält.


Aufgabe 3: Schreiben Sie zu den letzten 3 Zuweisungen im untenstehenden Programm eine geeignete Typkonvertierung so, dass das Programm übersetztbar wird, sowie als Kommentar die Art der Kompatibilität: „aufwärts“, „abwärts erfolgreich“, „abwärts erfolglos“ (d.h. mit ClassCastException). (Tipp: zeichnen!)

class Oben { } class Mitte extends Oben { } class Unten extends Mitte { }
... Oben ref1 = new Mitte(); Mitte ref2 = new Unten();

Oben  oben   = (_________) ref1; // __________________________________________

Unten unten1 = (_________) ref2; // __________________________________________

Unten unten2 = (_________) ref1; // __________________________________________


Aufgabe 4: Zeichnen Sie das Objekdiagramm der Methode strToInt aus der Übungsaufgabe 19/1. Verwenden Sie hierbei die Notation von der Vorlesung: Variable = Kästchen mit Namen (daneben) und Inhalt ( = Wert); Referenz = Pfeil aus der Referenz zum Objekt (oder x wenn null), Objekt = Wolke mit dem Namen der Klasse (daneben) und Inhalt, Reihungsobjekt kann abgekürzt dargestellt werden. Die Musterlösung ist:

int[] strToInt(String[] par) { int[] erg = new int[par.length];
   for (int i = 0; i < erg.length; i++) erg[i] = Integer.parseInt(par[i]); return erg; }

Aufgabe 5. (40 Punkte, 15 Min): Kreuzen Sie die richtigen Antworten an und geben Sie Ihre Begründung mit Stich­worten (nicht länger als die Zeile) dazu. Ohne Begründung gilt Ihre Antwort als falsch.

(     )     Richtig            Ein Paket kann Unterpakete, Klassen, Schnittstellen, Methoden und Variablen enthalten.
(     )     Falsch            

Grund:                                                                                                                                                                                                        

(     )     Richtig            Das Importieren einer Klasse ermöglicht den Aufruf aller ihrer Methoden.
(     )     Falsch            

Grund:                                                                                                                                                                                                        

(     )     Richtig            Es gibt Java-Programme, die weder mit java noch mit appletviewer
(     )     Falsch             ausgeführt werden können.

Grund:                                                                                                                                                                                                        

(     )     Richtig            In Java gibt es 3 Möglichkeiten, eine vorhandene Klasse in einer anderen zu verwenden.
(     )     Falsch

Grund:                                                                                                                                                                                                        

(     )     Richtig            In einer static-Methode löst super eine Fehlermeldung vom Compiler aus.
(     )     Falsch

Grund:                                                                                                                                                                                                        

(     )     Richtig            Der aktuelle Parameter eines Methodenaufrufs muss eine Variable sein,
(     )     Falsch             der zuvor ein Wert zugewiesen wurde.

Grund:                                                                                                                                                                                                        

(     )     Richtig            Jede Klasse hat mindestens eine Oberklasse und mindestens einen Konstruktor.
(     )     Falsch            

Grund:                                                                                                                                                                                                        

(     )     Richtig            null ist ein Java-Literal.
(     )     Falsch

Grund:                                                                                                                                                                                                        


Aufgabe 6: Schreiben Sie die 5 Kriterien einer Zählschleife (die garantiert zu Ende geht) gegenüber der for-Schleife auf:

1. ________________________________________________________________________________________________

2. ________________________________________________________________________________________________

3. ________________________________________________________________________________________________

4. ________________________________________________________________________________________________

5. ________________________________________________________________________________________________

Wann können Sie eine Zählschleife verwenden, wann müssen Sie eine bedingungsgesteuerte Schleife benutzen? _________

__________________________________________________________________________________________________

________________________________________________________________________