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