|
/* une idée...
schéma UML :
Les Classes :
/** 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 */
ExpressionSimple est inchangée
/** Expression Composée : contient 2 sous expressions
*
* @see OtherClasses
* @author dazy
*/
public abstract class ExpressionComposee extends Expression {
/** 2 sous-expressions e1 , e2
*/
public Expression e1 , e2;
/** un operateur
*/
ExpressionComposee(Expression e1 , Expression e2){
this.e1=e1;
this.e2=e2;
}
/** eval()
*/
abstract public int eval();
/** toString()
*/
abstract public String toString();
} /* end class ExpressionComposee */
/** Expression Composée : contient 2 sous expressions
*
* @see OtherClasses
* @author dazy
*/
public class Addition extends ExpressionComposee {
Addition(Expression e1 , Expression e2){
super(e1,e2);
}
/** eval()
*/
public int eval() {
return e1.eval() + e2.eval();
}
/** toString()
*/
public String toString() {
return e1.toString() + " + " + e2.toString();
}
} /* end class Addition */
/** Expression Composée : contient 2 sous expressions et un opérateur.
*
* @see OtherClasses
* @author dazy
*/
public class Soustraction extends ExpressionComposee {
Soustraction(Expression e1 , Expression e2){
super(e1,e2);
}
/** eval()
*/
public int eval() {
return e1.eval() - e2.eval();
}
/** toString()
*/
public String toString() {
return e1.toString() + " - " + e2.toString();
}
} /* end class Soustraction */
/** Expression Composée : contient 2 sous expressions et un opérateur.
*
* @see OtherClasses
* @author dazy
*/
public class Multiplication extends ExpressionComposee {
Multiplication(Expression e1 , Expression e2){
super(e1,e2);
}
/** eval()
*/
public int eval() {
return e1.eval() * e2.eval();
}
/** toString()
*/
public String toString() {
return e1.toString() + " * " + e2.toString();
}
} /* end class Multiplication */
/** Expression Composée : contient 2 sous expressions
*
* @author dazy
*/
public class Division extends ExpressionComposee {
Division(Expression e1 , Expression e2){
super(e1,e2);
}
/** eval()
*/
public int eval() {
return e1.eval() / e2.eval();
}
/** toString()
*/
public String toString() {
return e1.toString() + " / " + e2.toString();
}
} /* end class Division */
/**
*
* @author dazy
* @version
*/
public class TestExprOO {
/**
* @param args the command line arguments
*/
public static void main (String args[]) {
/** expression 1+2*5-3 */
Expression e = new Addition(
new ExpressionSimple(1),
new Soustraction(
new Multiplication(
new ExpressionSimple(2) ,
new ExpressionSimple(5)) ,
new ExpressionSimple(3)));
System.out.println(e.toString() + " = " + e.eval());
}
}
|