GP1_WS1011_EA5

Werbung
Prof. Dr. Gerrit Jan Veltink
OMI - GP1 • WS 2010-2011
Einsendeaufgabe 5
Grundlagen der Programmierung 1
Vererbung
Lernziel

Eigene Klassen programmieren, die von einer Klasse abgeleitet werden und die auf
Attribute und Methoden der Superklasse zugreifen.
Betrachten wir Klassen und deren Objekte aus dem Bereich der Geometrie
(zweidimensional).
Gegeben ist die in Listing 1 dargestellte Klasse Shape (siehe Seite 3).
Aufgabe A
Programmieren sie drei weitere Klassen Rectangle, Square und Circle, die von der Klasse
Shape direkt oder indirekt abgeleitet werden. Informationen dazu finden sie auch in der
API-Dokumentation.
Folgende Aufgaben sollen die Klassen erfüllen:
Rectangle:






Subklasse von Shape.
verwendet double-Werte xOrigin und yOrigin aus der Klasse Shape und
speichert zusätzlich zwei double-Werte xDelta und yDelta, die die Hälfte einer
Seitenlänge des Rechteckes in x- oder y-Richtung darstellen.
Initialisierung erfolgt im Konstruktor der Klasse Rectangle und im Konstruktor
der Superklasse.
die Klasse enthält eine circumference-Methode, die den Umfang des Rechteckes
bestimmen soll.
die Klasse enthält eine area-Methode, welche die Fläche des Rechteckes berechnen
soll.
die Klasse enthält eine toString-Methode, welche als Zeichenkette die Art des
Objektes (hier Rectangle), den Ursprung und die Werte für xDelta und yDelta
liefert.
1/5
Prof. Dr. Gerrit Jan Veltink
Einsendeaufgabe 5
OMI - GP1 • WS 2010-2011
Square:





Subklasse von Rectangle.
verwendet double-Werte xOrigin und yOrigin aus der Klasse Shape und
speichert zusätzlich einen double-Wert delta, der die Hälfte einer Seitenlänge
des Quadrates darstellt.
Initialisierung erfolgt im Konstruktor der Klasse Square und im Konstruktor der
Superklasse.
die Klasse enthält außerdem noch die beiden Methoden circumference und
area, die Umfang und Fläche des Quadrates berechnen sollen, die aber von der
Superklasse versorgt werden.
die Klasse enthält eine toString-Methode, welche als Zeichenkette die Art des
Objektes (hier Square), den Ursprung und den Wert für delta liefert.
Circle:





Subklasse von Shape.
verwendet double-Werte xOrigin und yOrigin aus der Klasse Shape und
speichert zusätzlich einen double-Wert radius.
Initialisierung erfolgt im Konstruktor der Klasse Circle und im Konstruktor der
Superklasse
die Klasse enthält außerdem noch die beiden Methoden circumference und
area, die Umfang und Fläche des Kreises berechnen sollen.
die Klasse enthält eine toString-Methode, welche als Zeichenkette die Art des
Objektes (hier Circle), den Ursprung und den Wert für radius liefert.
2/5
Prof. Dr. Gerrit Jan Veltink
Einsendeaufgabe 5
3/5
OMI - GP1 • WS 2010-2011
Prof. Dr. Gerrit Jan Veltink
Einsendeaufgabe 5
OMI - GP1 • WS 2010-2011
Listing 1: Die Klasse Shape
Aufgabe B
Programmieren sie eine Testklasse ShapeTestbed, in der jeweils ein Objekt der oben
beschriebenen Klassen Shape, Rectangle, Square und Circle erzeugt wird. In den
einzelnen Klassen sollen die in Tabelle 1 hinterlegten Werte initialisiert werden:
Shape
Rectangle
Square
Circle
x: 10
x: 20
x: 30
x: 40
y: 40
y: 30
y: 20
y: 10
xDelta: 35
delta: 5
radius: 25
yDelta: 15
Tabelle 1: Initialisierungswerte für die Objekte der Testklasse
Der Umfang des Quadrates, die Fläche des Rechtecks sowie Umfang und Fläche des
Kreises sollen berechnet und entsprechend dem Muster aus Abbildung 1 in der Konsole
ausgegeben werden.
Programmieren sie dazu eine Hilfsklasse Reporter, in der sich die Methode report mit
der folgenden Signatur befindet: public void report(Shape s).
Shape with origin: (10.0, 40.0) / Area: 0.0 / Circumference: 0.0
Rectangle with origin: (20.0, 30.0), xDelta: 35.0, yDelta: 15.0 / Area: 2100.0 / Circumference: 200.0
Square with origin: (30.0, 20.0) and delta: 5.0 / Area: 100.0 / Circumference: 40.0
Circle with origin: (40.0, 10.0) and radius: 25.0 / Area: 1963.5 / Circumference: 157.1
Beachten Sie die mitgelieferte API für weitere Informationen zu den Klassen. Generieren
Sie anschließend Ihre eigenen Javadoc HTML-Dateien und überprüfen Sie, ob diese den
Vorgegebenen entsprechen und passen Sie sie gegebenenfalls an.
Denken Sie daran, Ihr Programm aussagekräftig zu kommentieren. Achten Sie vor allem
auch auf die Einhaltung der Code-Conventions. Nutzen Sie die Checkstyle-/JUnitÜberprüfung im Kurs bevor Sie Ihre Abgabe hochladen.
Weichen Sie nicht von der Namensgebung ab (= ändern Sie nicht die Signatur der
Schnittstelle), weil Sie/wir Ihr Programm dann nicht testen können!
4/5
Prof. Dr. Gerrit Jan Veltink
Einsendeaufgabe 5
OMI - GP1 • WS 2010-2011
Abgabeformalitäten
Senden Sie folgende Dateien ein:

Shape.java

ShapeTestbed.java

Rectangle.java

Square.java

Circle.java

Reporter.java

sowie die von Ihnen erstellte API-Dokumentation Ihrer Klasse
Packen Sie die Dateien in ein ZIP-Archiv. Verwenden Sie dabei keine Unterordner.
Die Namensgebung des Archivs muss folgendem Muster entsprechen:
EA5_Nachname_Vorname.zip
Bei Nichtbeachtung dieser Formalitäten kann die Abgabe nicht bewertet werden.
5/5
Herunterladen