kostenloser Webspace werbefrei: lima-city


Verschachtelte Funktionen

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    max25

    max25 hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. 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
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!