Adloun

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

Exercice suivant et tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →