Aufgabe 1: Sie kennen die (tolerante) Datenbehälterklasse Kreis von Ihren Übungsaufgaben. Ihre (vereinfachte) Spezifikation ist:

public class Kreis {

    public void verstecken();

    public void wiederherstellen();

}

Schreiben Sie nun eine nicht-tolerante Datenbehälterklasse DoppelKreis mit denselben Methoden, die zwei Kreis-Objekte gleichzeitig bedienen. Im Gegensatz zur Klasse Kreis werfen sie jedoch (selbstdefinierte) Ausnahmen aus, wenn ein sichtbarer Kreis wiederhergestellt, oder ein unsichtbarer versteckt werden soll..

_______________________________________________________________________________________________

Aufgabe 2: Schreiben Sie eine Prozedur mit einem DoppelKreis-Parameter (aus der vorherigen Aufgabe 1), die alle Funktionalitäten (auch die Ausnahmen) der Klasse DoppelKreis testet. Rufen Sie die Prozedur in einem Hauptprogramm mit zwei verschiedenen Objekten zweimal auf.

_______________________________________________________________________________________________

Aufgabe 3.: Zeichnen Sie die Datenstruktur (d.h. alle Variablen und Objekte) des Programms aus der vorherigen Aufgabe 2 (mit zwei DoppelKreis-Objekten). Schreiben Sie zu den Referenzen ihren Namen, zu den Objekten die Namen ihre Klassen (u.U. ihrer Oberklassen) hin.

Bemerkung: Sollten Sie die Aufgabe 1 oder Aufgabe 2 nicht lösen können, bekommen Sie eine Ersatzaufgabe.

_______________________________________________________________________________________________

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

(       )       Richtig                   Die Ausführung der start-Methode erfolgt über einen polymorphen Aufruf.

(       )       Falsch                   

Grund:                                                                                                                                                                                                                                                                                                     

(       )       Richtig                   Die Klasse java.lang.Object hat keinen Konstruktor.

(       )       Falsch                   

Grund:                                                                                                                                                                                                                                                                                                     

(       )       Richtig                   Jeder Methodenaufruf hat ein (evtl. implizites) Zielobjekt.

(       )       Falsch                   

Grund:                                                                                                                                                                                                                                                                                                     

(       )       Richtig                   Die Methode actionPerformed kann nur in einer Klasse implementiert werden,

(       )       Falsch                    die die Schnittstelle ActionlListener erweitert.

Grund:                                                                                                                                                                                                                                                                                                     

(       )       Richtig                   Eine Rekursion kann unendlich lang laufen.

(       )       Falsch                   

Grund:                                                                                                                                                                                                                                                                                                     

(       )       Richtig                   Der Inhalt einer Variable kann durch den Aufruf einer Methode verändert werden.

(       )       Falsch                   

Grund:                                                                                                                                                                                                                                                                                                     

(       )       Richtig                   Ein Objekt wird am Ende des Blocks, in dem es erzeugt wurde, gelöscht.

(       )       Falsch                   

Grund:                                                                                                                                                                                                                                                                                                     

(       )       Richtig                   Der Wert einer Referenz-Variable kann durch Typkonvertierung in eine int-Variable

(       )       Falsch                    kopiert werden.

Grund:                                                                                                                                                                                                                                                                                                     

_______________________________________________________________________________________________

Aufgabe 5.: Implementieren Sie die folgende Schnittstelle als eine Hüllenklasse für int mit einem para­me­tri­sier­ten Konstruktor:

interface Ganzzahl {

    public Ganzzahl addieren(final Ganzzahl wert); // const, ähnlich wie +

    public Ganzzahl multiplizieren (final Ganzzahl wert); // const, ähnlich wie *

    public void ausgeben(); // auf der Konsole

}