Pour cette séance il faut partir du code développé durant le tp1.
Pour chaque classe, méthode et attributs du tp1 déterminer quelles sont les visibilités envisageables. Effectuer les modifications adéquates sur le code du tp1. Noter que pour les attributs seules les visibilités private et protected vous sont autorisées. Le corrigé de cette manipulation est disponible ici
La première étape est de créer les packages suivants:
repere
dans lequel vous placerez les classes Axe
, Couleur
, ElementRepere
, EnsembleElementRepere
, ElementAvecNom
formes
, situé dans le package repere
dans lequel vous placerez les classes Segment
et Point
test
dans lequel vous placerez la classe Tests
Bien entendu il faut ajouter les déclarations de packages ainsi que les imports nécessaires au sein des classes. Il faut aussi trouver la commande qui permet de compiler le projet et arriver à lancer le programme Tests
.
Voici les déclarations et import qu'il faut utiliser:
repere
la déclaration est package repere
et aucun import est nécessaireformes
la déclaration est package repere.formes
et il faut utiliser l'import import repere.*
test
la déclaration est package test
et il faut utiliser les imports import repere.*
et import repere.formes.*
Pour compiler la commande est javac test/Tests.java
. Pour lancer les tests, la commande est: java test.Tests
.
Nous allons rajouter des exceptions à notre programme. Nous allons vérifier que personne ne puisse créer un axe avec une taille négative. Pour cela nous allons donc créer une exception TailleInvalide
qui doit être déclanchée par toutes les méthodes qui peuvent changer la taille.
Nous allons tout d'abord rendre optionnelle la gestion de l'exception en déclarant notre exception sous classe de RuntimeException
. En outre l'exception doit pouvoir retenir la taille éronnée demandée par l'utilisateur, et comporter un message qui explique l'erreur de manière intuitive. Commencez par définir cette exception.
public class TailleInvalide extends RuntimeException {
private int mauvaiseTaille;
public TailleInvalide(int mauvaiseTaille) {
super("La taille de l'axe ne peut être négative. Taille fournie: " + mauvaiseTaille);
this.mauvaiseTaille = mauvaiseTaille;
}
}
Modifiez maintenant le code du tp 1 pour que toutes les méthodes qui peuvent changer la taille d'un axe lancent l'exception en cas de taille éronée. Faîtes une nouvelle classe de test dans le package test qui crée un axe avec une taille négative. Lancez le programme. Que se passe t'il?
Le programme soulève une erreur d'exécution. Le message de l'exception passé au super constructeur de l'exception s'affiche.
Modifiez votre exception pour que maintenant TailleInvalide
soit sous-classe de Exception
. Maintenant créez deux classes de test qui crée un axe invalide et qui permettent
Version qui gère l'exception :
public class TestGestionException {
public static void main(String[] args) {
Axe x;
try {
x = new Axe(-2);
} catch (TailleInvalide e) {
System.out.println(e);
x = new Axe();
} finally {
System.out.println(x.description());
}
}
}
Version qui propage l'exception :
public class TestGestionException {
public static void main(String[] args) throws TailleInvalide {
Axe x = new Axe(-2);
}
}
Personal website by Jean-Rémy Falleri is licensed under CC BY-NC-SA 4.0