Save Link as
heruntergelden werden.
Ich empfehle, alle folgenden Dateien erst einmal in ein gesondertes
Verzeichnis zu schreiben, damit die Übersicht nicht verloren geht.
Zunächst die drei (z.T. abstrakten) Klassen
Funktion.java (diese Klasse ist wesentlich maechtiger als die
bisher besprochenen Klassen
Funktion1, Funktion2, ...
)
ParamKurve.java
InterpolPunkte.java,
mit deren instanziierten (Unter-)Klassen die entprechenden grafischen Objekte
erzeugt werden
können. In diesen Klassen werden die folgenden Klassen, bzw.
Interfaces verwendet:
Grafik.java,
Bild.java,
MinMax.java,
Darstellbar.java.
Die Klasse
GIFEncoder.java enthält mehrere technischen Klassen, die erst
nach der Compilierung sichtbar werden.
Ferner gibt es noch
SpeichernDialog.java.
Es gibt die Applikationsklasse
Funktionendarstellung.java
zum Testen. Sie verwendet die folgenden drei Unterklassen
der Klasse
Funktion
Sinus.java,
Wurzel.java,
Quadrat.java,
die beiden Unterklassen
Ellipse.java,
Gerade.java
der Klasse
ParamKurve
; ferner wird ein Objekt der Klasse
InterpolPunkte
in der Applikationsklasse selbst erzeugt.
Um alle grafischen Objekte in einem Fenster zu zeichnen, wird die
Klasse Liste
in
Liste.java
benötigt.
Als erstes sollte man den Test durch Compilierung
von
Funktionendarstellung.java
machen. Dann sollten sich
eine Fülle von neuen *.class-Dateien bilden. Die Ausführung
von
Funktionendarstellung.class
sollte dann zu
folgendem Bild führen:
Man kann aber auch ein neues Verzeichnis, z.B.
namens EigeneKlassen
als Unterverzeichnis von C:\
erstellen, diese 16 Klassen dort hinein kopieren und unter Windows
mit dem Kommando SET CLASSPATH=.;C:\EigeneKlassen
den Javacompiler
zwingen, in diesem und dem aktuellen Verzeichnis nach Klassen zu suchen.
Funktion
, die
die
Abbildungsvorschrift in Gestalt der Methode getY()
enthält. Der Konstruktor ermöglicht die Übergabe des
Intervalls, das der Zeichnung zu Grunde liegt und kann einen namen
festsetzen, der in der Zeichnung erscheinen wird.
Dann ist eine Applikationsklasse (wiepublic class Wurzel extends Funktion{ public Wurzel(double xMin, double xMax){ super(xMin,xMax); Name="Sqrt(x)"; } public double getY(double x){ return Math.sqrt(x); //negative Eingaben werden nicht abgefangen } }//Ende Wurzel
Funktionendarstellung
, aber viel einfacher)
zu erstellen, in der ein Objekt der eben geschaffenen Unterklasse
instanziert wird. Hier legt man sich auf das Intervall fest:
Die Initialisierung des Grafik-Objektesclass ZeichneWurzel{ static void main(String[] args){ Wurzel f=new Wurzel(0,1); //Intervall ist also [0,1] Grafik g= new Grafik(f); }//Ende main() }//Ende ZeichneWurzel
g
, dem die
Funktion f übergeben wird,
bewirkt, dass sich ein Grafikfenster mit dem gesuchten Graphen von
f öffnet. Interakiv kann danach
nur noch die Auflösung
geändert werden, etwa um durch Erhöhung ein "glatteres" Bild
zu erhalten (wenn die Voreinstellung nicht ausreicht).
Danach kann man das Bild als *.gif-File abspeichern, wenn man
den Menupunkt Grafik
anklickt. Die Endung .gif wird
automatisch angefügt. Mit anderen Programmen kann man danach
mit Hilfe dieses gif-Files
die Grafik ausdrucken oder in einen Text einfügen, z.B. in dieses
html-Dokument.
Bei dieser Anwendung muss man neben der Klasse Funktion
nur noch
die Klasse Grafik
namentlich kennen. Alle anderen Klassen
arbeiten unbemerkt im Hintergrund.
SpPol
von Funktion
definiert.
Die Applikationsklasse hat dann das folgende Aussehen:
Hier werden direkt neben den Klassen/** Graphische Darstellung einer zu interpolierenden Funktion, einer Interpolationsfunktion und von Interpolationspunkten */ public class ZeichneInterp{ public static void main(String[] args){ Liste fr=new Liste(); Wurzel f1=new Wurzel(0,1); fr.addDarstellbar(f1); SpPol f2=new SpPol(0,1); fr.addDarstellbar(f2); double kX[]={0, 0.49, 1}; double kY[]={0, 0.7 , 1}; InterpolPunkte f3=new InterpolPunkte(kX,kY); fr.addDarstellbar(f3); Grafik g=new Grafik(fr); } }
Funktion, Grafik
die Klassen InterpolPunkte, Liste
, letztere
mit ihrer Methode
addDarstellbar()
verwendet.
Die Grafik sieht dann so aus:
f1, f2, f3
zu tun haben,
aus der die Grafik bestehen soll, ist das Erzeugen
einer Grafik etwas komplexer als im ersten Beispiel einer
Funktion. Die drei Objekte werden mittels einer Methode
addDarstellba()
einer Liste namens fr
hinzugefügt und dann dem Konstruktor des Grafikobjekts
übergeben.
Der Vollständigkeit gebe ich auch die Klasse SpPol.java an:
class SpPol extends Funktion{
public SpPol(double xMin, double xMax){
super(xMin,xMax);
Name="Interpolationspolynom";
}
public double getY(double x){
double y=x-0.84033614*x*(x-1) ;
return y;
}
}
ParamKurve
gebildet werden, z.B. eine Ellipse:
Dann kann die folgende sehr kurze Applikationsklasse benutzt werden:public class Ellipse extends ParamKurve{ public Ellipse(double min, double max){ super(min, max); name="x=2*cos(t), y=4*sin(t)"; } public double getX(double t) {return 2*Math.cos(t);} public double getY(double t) {return 4*Math.sin(t);} }
public class ZeichneEllipse{ public static void main(String[] args){ Ellipse f1=new Ellipse(0,2*Math.PI); Grafik g=new Grafik(f1); } }
Funktion
double xMin, double xMax
(Definitionsbereich)
Funktion()
(1. Konstruktor)
Funktion(double xMin, double xMax)
(2. Konstruktor)
String Name
(Name der Funktion, wird als
Überschrift im Grafikfenster verwendet)
void setName(String name)
(Methode zum Setzen des
Namens)
abstract double getY(double x)
(Abbildungsvorschrift, muss in jeder Unterklasse implementiert
werden))
void setIntervall(double xMin, double xMax)
(nachträgliches Definieren des x-Bereichs des Grafikfensters)
InterpolPunkte
InterpolPunkte(double[] x, double[] y)
(Konstruktor) String Name, void
setName(String name)
(wie bei Funktion
)
ParamKurve
ParamKurve(double a, double b)
(Konstruktor)
abstract double getX(double t), abstract
double getY(double t)
(Die beiden Parametrisierungen, t in
[a,b]) Name String, void setName(String
name)
(wie bei Funktion
)
Liste
Liste()
(Konstruktor)
void addDarstellbar(Darstellbar f)
(eine Methode,
die ein grafisches Objekt f
zur Liste
hinzufügt. Dabei ist f
ein Objekt der Klasse
Funktion
, der Klasse InterpolPunkte
oder der
Klasse ParamKurve
, die alle das Interface
Darstellbar
implentieren.
Grafik
Grafik(Liste fr)
(1. Konstruktor)
Grafik(Darstellbar f)
(2.Konstruktor, wobei
f
ein Grafikobjekt der Klasse Funktion,
InterpolPunkt, ParamKurve
ist.)