programmation Java (école d'ingénieur) · Chapitre 8 · Application directe du cours
Un record qui se défend
Encapsulation, membres de classe et paquets · niveau 2
Énoncé
Écrire un record Etudiant(String nom, double moyenne) qui refuse un nom vide et une moyenne hors de , grâce à un constructeur compact, et possède une méthode estRecu(). Vérifier que deux records de mêmes valeurs sont égaux au sens de equals, et que la création de new Etudiant("Bilal", 21) est refusée.
Corrigé
Le constructeur compact n'a pas de liste de paramètres : il voit les paramètres nom et moyenne, et les attributs sont affectés automatiquement après lui, si aucune exception n'a été levée.
record Etudiant(String nom, double moyenne) {
Etudiant { // constructeur compact : contrôle des données
if (nom == null || nom.isBlank()) {
throw new IllegalArgumentException("nom vide");
}
if (moyenne < 0 || moyenne > 20) {
throw new IllegalArgumentException("moyenne hors de [0, 20] : " + moyenne);
}
}
boolean estRecu() { return moyenne >= 10; }
}
public class Ex9Record {
public static void main(String[] args) {
Etudiant e = new Etudiant("Alice", 14.5);
System.out.println(e + ", reçue : " + e.estRecu());
System.out.println(e.equals(new Etudiant("Alice", 14.5)));
try {
new Etudiant("Bilal", 21);
} catch (IllegalArgumentException ex) {
System.out.println("refusé : " + ex.getMessage());
}
}
}
Etudiant[nom=Alice, moyenne=14.5], reçue : true
true
refusé : moyenne hors de [0, 20] : 21.0
Le test nom == null vient en premier : si nom vaut null, l'opérateur || n'évalue pas nom.isBlank(), qui provoquerait une NullPointerException.
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.