import java.io.*;
import javax.swing.*;
import javax.tools.*;
import java.util.*;

class functiongenerator3D extends Thread
 {
  String fonksiyon;
  String dosyaismi;
  String sinif;
  public functiongenerator3D(String dosyaismi,String fonksiyon)
  { this.fonksiyon=fonksiyon;
    this.dosyaismi=dosyaismi;
  }
  public functiongenerator3D(String fonksiyon)
  {this.fonksiyon=fonksiyon;
   dosyaismi="f3D";
  }
  public functiongenerator3D()
  {fonksiyon="x[0]*x[0]+x[1]*x[1]-4.0";
   dosyaismi="f3D";
  }
  public void addfunction(String fonksiyon)
  {this.fonksiyon=fonksiyon;
  }
  
  public String toString()
  {return fonksiyon;}
    
 public  String createfunction()
 {String isim=dosyaismi+".java";
 String s="";
 try {PrintWriter fout=new PrintWriter(new BufferedWriter(new FileWriter(isim))); 
 s+="class "+dosyaismi+" extends f_xj\n";
 s+="{\n";
 s+="public double func(double w[])\n";
 s+="{//çözümü istenen fonksiyon\n";
 s+="double x=w[0];\n";
 s+="double y=w[1];\n";		
 s+="double ff;\n";
 s+="ff="+fonksiyon+";\n";
 s+="return ff;\n";
 s+="}\n";
 s+="}\n";
 sinif=s;
 fout.println(s);
 //System.out.println(s);
 fout.close();
 }
 catch(IOException e1) {System.err.println("girdi hatası.");} 
 catch(NumberFormatException e2){};
 JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
 int rc = javac.run(null, null, null,isim);
 return fonksiyon;
}

 protected void finalize() throws Throwable
 {super.finalize();}

 }
