Sie implementieren bei jedem Posten nur den Kern der Applikation und wir stellen den Rest zur Verfügung. So können Sie sich auf das Wesentliche konzentrieren. Mit Hilfe der Testprogramme entscheiden Sie selbst, ob Ihre Klassen richtig funktionieren. Sie finden hier Hinweise zu folgenden Themen:
Erzeugen Sie ein neues Verzeichnis das Sie fortan für Ihre Arbeit mit dieser Werkstatt verwenden werden. Dies kann an einem beliebigen Ort Ihrer Wahl geschehen. Öffnen Sie eine Dos-Box in diesem Verzeichnis, geben Sie set ein und überprüfen Sie folgende zwei Einstellungen.
Sie haben nun alle Vorbereitungen abgeschlossen, die Sie brauchen um diesen und die anderen Posten zu bearbeiten. Viel Spass!
Sie haben im letzten Posten die Klassen Mandelbrot und Julia implementiert. Nach dieser Trockenübung sollen Sie nun diese beiden Klassen mit javac kompilieren. Es ist wichtig, dass Sie Ihren Klassen die Namen Mandelbrot und Julia geben, andernfalls unsere Testprogramme nicht funktionieren würden. Sehen Sie sich das Ergebnis, dass Ihre Klassen produzieren mit den beiden Testprogrammen an. Dazu verwenden Sie den Interpreter java. Bei den Beschreibungen der Testprogramme weiter unten, liegen verkleinerte Abbildungen eines korrekten Ergebnisses bei. Korrigieren und rekompilieren Sie Ihre Klassenimplementationen so lange, bis deren Ergebnisse diesen Abbildungen entsprechen.
Zu der Testumgebung gehören drei Klassen:
FCanvas, Mandeltest und Juliatest. Die Struktur der
Testapplikation ist nebenan am Beispiel Julia illustriert,
der Fall Mandelbrot sieht analog aus. Ihre Klasse ist
sozusagen das Fleisch im Sandwich der
Testumgebung. Die Testumgebung abstrahiert für Sie viele Details, die für das Zeichnen von Fraktalen unwichtig sind. Sie müssen sich also nicht darum kümmern, was passiert, wenn das Testfenster z.B. verschoben oder in den Hintergrund gebracht wird. Juliatest erzeugt zuerst ein Fenster und initialisiert eine Fläche der Klasse FCanvas. Danach wird (mit dem Konstruktor Julia) ein Objekt Ihrer Klasse erzeugt um ihm dann sogleich den Auftrag draw zu schicken. Ihre draw-Methode wiederum muss nur die Farbe und die Koordinaten der Punkte berechnen, und kann diese dann mit der Methode dot zeichnen lassen. |
|
Mandeltest: zeichnet eine Mandelbrotmenge. Das Programm öffnet ein Fenster,
erzeugt ein Objekt der Klasse Mandelbrot und aktiviert dessen draw-Methode. Es
kann jederzeit mit Ctrl-C abgebrochen werden. Starten Sie Mandeltest mit dem
Java-Interpreter von der DOS-Kommandozeile aus. Falls dies nicht gelingt,
überprüfen Sie die Einstellung der CLASSPATH-Variable und der PATH-Variable.
Die Datei Mandeltest befindet sich im code Verzeichnis Ihrer Werkstatt-Installation
und wird vom Interpreter automatisch gefunden. Mandeltest fordert von Mandelbrot nur folgende Schnittstelle: | ![]() |
// Konstruktor public Mandelbrot(FCanvas canvas, int x, int y, int w, int h, double fx, double fy, double fw, double fh, double a, double b) // Methode public void draw()
canvas ist eine Fläche auf dem Bildschirm, auf die das Fraktal gezeichnet werden soll. x und y stellen den linken unteren Eckpunkt von canvas dar (in diesem Fall immer (0, 0)). w und h geben die Breite und Höhe von canvas an. Der Bereich der komplexen Zahlen, in dem das Fraktal berechnet werden soll ist durch fx, fy, fw und fh gegeben (wiederum linke untere Ecke und Ausdehnung). a und b schliesslich sind der reele bzw. imaginäre Teil der komplexen Zahl c in der Iterationsformel z = z2 + c
Juliatest: zeichnet eine Juliamenge. Das Programm verhält sich genau gleich wie
Mandeltest, nur das jetzt die Klasse Julia getestet wird. Juliatest kann auch jederzeit
mit Ctrl-C abgebrochen werden, und es benötigt dieselben Einstellungen der
Umgebungsvariablen wie Mandeltest. Juliatest fordert von Julia nur folgende Schnittstelle: | ![]() |
// Konstruktor public Julia(FCanvas screen, int x, int y, int w, int h, double fx, double fy, double fw, double fh, double a, double b) // Methode public void draw()
Die Parameter des Konstruktors für die Klasse Julia haben exakt die gleiche Bedeutung wie die der Klasse Mandelbrot.
Diese Klasse stellt eine Fläche zur Verfügung auf der Sie Ihre Fraktale zeichnen können. Sie müssen dabei nur die dot-Methode benützen, der Rest wird von der Testumgebung initialisiert oder von FCanvas selbst verwaltet.
Die Methoden public int width() und public int height() geben Auskunft über die Breite respektive Höhe der Fläche. Mit public void dot(Color c, int x, int y) wird ein Punkt an der Koordinate (x, y) mit der Farbe c gezeichnet.
Beachten Sie bitte, dass Sie es mit zwei Koordinatensystemen zu tun haben. Einerseits haben Sie eine diskrete Ebene mit endlich vielen Pixeln zur Darstellung des Fraktals, und andererseits müssen Sie das Fraktal in der Ebene der komplexen Zahlen berechnen. Deshalb haben Sie also für die diskrete Ebene int-Werte und für die komplexe Ebene float-Werte zu verarbeiten.
In unserem Testprogramm für Juliamengen sind h = 300, w = 400, (fx, fy) = (-1.8, -1.5), fw = 3.0 und fh = 3.0. Bevor Sie mit der Implementation beginnen, studieren Sie zuerst einmal den Pseudocode. Vieles, was jetzt sehr abstrakt klingt, wird dann sicher verständlich werden.
Bei der Arbeit mit Java hat es sich gezeigt, dass es ganz nützlich ist, einige Manuale stehts abrufbereit zu haben.
Surfen Sie ein wenig durch diese Seiten und machen Sie sich mit deren Aufbau vertraut. Sie werden sie im Laufe Ihrer Arbeit an dieser Werkstatt sicher immer wieder brauchen.
JDK - javac und java - Tips und Hinweise - Lösungsmöglichkeit (OOP)
OOP - Werkzeuge - Referenzen - Fäden - Synchronisation - Applets - Dokumentation
Werkstatt - Bibliographie