Approche Objet - TD3 : Valeurs observables
-
Valeurs
On considère l'interface Valeurs et son
implémentation par défaut ValeursImpl.
- Modifier
ValeursImpl
pour que l'on puisse
remplacer les instructions :
double[] td = {1., 2., 3.};
Valeurs v = new ValeursImpl(td);
par
Valeurs v = new ValeursImpl(1., 2., 3.);
Montrer que dans la classe ValeursImpl
,
il est possible de modifier le résultat retourné par la
méthode valeur(int i)
sans utiliser changerValeur(int
i, double v)
et donc sans que la variable somme
soit mise à jour.
Corriger ce défaut d’encapsulation.
- Modifier le constructeur
ValeursImpl(double[]
valeurs)
pour qu’il lève une exception ValeurNegativeException
si une des valeurs passées dans le tableau valeurs
est négative.
Donner le code de la classe ValeurNegativeException
.
On souhaite également qu’il soit impossible de passer une
valeur négative à la méthode changerValeur(int i,
double v)
. Ecrire les modifications à apporter.
-
On souhaite rendre une instance de
Valeurs
observable.
- Ecrire une classe
ValeursObservables
qui rend
une instance de Valeurs
observable. La classe ValeursObservables
devra donc étendre la classe java.util.Observable
et implémenter l’interface Valeurs
en utilisant
une instance de Valeurs
déjà existante.
- Créer une classe ValeursObservateur qui implémente
l'interface
java.util.Observer
et qui affiche
sur la sortie standard toute modification de l'instance de Valeurs
qu'elle observe.
-
Ecrire une classe de tests utilisant JUnit4 pour la classe
ValeursImpl
.