Lösung der Klausur Pr11 im WS'03/'04

Aufgabe 1

/** Klasse für Ein- und Ausgabe von int-Werten an der Konsole mit Log-Datei */
public class IntIO {
   /** Liefert einen int-Wert, der an der Konsole eingetippt wurde;
     muss mit der Return-Taste abgeschlossen werden.
     NumberFormatException (ungeprüft), falls anderes als ein int-Wert eingetippt wird.
     IOException (geprüft) bei Gerätefehler  */
   public int readInt() throws IOException, NumberFormatException { 
     return Integer.parseInt(tastatur.readLine()); }
   /** Schreibt den Parameter (int-Wert) an der Konsole und in die Datei Log.txt
     IOException (geprüft) bei Gerätefehler  */
   public void writeInt(int zahl) throws IOException { 
     System.out.print(zahl); datei.print(zahl); } }

Aufgabe 2

Comparable groesste(Comparable[] par) throws KeineElementeAusnahme {
// Object groesste(Comparable[] par) throws KeineElementeAusnahme { // alternativ
   if (par.length == 0) throw new KeineElementeAusnahme();
   Comparable gr = par[0];
   for (int i = 1; i < par.length; i++)
     if (par[i].compareTo(gr) == 1) gr = par[i];
   return gr; }
class KeineElementeAusnahme extends Exception {}

Aufgabe 3

Oben  oben   =  ref1; // aufwärts
      oben   = (Mitte) ref1; // alternativ
      oben   = (Oben) ref1; // alternativ
Unten unten1 = (Unten) ref2; // abwärts erfolgreich
Unten unten2 = (Unten) ref1; // abwärts erfolglos

Aufgabe 4

Aufgabe 5

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

Grund: Ein Paket kann keine Methoden und Variablen enthalten, nur Unterpakete, Klassen, Schnittstellen.

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

Grund: Das Importieren einer Klasse erspart nur den Paketnamen vor dem Klassennamen. Die privaten Methoden können nicht aufgerufen werden, ob importiert oder nicht.

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

Grund: Bytecode muss interpretiert werden / Andere Interpreter können jederzeit entwickelt werden (jedoch nicht üblich).

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

Grund: Erweitern, Ausprägen und public static-Komponente (Variable oder Methode) ansprechen.

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

Grund: super ist eine Referenz auf das umgebende Oberklassenobjekt – es gibt es nur in nicht-static Methoden

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

Grund: Er kann ein beliebiger Ausdruck (Variable, Literal, Operator- oder Methodenaufruf) sein.

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

Grund für Richtig: Object und (wenn nichts anderes) der Standardkonstruktor (parameterlos, ruft super() auf)

Grund für Falsch: Object selbst hat keine Oberklasse

(X) Richtig null ist ein Java-Literal.

Grund: für Referenzwerte

Aufgabe 6

Zählschleife verwendbar, wenn die Anzahl der Durchläufe beim Eintritt in die Schleife bekannt ist. Andernfalls muss eine bedingungsgesteuerte Schleife benutzt werden. Kriterien (für eine Aufwärts-Zählschleife):

1.        Initialisierung: lokale Ganzzahl-Laufvariable (= Zählervariable) mit Anfangswert vereinbaren

2.        Fortsetzungsbedingung: Laufvariable < oder <= Endwert

3.        Anfangswert <= Endwert

4.        Weiterschaltung:  Inkrementierung (++) der Laufvariable

5.        Keine Veränderung der Laufvariable und des Endwerts im Rumpf