• Aucun résultat trouvé

Sujet 2 : Expression numérique

N/A
N/A
Protected

Academic year: 2022

Partager "Sujet 2 : Expression numérique"

Copied!
2
0
0

Texte intégral

(1)

IUT des Pays de l’Adour - RT2

Module I5 - Programmation Orientée Objet

Sujet 2 : Expression numérique

Dans cet exercice, il s’agit de spécifier et d’implémenter les différentes classes permettant de construire, d’évaluer et d’afficher des expressions numériques représentées sous forme d’arbre. Par exemple, l’expres- sion 3 + 2 * 6 - 2 * (4 + 9)pourrait être représentée par l’arbre de la figure 1 (c’est une des solutions possibles) :

-

+

3 *

2 6

*

2 +

4 9

Fig.1 – Expression numérique

Pour arriver à nos (vos) fins, il faut commencer par définir une classe Expressionde laquelle hériteront les classes suivantes :

– classe Constante: les instances de cette classe seront des constantes réelles

– classeOperateurBinaire: les instances de cette classe seront composées d’une expression gauche, d’un opérateur et d’une expression droite ; bien évidemment (sic), l’opérateur ne sera pas explicitement codé dans un attribut quelconque, mais sera plutôt représenté implicitement par différentes sous-classesPlus, Moins,Multiplier,Diviser, etc. . .

– classe OperateurUnaire: comme pour un opérateur binaire, sauf qu’il n’y a pas d’expression gauche – classeFonction: une fonction prend plusieurs expressions numériques en paramètres et son évaluation

retourne une valeur

Au final, le graphe de classes pourrait ressembler à celui de la figure 2. Ce ne sont que les grandes lignes.

Libre à vous de le compléter comme bon vous semble en utilisant au mieux les différentes notions vues en cours et en TD (en vrac : méthodes et classes abstraites, méthodes et classes finales, méthodes génériques, constructeurs spécialisés, redéfinition de méthodes, surcharge de méthodes,. . .). Et n’oubliez pas de faire un programme de test pertinent!

Une fois ceci terminé et testé, vous vous attacherez ensuite à ajouter la classe Variable. Une variable est représentée par son nom, sa valeur pouvant varier selon le contexte. Vous devrez donc mettre en œuvre une classe Contexte permettant d’associer une valeur à une variable, de modifier la valeur associée à une variable, etc. . . Ensuite il faut faudra définir et implémenter (proprement et correctement) une nouvelle méthode permettant d’évaluer une expression numérique en fonction d’un contexte donné (celui-ci étant utilisé par les variables pour connaître leur valeur).

1

(2)

Expression

double evaluer()

String notationInfixee() String notationPostfixee()

Constante

double valeur

Fonction

Plus

Moins

Multiplier

Diviser

PlusU

MoinsU OperateurBinaire

Expression gauche Expression droite String opName()

OperateurUnaire

Expression expr

String opName()

?

Fig.2 – Graphe de classes

2

Références

Documents relatifs

L’opération principale d’une expression numérique est la dernière opération qui sera effectuée selon les priorités des opérations.. Exemples : en jaune, on surligne

Définition : Les calculs contenant des nombres et/ou des lettres s'appellent expressions algébriques ou

Pour cela, on passe dans la base des vecteurs propres car on sait que, dans celle-ci, le système est diagonal.. 2 Expression dans la base des

This, however, does not mean that emotions and feelings, thus cognitively used, are different from what they are w h e n they are not engendered by art, neither

Dans un système de réplication bidirectionnelle, chacun des deux brins néosynthétisés est donc produit pour moitié par synthèse continue et pour l'autre moitié par

Dans un système de réplication bidirectionnelle, chacun des deux brins néosynthétisés est donc produit pour moitié par synthèse continue et pour l'autre moitié par

ü  Une fois le ribosome atteint un codon STOP (il n'existe aucun ARNt capable de reconnaître ce codon), une enzyme s'y fixe et détache l'ARNm du ribosome et la chaîne

ü  Dans certains cas, un même gène peut être épissé de différentes façons pour donner différentes protéines. ü  Une protéine peut aussi être découpée, après