programmation Java (école d'ingénieur) · Chapitre 11 · Application directe du cours
Une température impossible
Exceptions · niveau 2
Énoncé
Écrire une classe Temperature, stockée en kelvins, dont l'invariant est « la température est positive ou nulle ». On la crée par une méthode statique depuisCelsius(double c), qui lève une exception vérifiée TemperatureInvalideException (à écrire) si la température est sous le zéro absolu ( °C). Convertir , et °C en kelvins en traitant l'erreur.
Corrigé
Le constructeur est privé : la seule façon de créer une température passe par depuisCelsius, qui vérifie l'invariant avant de créer l'objet.
class TemperatureInvalideException extends Exception {
TemperatureInvalideException(String message) { super(message); }
}
class Temperature {
private final double kelvin; // invariant : kelvin >= 0
private Temperature(double kelvin) { this.kelvin = kelvin; }
static Temperature depuisCelsius(double c) throws TemperatureInvalideException {
double k = c + 273.15;
if (k < 0)
throw new TemperatureInvalideException(c + " °C est sous le zéro absolu");
return new Temperature(k);
}
double kelvin() { return kelvin; }
}
double[] celsius = { 20, -300, 100 };
for (double c : celsius) {
try {
Temperature t = Temperature.depuisCelsius(c);
System.out.printf("%.1f °C = %.2f K%n", c, t.kelvin());
} catch (TemperatureInvalideException e) {
System.out.println("Refusé : " + e.getMessage());
}
}
20.0 °C = 293.15 K
Refusé : -300.0 °C est sous le zéro absolu
100.0 °C = 373.15 K
L'erreur sur °C n'empêche pas de traiter °C : le try est à l'intérieur de la boucle.
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 tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.