Ziel dieser Aufgabe ist ein erster Rohbau für ein
primitives Zeichenprogramm, das einfache Figuren manipulieren und
ausgeben kann. Das Programm soll mit folgenden Figuren umgehen können:
Linie, Dreieck, Quadrat, Polygon, Kreis
Die grundlegende Klasse Punkt
beschreibe sowohl einen Punkt auf der Zeichenfläche als auch einen
Verschiebungsvektor. Folgende Methoden sollen für die geeigneten Figuren
implementiert werden:
move(Punkt p)
verschiebe um Vektor p
scale(double d)
vergrößere/verkleinere um Faktor d
rotate(double u)
drehe um Winkel u um den
Ursprung
String toString()
Objekttyp und Koordinaten ausgeben
Entwerfen Sie zunächst einen Stammbaum: Welche Klassen
erben von welchen? Welche abstrakten Basisklassen oder Interfaces kann
man sinnvoll einführen? Wo werden welche Methoden definiert bzw.
implementiert?
Legen Sie als nächstes fest, welche internen Daten die
einzelnen Figuren benötigen. Beachten Sie dabei den Stammbaum bzw. ändern
Sie ihn ggf. ab.
Überlegen Sie nun, welche Konstruktoren und
Hilfsmethoden Sie brauchen, um alle Figuren erzeugen oder auch abändern
zu können.
Implementieren Sie dann alle Methoden für alle Figuren.
Tip:
Rotieren eines 2d-Punkts um Winkel α um Ursprung mit Dreh-Matrizen:
oder ausgeschrieben:
x'
= x cos u + y sin u
y'
= -x sin u + y cos u
Verwenden Sie Math.cos(),
Math.sin().
Testen Sie Ihre Klassen, indem Sie ein Programm
schreiben, das die untenstehende zusammengesetzte Figur erzeugt und mit
Hilfe der toString-Methoden der Einzelteile das
Ergebnis ausgibt.