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

Aufgabe 1

import lehrbuch.Eimer; import lehrbuch.Kreis; import lehrbuch.Farbe;
public class EimerUndKreis {
   private Eimer eimer = new Eimer(); private Kreis kreis = new Kreis();
   public EimerUndKreis() { eimer.anzeigen(); kreis.zeichnen(); } 
   public void fuellen() {
     try { eimer.fuellen(); kreis.bemalen(Farbe.BLAU); }
     catch (VollAusnahme a) { System.out.println("Voll"); } }
   public void entleeren() {
     try { eimer.entleeren(); kreis.verstecken(); kreis.zeichnen();}
     catch (LeerAusnahme a) { System.out.println("Leer"); } }

Aufgabe 2

int anzahl(String kette, char zeichen) { int anz = 0;
   for (int i = 1; i < kette.length(); i++) if (kette.charAt(i) == zeichen) anz++;
  
return anz; }

Aufgabe 3

public Fenster() {
   JMenuBar menueLeiste = new JMenuBar();
   super.setJMenuBar(menueLeiste);
   JMenu menue1 = new JMenu("Erste"), menue2 = new JMenu("Zweite");
   menueLeiste.add(menue1); menueLeiste.add(menue2);
   JMenuItem punkt1 = new JMenuItem("Erste"), punkt2 = new JMenuItem("Zweite"),
     punkt3 = new JMenuItem("Dritte");
   menue1.add(punkt1); menue1.add(punkt2); menue2.add(punkt3); }

Aufgabe 4 -

Aufgabe 5

(X) Falsch Der Ergebnistyp einer Methode ist eine Klasse oder ein primitiver Typ.

Grund: Kann auch void sein (für Prozeduren).

(X) Richtig/Falsch Die Anzahl der aktuellen Parameter in einem Methodenaufruf wird in der Klasse bestimmt, die den Rumpf der Funktion enthält.

Grund für Richtig: Die Anzahl der formalen Parameter wird bei der Definition der Methode bestimmt.

Grund für Falsch: Sie kann auch in einer Schnittstelle oder abstrakten Klasse (ohne Rumpf) vereinbart worden sein.

(X) Falsch Wenn actionPerformed aus ActionListener nicht überschrieben wird, ist sie leer.

Grund: ActionListener ist eine Schnittstelle, daher muss actionPerformed überschrieben (definiert) werden.

(X) Falsch Lokale Objekte (die in einem Methodenrumpf mit new erzeugt werden) werden auf dem Stapel gespeichert.

Grund: Alle Objekte (ob lokal oder global erzeugt) werden auf der Halde gespeichert.

(X) Richtig Ein Konstruktor ist weder eine Prozedur, noch eine Funktion.

Grund: Er hat keinen Ergebnistyp (weder void noch etwas anderes)

(X) Richtig Alle Ausnahmen (die mit throw ausgeworfen werden) sind Unterklassen entweder der Klasse Error, oder der Klasse Exception.

Grund: Sie sind entweder ungeprüft (Error) oder geprüft (Exception).

(X) Richtig Das Klassendiagramm wird zur Laufzeit nicht verändert.

Grund: Er ist statisch, seine Struktur wird vom Compiler erzeugt.

(X) Richtig Der Operator /= ist für alle artihmetische Typen definiert.

Grund: Division (mit Zuweisung) ist sowohl für Ganzzahltypen wie auch für Bruchtypen (zwar unterschiedlich) definiert.

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. Die Ausführung einer for-Schleife:

  1. Initialisierung ausführen
  2. Fortsetzungsbedingung prüfen
  3. Rumpf ausführen
  4. Weiterschaltung ausführen
  5. Zurück zu 2.