Ciao,
e' ufficiale:sono senza internet a casa...devo andare nei laboratori per avere accesso a internet
Intanto Pastore2 ti ringrazio per la risposta!
Dunque, dopo un esame ho ripreso a fare questo proggettino...posto in seguito la traccia:

Deve essere realizzata:
1) una classe Espressione che permette di rappresentare le espressioni con variabili, come ad esempio sin2x-ylnx.
Implementare in Espressione:
1-1) un metodo Semplifica che tiene conto dello 0 come elemento neutro della somma e come elemento che annulla un prodotto, e dell’1 come elemento neutro del prodotto. Ad esempio, x*0+0+3*1*x diviene 3*x.
1-2) un metodo Derivata che presa in input una stringa x, restituisce la derivata prima dell’espressione rispetto alla variabile indicata dalla stringa x. (L’espressione restituita deve essere “semplificata” con il metodo Semplifica)
1-3) un metodo che permetta di rappresentare come stringa una espressione.


No albero binario, stack o qualsiasi altra struttura dati...
l'idea e' di creare una classe (astratta) "Espressione" che definisce l'interfaccia del espressione con i suoi metodi (Semplifica(),Derivata(),toString())....questa fara' da classe "genitrice" e poi implementare le classi "figlie" derivate da questa(somma,sottrazione,dividi,moltiplica,log,ln, cos,sin ecc (piu' ne metti meglio e'))....
Bene, detto tutto si passa alla pratica:come faccio?!

codice:
abstract class Espressione{
   // Costruttore 
   public Espressione(){
   }      
   public void Semplifica();   
   public String Derivata();   
   public void Stampa(); 
}
....