public class Tore { private Tor[] t; public Tore(int anzahl) { t = new Tor[]anzahl; for (int i = 0; i < anzahl; i++) t[i] = new Tor(); } public void schliessen(int i) throws GeschlossenAusn { t[i].schliessen(); } public void oeffnen(int i) throws GeoeffnetAusn { t[i].oeffnen(); } public boolean geoeffnet(int i) { return t[i].geoeffnet(); } }
public class Programm { final int l1 = 5, l2 = 312; private static Tore t1 = new Tore(l1), t2 = new Tore(l2); private static void prozedur(Tore t, int i) throws GeoffnetAusn { try { t.schliessen(i); t.oeffnen(i); } catch (GeschlossenAusn ausnahme) { System.err.println ("Ausnahme in prozedur"); } } public static void main(String[] args) { try { for (int i = 0; i < l1; i++) prozedur(t1, i); for (int i = 0; i < l2; i++) prozedur(t2, i); } catch (GeoeffnetAusn ausnahme) { System.err.println ("Tor geöffnet"); } }
· Die Ausführung einer actionPerformed-Methode erfolgt über einen polymorphen Aufruf. richtig
Grund: Der Interpreter ruft actionPerformed für eine Referenz vom Typ java.awt.event.ActionListener auf
· Ein Konstruktor kann alle Methoden der aktuellen Klasse und ihrer Oberklasse aufrufen. richtig
Grund: mit this oder super (wie jede andere Methode)
· Die Anzahl der Elemente in der Reihung-Implementierung kann nach der Erzeugung nicht verändert werden. richtig
Grund: Das Reihungsobjekt wird im Konstruktor erzeugt.
Bemerkung: Gegebenfalls kann später ein neues Reihungsobjekt erzeugt und der Inhalt hinüberkopiert werden.
· Weil die Knoten einer Liste rekursiv sind, müssen alle Methoden, die die Liste durchlaufen, rekursiv sein. falsch
Grund: mit while-Schleife auch möglich
· Man kann alle Elemente einer verketteten Liste mit einer for-Schleife (Zählschleife) erreichen. richtig
Grund: aber nur wenn im Objekt die Länge der Liste (die Anzahl der Elemente) gespeichert wird
· Eine Referenz kann sowohl durch eine Zuweisung wie auch durch Aufruf eines Mutators verändert werden. falsch
Grund: Der Aufruf eines Mutators verändert die Referenz nicht, nur das von ihr referierte Objekt
· Um eine Datei beschreiben oder daraus lesen zu können, muß man ein Objekt der Klasse java.io.File erzeugen. r/f
Grund: richtig: Das entsprechende IOStream-Objekt muß mit einem File-Objekt (durch den Konstruktorparameter) verbunden werden; falsch: Der Parameter kann auch der Dateiname (String) sein, so daß das erforderliche File-Objekt implizit erzeugt wird.
· Zwei String-Objekte können dieselbe Zeichenkette enthalten, auch wenn z1 == z2 false liefert. richtig
Grund: Es gibt unterschiedliche Objekte (!=) mit gleichem Inhalt (equals)
private boolean gleich(final WarteschlangePol w) { // const if (anzahl != w.anzahl) return false; int a = aeltestes; int b = w.aeltestes; for (int i = 0; i < anzahl; i++) { if (! inhalt[a].equals(w.inhalt[b])) return false; a++; a %= inhalt.length; b++; b %= inhalt.length; } return true; }