Tips und Hinweise

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:

  1. Einrichten der Arbeitsumgebung
  2. Auftrag
  3. Testprogramme
  4. Originaldokumentation

Einrichten Ihrer Arbeitsumgebung

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.

  1. Die CLASSPATH-Variable sollte auf das aktuelle Verzeichnis (.), auf das lib-Verzeichnis der Java-Installation und auf das code-Verzeichnis dieser Werkstatt zeigen. Angenommen Sie haben die Werkstatt unter c:\werkstatt installiert, so sollte Ihre CLASSPATH-Variable folgendes enthalten: .;c:\werkstatt\java\lib;c:\werkstatt\code
  2. In der Einstellung der PATH-Variable sollte das bin-Verzeichnis der Java-Installation vorkommen.

Sie haben nun alle Vorbereitungen abgeschlossen, die Sie brauchen um diesen und die anderen Posten zu bearbeiten. Viel Spass!

Der Auftrag

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.

Die Testprogramme

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:

Mandelbrotmenge
// 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:

Eine Juliamenge
// 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.

FCanvas:

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.

Originaldokumentation

Bei der Arbeit mit Java hat es sich gezeigt, dass es ganz nützlich ist, einige Manuale stehts abrufbereit zu haben.

The Java Language Specification
Diese HTML-Seiten bilden ein Nachschlagewerk, das alle Fragen bezüglich der Syntax und gültigen Konstrukten in Java beantwortet. Diese Seiten sind die (gekürzte) Online-Version des gleichnamigen Buches.
 
The Java Application Programming Interface
Auch diese HTML-Seiten sind eine gekürzte Fassung zweier gleichnamiger Bücher (Volume 1 und Volume 2). Sie enthalten eine komplette Beschreibung aller Schnittstellen der Standard-Klassenbibliothek.
 
The Java Tools Reference Pages
Eine etwas vollständigere Übersicht über die Java-Werkzeuge. Sie sollten diese Seiten eigentlich nicht benötigen. Wir haben sie dennoch beigelegt, für den Fall, dass Sie mit unseren Erklärungen nicht auskommen, oder einfach neugierig sind.

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