public class ISDNAnschluss { private Anschluss erste, leitung2; public ISDNAnschluss() { leitung1 = new Anschluss(); leitung2 = new Anschluss(); }
public void anrufen() throws BelegtAusn { try { leitung1.anrufen(); } catch (BelegtAusn a) { leitung2.anrufen(); // throws BelegtAusn } }
public void auflegen() { if (leitung1.belegt()) leitung1.auflegen(); else leitung2.auflegen(); }
public boolean belegt() { return leitung1.belegt() && leitung2.belegt(); }
public int einheit() { return leitung1.einheit() + leitung2.einheit(); } }
public class ISDNAnschlussTest { public static void main(String[] args) { System.out.println("Test ISDNAnschluss"); ISDNAnschluss a = new ISDNAnschluss(); ISDNAnschluss b = new ISDNAnschluss(); test(a); test(b); }
public static void test(ISDNAnschluss i) { try { boolean b = i.belegt(); System.out.println("Nicht belegt: " + b); System.out.print("1. Anruf: "); i.anrufen(); System.out.print("2. Anruf: "); i.anrufen(); b = i.belegt(); System.out.println("Belegt: " + b); System.out.print("Auflegen: "); i.auflegen(); b = i.belegt(); System.out.println("Nicht belegt: " + b); System.out.println("Belegt: " + b); i.anrufen(); } catch (BelegtAusn a) { System.out.println("Erwartete BelegtAusn"); } } }
Der Name der Referenz in der Klasse Button ist unbekannt, jedoch derselbe in den beiden Button-Objekten
Die Ausführung der main-Methode erfolgt über einen polymorphen Aufruf. falsch
Grund: main ist static, wird ohne Objekt aufgerufen
Es gibt keine Klassen ohne Konstruktor. richtig
Grund: Der implizite Konstruktor (ruft super auf) ist in Klassen ohne explizite Konstruktor vorhanden
Eine Klasse hat entweder nur static-Methoden oder keine static-Methoden. falsch
Grund: z.B. gemischterEimer; oder main in einem dynamischen Datenbehälterklasse
Die Methode actionPerformed kann in derselben Klasse implementiert werden. richtig
Grund: Klasse extends Applet implements ActionPerformed
Eine for-Schleife kann endlos laufen, eine Zählschleife nicht. richtig
Grund: for (;;) ist keine Zählschleife, nur mit Auflagen
Durch den Aufruf eines Operators kann ein Objekt nicht verändert werden. richtig
Grund: Objekte werden durch Methoden, Variablen durch Operatoren verändert
Java-Objekte können das Ende des Blocks, in dem sie erzeugt wurden, überleben. richtig
Grund: falls eine Referenz von außerhalb des Blocks auf sie zeigt
In einer char-Variable kann ein Ganzzahlwert gespeichert werden. richtig
Grund: char i = 234; // char ist Ganzzahltyp in Java
public class LogImpl implements Log { private boolean b; public LogImpl(final boolean b) { this.b = b; }
public void konjunktion(final Log wert) { LogImpl z = (LogImpl)wert; // Konvertierung nötig, weil wert.b es nicht gibt (Log hat keine Komponente b) b &= z.b; }
public void disjunktion(final Log wert) { b |= ((LogImpl)wert).b; }
public void ausgeben() { System.out.println("Logischer Wert: " + b); } }
gilt nur für grundsätzlich richtige Ansätze