Verschachtelte Funktionen
lima-city → Forum → Programmiersprachen → Java
art
befehl
beispiel
code
double
folgende aufgabenstellung
funktion
interpreter
kopf
leben
mathematik
methode
moment
parabel
parameter
private funktionen
private string
schachtel
set
string
-
Hi habe im moment nen Denkblockade.
Folgende Aufgabenstellung.
Geschrieben werden soll ein Programm das Verschiedene Classen beinhaltet.
Eine abstrakte classe namens Funktionen. Dann 2 Klassen die von Funktionen erben und zwar Parabel und Hyperbel.
Soweit so gut. In Hyperbel und Parabel sollen über den Konstruktor werte eingelesen werden. Bei Parabeln ist des a,b,b für die Formel ax^2+bx+c. Bei Hyperbel nur a. Alles so weit kein Problem.
Nun gibt es aber bei dem Thema Funktionen in der Mathematik so schöne aufgaben wie g(f(x)). Sprich g(x) eine Hyperbel und f(x) eine Parabel (das muss aber variabel sein ist nicht festgelebt hier nur ein Beispiel). Nunn soll eine neue Klasse geschriben werden die eine Methode enthält um diese verschatelung auszurechnen. Übergeben werden soll der Methode die Parameter 2er Funktionen.
Ich zerbrech mir gerade echt den kopf drüber obwohl es bestimmt sehr einfach mal wieder ist.
Hoffe auch mit der müdigkeit das ich es einigermaßen rübergebracht habe was ich won euch wissen möchte.
mfg
Max -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hi,
ich würde dieser Verschachtelungs Klasse NICHT die Parameter, sondern die Funktionen selbst übergeben!
Dann bräuchtest du noch so eine Art befehls String...
Nach deinem Beispiel wäre dieser "g(f(x))"
Dieser Befehlsstring müsste dann als Java Code ausgeführt werden...
Die Lösung heißt: "BeanShell"
import bsh.Interpreter; class Schachtel extends Funktionen{ private Funktionen g; private Funktionen f; private String befehl; public Schachtel(Funktionen g, Funktionen f, String befehl){ this.g = g; this.f = f; this.befehl = befehl; } public double get(double x){ double result = 0; try{ String modBefehl = befehl.replaceAll("g" , "g.get"); String modBefehl = modBefehl.replaceAll("f", "f.get"); Interpreter i = new Interpreter(); i.set("g", g); i.set("f", f); i.set("x", x); double result = (double)i.eval("modBefehl"); }catch(Exception ex){ ex.printStackTrace(); } return result; } }
Ich habe den Code nicht getestet, könnte also fehlerhaft sein!
Ein Beispiel:
Schachtel s = new Schachtel(g,f, "g(f(x))");
double y = s.get(2);
Grüße,
micha -
So kompliziert muss das Leben nicht sein ... Versuch einfach mal:
Hyperbel h = new Hyperbel(new Parabel(a, b, c))
Wenn deine Funktionen wirklich über den Konstruktor parametriert werden, sollte das in etwa hinhauen.
Cheers, Mingola
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage