TP3 : exceptions en Java, AGL 1 Exceptions 2 Calculatrice

L3-CPOO
TP3 : exceptions en Java, AGL
1 Exceptions
Reprendre l’exemple des suites r´ecurrentes du pr´ec´edent TP.
1. Introduire les exceptions.
Modifier le code de votre programme afin de r´ecup´erer les situations d’erreur suivantes :
(a) classes SuiteGeom et SuiteArithm : v´erifier que le rang transmis en argument (rgN ) est
sup´erieur `a 1 dans les 2 m´ethodes valeurAuRangN et sommeAuRangN.
(b) classe SuiteGeom : v´erifier que la progression est diff´erente de 1. Important pour le calcul de
sommeAuRangN pour ne pas faire une division par 0. La v´erification peut ˆetre faite
dans la m´ethode sommeAuRangN ou
au niveau du constructeur
Pour ce faire, vous pouvez dans l’ordre
(a) utiliser la classe Exception,
(b) cr´eer votre propre classe MonException, sous-classe de Exception,
(c) mettre votre classe MonException dans un nouveau paquetage paquetException.
2. Compl´eter votre documentation avec @trows ou @exception.
G´en´erer la nouvelle documentation avec javadoc.
3. Question compl´ementaire.
Compl´eter la classe SuiteArithm avec la m´ethode int calculRang(int) o`u l’argument correspond `a
un certain unet le r´esultat renvoe par la m´ethode est la valeur de l’indice n.
Exemple : pour une suite arithm´etique s1 de premier terme 1 et de pas 3, s1.calculRang(19) renverra
7 car 19 = u7pour cette suite.
Envisager le cas o`u l’argument transmis ne correspond pas `a un terme un.
2 Calculatrice : utilisation d’une grammaire
L’objectif de cet exercice est l’implantation d’une calculatrice. Le syst`eme est compos´e d’une calculatrice
capable de prendre en compte les op´erateurs binaires classiques (plus, moins, multiplier, diviser), les
op´erateurs unaires plus et moins. Dans le cadre de ce TP, nous ne consid´ererons que les constantes. Voici
la grammaire d’une expression arithm´etique :
EXPR EXPR ’+’ EXPR MUL
| EXPR ’-’ EXPR MUL
| EXPR MUL
EXPR MUL EXPR MUL ’*’ EXPR UNARY
| EXPR MUL ’/’ EXPR UNARY
| EXPR UNARY
EXPR UNARY ’+’ EXPR UNARY
| ’-’ EXPR UNARY
| EXPR CST
EXPR CST ’(’ EXPR ’)’
| constant
1
1. Ecrivez une classe parse expr avec une unique m´ethode publique ayant le profil suivant : public
static EXPR parse(String source). Les autres m´ethodes seront aussi static, mais private.
Dans cette classe, un ensemble de m´ethodes (une par r`egle) doit permettre de d´ecripter caract`ere
par caract`ere votre expression pour produire l’arbre syntaxique correspondant.
Remarque : Attention `a la r´ecurssivit´e gauche ! Par exemple, si vous prenez la gram-
maire tel quel, la r´egle EXPR commence par EXPR (r´ecurssivit´e sans fin. . . ). En analysant
un peu mieux les r´egles, vous pouvez transformer la premier r´egle de la mani`ere suivante :
EXPR EXPR ’+’ EXPR MUL
devient
EXPR EXPR MUL {’+’ EXPR MUL }
Les { } indiquent une r´ep´etition de 0 `a nfois.
2. Mettez en place les classes n´ecessaires pour r´ealisez le calcul de l’expression.
3. Finalisez votre programme de tel sorte que l’expression soit pass´e en param`etre lors de son ex´ecution
(exemple : java my calc ‘‘(1 2) + (3 + 2 ∗ −5)’’).
3 AGL : diagrammes de classes
Environnement
Pour ce travail, on vous demande d’utiliser le logiciel jude.
La commande pour lancer le logiciel jude sur turing est :
java -jar /usr/local/jude/jude-community.jar
Pour rendre son appel plus convivial lors des prochains TP, il est souhaitable de cr´eer un alias et de le
sauvagarder dans le fichier .bashrc ou autre fichier lanc´e lors de votre connexion :
alias jude=’java -jar /usr/local/jude/jude-community.jar’
Exercice
Reprendre l’´enonc´e des p´eages autoroutiers (TP1).
Construire le diagramme de classes correspondant.
Am´eliorer le mod`ele UML par rapport `a la version programm´ee en Java afin de r´eduire les types de base
au strict minimum et d’introduire d`es que possible de nouvelles classes.
Noter la meilleure lisibilit´e du profil de vos m´ethodes.
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !