Projet de programmation
orientée objet avec Java
Esitcom P8
Projet à réaliser en binôme -
Dossiers à rendre le 06 décembre 1999 - Soutenances
la même semaine.
Le projet consiste à à développer une application
permettant de manipuler des expressions arithmétiques
construites avec des opérateurs (+, *...),
des nombres constants (2.5, 3...) et des
identificateurs constants (A, B...) ou variables
(x, y...).
Chaque expression est vue et manipulée comme un arbre
syntaxique, c'est-à-dire la représentation arborescente
de la structure de cette expression.
Parmi les opérations que l'on désire effectuer sur ces
expressions supposées construites, citons en quelques unes qui
sont illustrées par la figure suivante:
- l'évaluation, étant données des valeurs de
chaque identificateur (constants et variables);
- la dérivation par rapport à une variable;
- l'affichage d'une expression en ligne, avec des parenthèses
assurant une bonne sémantique;
- la simplification, étant données des
règles qui sont à déterminer;
- la duplication de l'expression;
- etc...
Le travail demandé consiste à:
- Fournir un dossier de quelques pages donnant une description
motivée de la hierarchie des classes choisie pour implanter
les expressions.
- Implanter les différentes opérations citées, plus
d'autres, bien sûr...
- Prévoir quelques jeux d'essai pertinents illustrant les
fonctionnalités de base demandées au programme et mettant en
valeur les particularités liées à vos choix.
- Générer la documentation de votre application au
format de la documentation des API standards de Java (en utilisant
javadoc).
Différentes extensions sont envisageables et au moins quelques
unes sont souhaitables. Citons par exemple:
- la minimisation du nombre de parenthèses
utilisées lors de l'affichage en ligne, par exemple:
(a*b)+(c*d) ne nécessite pas de parenthèses,
tandis qu'elles sont indispensables dans (a+b)*(c+d)
- la saisie d'une expression (analyse lexicale et
syntaxique). Il est possible, pour une analyse simplifiée de
demander à l'utilisateur de saisir une expression au format
polonaise suffixée:
a b * c d * + représente (a*b)+(c*d)
- une version évoluée pourrait permettre une saisie
interactive graphique de l'expression sous sa forme arborescente
(boutons, champ de textes, etc.);
- afficher graphiquement une expression sous sa forme
arborescente (AWT);
- élargir l'ensemble des expressions (par exemple:
opérateurs unaires, gestion des types entiers/flottants, stockage
d'expressions, etc.);
- toute idée originale est bienvenue pourvu qu'elle soit
convenablement justifiée et traitée.
Le but fondamental de ce projet est de concevoir une
application orientée objet et la hierarchie des
classes qu'elle met en oeuvre. Vous porterez donc un
intérêt particulier à cette phase de conception et
de réalisation de sorte que l'application soit modulaire
et facilement adaptable (ajout d'un opérateur, d'une
nouvelle forme d'expression, d'une fonctionnalité, etc).
Last modification : novembre 12, 1999.