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.
_______________________________________________________________________________________________
Aufgabe 4. (40 Punkte, 15 Min): Kreuzen Sie die richtigen Antworten an und geben Sie Ihre Begründung mit Stichworten dazu. Ohne Begründung gilt Ihre Antwort als falsch.
( ) Richtig Die Ausführung der start-Methode erfolgt über einen polymorphen Aufruf.
Grund:
( ) Richtig Die Klasse java.lang.Object hat keinen Konstruktor.
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 parametrisierten 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
}