TP3 : exceptions en Java, AGL 1 Exceptions 2 Calculatrice

publicité
L3-CPOO
TP3 : exceptions en Java, AGL
1
Exceptions
Reprendre l’exemple des suites récurrentes du précédent TP.
1. Introduire les exceptions.
Modifier le code de votre programme afin de récupérer les situations d’erreur suivantes :
(a) classes SuiteGeom et SuiteArithm : vérifier que le rang transmis en argument (rgN ) est
supérieur à 1 dans les 2 méthodes valeurAuRangN et sommeAuRangN.
(b) classe SuiteGeom : vérifier que la progression est différente de 1. Important pour le calcul de
sommeAuRangN pour ne pas faire une division par 0. La vérification peut être faite
– dans la méthode sommeAuRangN ou
– au niveau du constructeur
Pour ce faire, vous pouvez dans l’ordre
(a) utiliser la classe Exception,
(b) créer votre propre classe MonException, sous-classe de Exception,
(c) mettre votre classe MonException dans un nouveau paquetage paquetException.
2. Compléter votre documentation avec @trows ou @exception.
Générer la nouvelle documentation avec javadoc.
3. Question complémentaire.
Compléter la classe SuiteArithm avec la méthode int calculRang(int) où l’argument correspond à
un certain un et le résultat renvoyé par la méthode est la valeur de l’indice n.
Exemple : pour une suite arithmétique s1 de premier terme 1 et de pas 3, s1.calculRang(19) renverra
7 car 19 = u7 pour cette suite.
Envisager le cas où l’argument transmis ne correspond pas à un terme un .
2
Calculatrice : utilisation d’une grammaire
L’objectif de cet exercice est l’implantation d’une calculatrice. Le système est composé d’une calculatrice
capable de prendre en compte les opérateurs binaires classiques (plus, moins, multiplier, diviser), les
opérateurs unaires plus et moins. Dans le cadre de ce TP, nous ne considérerons que les constantes. Voici
la grammaire d’une expression arithmétique :
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éthode publique ayant le profil suivant : public
static EXPR parse(String source). Les autres méthodes seront aussi static, mais private.
Dans cette classe, un ensemble de méthodes (une par règle) doit permettre de décripter caractère
par caractère votre expression pour produire l’arbre syntaxique correspondant.
Remarque : Attention à la récurssivité gauche ! Par exemple, si vous prenez la grammaire tel quel, la régle EXPR commence par EXPR (récurssivité sans fin. . . ). En analysant
un peu mieux les régles, vous pouvez transformer la premier régle de la manière suivante :
EXPR → EXPR ’+’ EXPR MUL
devient
EXPR → EXPR MUL { ’+’ EXPR MUL }
Les { } indiquent une répétition de 0 à n fois.
2. Mettez en place les classes nécessaires pour réalisez le calcul de l’expression.
3. Finalisez votre programme de tel sorte que l’expression soit passé en paramètre lors de son exécution
(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éer un alias et de le
sauvagarder dans le fichier .bashrc ou autre fichier lancé lors de votre connexion :
alias jude=’java -jar /usr/local/jude/jude-community.jar’
Exercice
Reprendre l’énoncé des péages autoroutiers (TP1).
Construire le diagramme de classes correspondant.
Améliorer le modèle UML par rapport à la version programmée en Java afin de réduire les types de base
au strict minimum et d’introduire dès que possible de nouvelles classes.
Noter la meilleure lisibilité du profil de vos méthodes.
2
Téléchargement