/* une idée...

/** Première vision Objet des expressions entières...
 * 
 * @see ExpressionSimple , ExpressionComposee
 * @author dazy
 */
public abstract class Expression {

  /** Schéma de méthode imposé pour l'évaluation des expressions
  */
  public abstract int eval();
  
  /** Schéma de méthode imposé pour l'affichage des expressions
 */
  public abstract String toString();

} /* end class Expression */

/** Expression Composée : contient 2 sous expressions et un opérateur. * * @see OtherClasses * @author dazy */ public class ExpressionComposee extends Expression { /** 2 sous-expressions e1 , e2 */ public Expression e1 , e2; /** un operateur */ public Operateur o; ExpressionComposee(Expression e1 , Operateur o , Expression e2){ this.e1=e1; this.e2=e2; this.o=o; } /** eval() */ public int eval() { switch (o.c) { case '+' : return e1.eval() + e2.eval(); case '-' : return e1.eval() - e2.eval(); case '*' : return e1.eval() * e2.eval(); default : return e1.eval() / e2.eval(); } } /** toString() */ public String toString() { switch (o.c) { case '+' : return e1.toString() + " + " + e2.toString(); case '-' : return e1.toString() + " - " + e2.toString(); case '*' : return e1.toString() + " * " + e2.toString(); default : return e1.toString() + " / " + e2.toString(); } } } /* end class ExpressionComposee */
/** Expression Simple ou constante * * @see Expression * @author dazy */ public class ExpressionSimple extends Expression { /** une expression Simple est une constante entière : n */ public int n; //Constructeur public ExpressionSimple(int n){ this.n=n; } /** eval() * * @return int */ public int eval() { return n; } /** toString() * * @return String */ public String toString() { return "" + n; } } /* end class ExpressionSimple */
// la classe Operateur est inchangée...
/** * * @author dazy * @version */ public class TestExprOO1 extends Object { /** * @param args the command line arguments */ public static void main (String args[]) { /** expression 1+2*5-3 */ Expression e = new ExpressionComposee( new ExpressionSimple(1), new Operateur('+') , new ExpressionComposee( new ExpressionComposee( new ExpressionSimple(2) , new Operateur('*') , new ExpressionSimple(5)) , new Operateur('-') , new ExpressionSimple(3))); System.out.println(e.toString() + " = " + e.eval()); } }