Le but de cet exercice est de construire un anneau comme étant un cercle dont on a évidé une zone circulaire définie par son rayon interne.
Préliminaire : avant d'écrire la classe Ring,
Ajouter à la classe Circle du TD précédent
la méthode surface() qui renvoie la
surface d'un cercle (en fait du disque).
Modifier la méthode toString() pour
qu'elle affiche la surface.
Rappeler dans un premier temps, dans quel cas il est judicieux
de faire de l'héritage.
Écrire la classe Ring qui hérite de la
classe Circle.
Quelle est le problème avec la méthode surface ?
Ring ring=new Ring(new Point(1,2),2,1); System.out.println(ring.surface());Résoudre le problème posé par la méthode ?
Ensuite,
Le but de cet exercice est de construire un évaluateur d'expressions arithmétiques simples. Ces expressions sont représentées sous forme d'arbre.
On veut un type commun Expr représentant des
expressions arithmétiques qui peuvent être soit une valeur
réelle (de type Value) soit une opération
d'addition (de type Add) qui permet d'effectuee
l'addition de deux expression.
On veut de plus être capable d'évaluer
de ces expressions en utilisant la méthode
eval().
Expr value=new Value(7.0); System.out.println(value.eval()); // affiche 7.0 Expr add=new Add(new Value(3.0),value); System.out.println(add.eval()); // affiche 10.0 Expr expr=new Add(new Value(2.0),add); System.out.println(expr.eval()); // affiche 12.0
Java Evaluator "+" "7" "*" "3" "2" =13Chaque chaîne de caractère est analysée pour savoir s'il s'agit d'un opérateur où d'une valeur. L'expression est construite par un parcours récursif, puis évaluée.