|
/* 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());
}
}
|