programmation Java (école d'ingénieur) · Chapitre 8 · Application directe du cours
Un thermomètre encapsulé
Encapsulation, membres de classe et paquets · niveau 1 (application)
Énoncé
Écrire une classe Thermometre dont l'attribut privé temperature (en degrés Celsius) ne peut jamais descendre sous le zéro absolu, °C. Le constructeur et le modificateur setTemperature lèvent une IllegalArgumentException si on leur donne une valeur impossible. Écrire un programme qui fixe la température à , puis , puis tente en rattrapant l'exception avec
try {
th.setTemperature(-300);
} catch (IllegalArgumentException e) {
System.out.println("refusé : " + e.getMessage());
}
et vérifie que la température est restée à .
Corrigé
L'invariant est « temperature est supérieure ou égale au zéro absolu ». Le constructeur passe par le modificateur, ce qui évite d'écrire deux fois le contrôle.
class Thermometre {
public static final double ZERO_ABSOLU = -273.15;
private double temperature; // invariant : temperature >= ZERO_ABSOLU
Thermometre(double t) {
setTemperature(t); // le constructeur passe par le contrôle
}
public double getTemperature() { return temperature; }
public void setTemperature(double t) {
if (t < ZERO_ABSOLU) {
throw new IllegalArgumentException("sous le zéro absolu : " + t);
}
temperature = t;
}
}
public class Ex1Thermometre {
public static void main(String[] args) {
Thermometre th = new Thermometre(20);
th.setTemperature(-10);
System.out.println(th.getTemperature());
try {
th.setTemperature(-300);
} catch (IllegalArgumentException e) {
System.out.println("refusé : " + e.getMessage());
}
System.out.println(th.getTemperature());
}
}
-10.0
refusé : sous le zéro absolu : -300.0
-10.0
Le contrôle a lieu avant l'affectation : quand la valeur est refusée, l'attribut n'a pas été touché, et l'objet est resté dans un état valide. La constante ZERO_ABSOLU peut être publique : elle ne peut pas être modifiée.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.