Back

Manipulation 3

Pour cette séance il faut partir du code développé durant le tp1.

Visibilités

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

Réorganisation en packages

La première étape est de créer les packages suivants:

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.

Réponse

Voici les déclarations et import qu'il faut utiliser:

Pour compiler la commande est javac test/Tests.java. Pour lancer les tests, la commande est: java test.Tests.

Gestion des exceptions

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.

Création de l'exception

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.

Réponse
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;
	}
}

Modification du code de Axe

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?

Réponse

Le programme soulève une erreur d'exécution. Le message de l'exception passé au super constructeur de l'exception s'affiche.

Modification du code client

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

  1. de gérer l'exception (en affichant le message d'erreur, puis en créant dans ce cas un axe par défaut, et finalement en affichant l'axe)
  2. de relancer l'exception
Réponse

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);
	}
}