parser
Class Parser

java.lang.Object
  extended by parser.Parser

public class Parser
extends java.lang.Object

Eine Klasse, die zuständig ist für das erstellen von Funktionen aus Strings. Sie berechnet nach dem Anlegen einer Funktion die Werte, die man anfordert und gibt diese als Array zurück.
Ist ein Funktionsterm fehlerhaft, wird ein Fenster geöffnet, das zur Korrektur auffordert. Der Parser ist zwar kein Singleton, aber kann seine eigene Instanz mit Hilfe einer statischen Methode zurückgeben.

Author:
Stephan Hageböck Datum: 11.09.2005

Field Summary
static boolean aktualisierenErlaubt
          Verhindert das Aktualisieren der Registerkarten, wenn dadurch eine falsche Funktion immer wieder Fehler hervorrufen würde.
static double[] parameter
          Enhält sämtliche Werte der Parameter, die eingegeben werden können. [0] entspricht a, [25] z.
 
Constructor Summary
Parser()
          Ein neuer Parser wird erzeugt.
 
Method Summary
 double f(double x, java.lang.String Funktionsterm, InterfaceParserEingabe Bedienfeld)
          Diese Methode liefert einen Funktionswert als double zurück.
 java.util.HashMap funktionswerte(java.lang.String Funktionsterm, double A, double I, double E, InterfaceParserEingabe Bedienfeld)
          Diese Methode liefert Funktionswerte in einer Hashmap gespeichert zurück.
static Parser getInstance()
          Gibt die Instanz des Parsers zurück
 java.util.ArrayList getParameter(java.lang.String Funktion)
          Gibt eine (geordnete) Liste mit den Parametern, die in der Funktion verwendet werden zurück.
 java.util.ArrayList gibWerte(java.lang.String Funktionsterm, double Anfang, double Intervall, double Ende, InterfaceParserEingabe Bedienfeld)
          Diese Methode liefert Funktionswerte in Abhängigkeit von x.
 java.util.ArrayList gibWerteAbgeleitet(java.lang.String Funktionsterm, double Anfang, double Intervall, double Ende, InterfaceParserEingabe Bedienfeld, int Grad)
          Diese Methode liefert Funktionswerte der Ableitung in Abhängigkeit von x.
 boolean neueFunktion(java.lang.String Funktionsterm)
          Eine neue Funktion wird angelegt.
 double[] parameterDesPolynoms(java.lang.String Polynom, InterfaceParserEingabe Bedienfeld)
          Prüft, ob ein Funktionsterm ein Polynom ist.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

aktualisierenErlaubt

public static boolean aktualisierenErlaubt
Verhindert das Aktualisieren der Registerkarten, wenn dadurch eine falsche Funktion immer wieder Fehler hervorrufen würde.


parameter

public static double[] parameter
Enhält sämtliche Werte der Parameter, die eingegeben werden können. [0] entspricht a, [25] z.

Constructor Detail

Parser

public Parser()
Ein neuer Parser wird erzeugt.

Hinweis: Der Parser sollte nur einmal instanziert werden, weil es sinnvoller ist, einen Parser für alle Funktionen zu nehmen (Speicherverbrauch). Mit static getInstance() bekommt man eine Instanz des Parsers, die auch schon anderswo im Programm benutzt werden könnte. Wer einen neuen und leeren Parser möchte, der benutzt den Konstruktor.

Method Detail

gibWerte

public java.util.ArrayList gibWerte(java.lang.String Funktionsterm,
                                    double Anfang,
                                    double Intervall,
                                    double Ende,
                                    InterfaceParserEingabe Bedienfeld)
                             throws java.lang.IllegalArgumentException
Diese Methode liefert Funktionswerte in Abhängigkeit von x. Man liefert ein Intervall, in dem die Werte berechnet werden sollen. Nur aufsteigende Intervalle sind zulässig.

Parameters:
Funktionsterm - Der String mit dem Funktionsterm, dessen Werte man haben möchte
Anfang - Beginn des Intervalls
Intervall - Schrittgröße
Ende - Ende des Intervalls (Ende eingeschlossen, wenn Anfang + n*Intervall =Ende)
Bedienfeld - Die Instanz, die das Eingabefeld für den Term sowie die Scrollbalken für die Parameter enthält.
Returns:
ArrayList Liste mit Punkten der Funktion, nach aufsteigender x-Koordinate sortiert.
Throws:
java.lang.IllegalArgumentException - bei falschen Parametern

gibWerteAbgeleitet

public java.util.ArrayList gibWerteAbgeleitet(java.lang.String Funktionsterm,
                                              double Anfang,
                                              double Intervall,
                                              double Ende,
                                              InterfaceParserEingabe Bedienfeld,
                                              int Grad)
                                       throws java.lang.IllegalArgumentException
Diese Methode liefert Funktionswerte der Ableitung in Abhängigkeit von x. Man liefert ein Intervall, in dem die Werte berechnet werden sollen. Nur aufsteigende Intervalle sind zulässig. Diese Methode arbeitet algebraisch, sie bestimmt die Steigung der Funktion.

Parameters:
Funktionsterm - Der String mit dem Funktionsterm, dessen Werte man haben möchte
Anfang - Beginn des Intervalls
Intervall - Schrittgröße
Ende - Ende des Intervalls (Ende eingeschlossen, wenn Anfang + n*Intervall =Ende)
Bedienfeld - Die Instanz, die das Eingabefeld für den Term sowie die Scrollbalken für die Parameter enthält.
Grad - Der Grad der Ableitung: 0 ist die Funktion selber, 1 die erste...
Returns:
ArrayList Liste mit Punkten der Funktion, nach aufsteigender x-Koordinate
Throws:
java.lang.IllegalArgumentException - bei falschen Parametern, insbesondere, wenn der Funktionsterm nicht stimmt

neueFunktion

public boolean neueFunktion(java.lang.String Funktionsterm)
Eine neue Funktion wird angelegt. Ist der Funktionsterm fehlerhaft, bricht die Methode ab und der Nutzer wird zur Korrektur aufgefordert. Ist der Funktionsterm schon vorhanden, passiert nichts.

Parameters:
Funktionsterm - Ein String, der die Funktion enthält.
Returns:
true, wenn die Funktion geparst werden konnte
false für eine falsche Funktion, die der Nutzer nicht korrigieren wollte.

f

public double f(double x,
                java.lang.String Funktionsterm,
                InterfaceParserEingabe Bedienfeld)
Diese Methode liefert einen Funktionswert als double zurück. Wenn die Funktion existiert, wird sie aus dem Speicher geholt und der Wert berechnet. Existiert sie noch nicht, wird sie neu angelegt.

Parameters:
x - Der x-Wert, dessen y-Wert man haben möchte.
Funktionsterm - Der Funktionsterm, der den Wert berechnet.
Returns:
f(x), den Funktionswert.

funktionswerte

public java.util.HashMap funktionswerte(java.lang.String Funktionsterm,
                                        double A,
                                        double I,
                                        double E,
                                        InterfaceParserEingabe Bedienfeld)
Diese Methode liefert Funktionswerte in einer Hashmap gespeichert zurück.

Parameters:
Funktionsterm -
A - Anfang des Intervalls (x-Wert)
I - Intervalllänge
E - Ende des Intervalls (Ende eingeschlossen)
Returns:
Eine HashMap mit den x-Werten als Schlüssel und den dazugehörenden y-Werten

parameterDesPolynoms

public double[] parameterDesPolynoms(java.lang.String Polynom,
                                     InterfaceParserEingabe Bedienfeld)
Prüft, ob ein Funktionsterm ein Polynom ist. Zugelassen ist nur eine Eingabe in der Form: ax^3+bx^2+cx^+d, wobei a,b,c,d nur natürliche Zahlen sind.

Parameters:
Polynom - Der Funktionsterm des vermeintlichen Polynoms
Returns:
double[11]
Auf [5] der Faktor vor x^5.
null, wenn der Term kein Polynom ist.

getParameter

public java.util.ArrayList getParameter(java.lang.String Funktion)
Gibt eine (geordnete) Liste mit den Parametern, die in der Funktion verwendet werden zurück.

Parameters:
Funktion - Der Funktionsterm
Returns:
Eine ArrayList mit den Parametern der Funktion (alphabetisch)

getInstance

public static Parser getInstance()
Gibt die Instanz des Parsers zurück

Returns:
Die Instanz des Parsers, soweit sie existiert. Wenn nicht, wird eine instanziert.