Die Aufgabe
Aufgabe 2
Es wird wieder die Klasse grafik.Zeichenflaeche( ) mit den statischen Methoden zeichnePixel( ) und leere( ) verwendet. Es sollen Dreiecke und Kreise gezeichnet werden. Der Code zum Zeichnen eines Dreiecks und zum Zeichnen eines Kreises findet sich in der Klasse grafik.GrafikApp.
a) Erstellen Sie eine Klasse Dreieck (Sie können die Klasse von der Übung 4 aus Übungsblatt 5 kopieren) und eine entsprechende Klasse Kreis. Die beiden Klassen sollen auch jeweils eine verschiebe-Methode haben, die analog zur Übung 4 aus Übungsblatt 5 arbeitet.
b) Kreis und Dreieck sollen nun Unterklassen einer gemeinsamen abstrakten Oberklasse „Figur“ werden. Überlegen Sie sich, welche Eigenschaften (Attribute) und Methoden die beiden Klassen gemeinsam haben (und was in einem gemeinsamen Konstruktor angelegt werden könnte) und verlagern Sie diese in die Oberklasse. Methoden mit identischem Code sollten Sie komplett in die Oberklasse verlagern, für Methoden mit unterschiedlichem Code aber gleicher Aufgabe und gleichen Parametern sollten Sie abstrakte Methoden in der Oberklasse definieren.
c) Es soll nun auch möglich sein, Kreise und Dreiecke um einen bestimmten Faktor zu skalieren. Z. B. soll bei einer Skalierung um den Faktor 2 der Radius bzw. die Seitenlänge verdoppelt und anschließend die betreffende Figur neu gezeichnet werden. Sehen Sie auch hierfür eine abstrakte Methode in der Klasse Figur vor.
d) Legen Sie nun in der main-Methode von GrafikApp mehrere Kreise und Dreiecke an und speichern Sie sie in einem gemeinsamen Array ab. Anschließend sollen alle Figuren gemeinsam um einen bestimmten x- und einen bestimmten y-Wert verschoben werden.
e) Skalieren Sie alle Figuren mit demselben Faktor.
Aus Blatt 5 gibt es die Klasse Dreieck. Dazu kommt ein Kreis. Dann bekommen beide eine gemeinsame Oberklasse Figur. Zum Schluss werden sechs Figuren angelegt, verschoben und vergrößert.
- a) Kreis nach dem Muster des Dreiecks.
- b) Gemeinsames in die abstrakte Klasse Figur verschieben.
- c) Eine abstrakte Methode skaliere.
- d) Alle Figuren in einem Array, gemeinsam verschieben.
- e) Alle Figuren gemeinsam skalieren.
Die vorgegebene Klasse Zeichenflaeche liegt uns nicht vor. Zum Prüfen haben wir einen kleinen Ersatz geschrieben. Er hat dieselben Methoden zeichnePixel(x, y) und leere(), die Fläche ist 900 · 800 Pixel groß. Die x-Achse zeigt nach rechts, die y-Achse nach oben. Statt eines Fensters druckt die neue Methode zeige() die Fläche auf die Konsole: Ein # steht für ein Feld von 15 · 30 Pixeln, in dem mindestens ein Pixel gezeichnet ist, ein Punkt für ein leeres Feld. Alle Klassen stehen hier in einer Datei GrafikApp.java, nur GrafikApp ist public.