đ Exercices sur equals() en Java¶
Exercice 1 : Classe simple¶
Créez une classe Livre avec les attributs :
- String titre
- String auteur
đ ImplĂ©mentez la mĂ©thode equals() afin que deux livres soient
considĂ©rĂ©s Ă©gaux s'ils ont le mĂȘme titre et le mĂȘme auteur.
Testez avec plusieurs objets.
Exercice 2 : VĂ©rifier le contrat equals()¶
Dans la classe Livre précédente, testez ces propriétés du contrat
equals() :
- Réflexivité :
a.equals(a)doit ĂȘtre vrai. - SymĂ©trie : si
a.equals(b)est vrai, alorsb.equals(a)doit ĂȘtre vrai. - TransitivitĂ© : si
a.equals(b)etb.equals(c)sont vrais, alorsa.equals(c)doit ĂȘtre vrai. - Consistance : rĂ©pĂ©ter plusieurs fois
a.equals(b)doit toujours donner le mĂȘme rĂ©sultat. - Comparaison avec null :
a.equals(null)doit toujours ĂȘtrefalse.
Exercice 3 : Ignorer la casse¶
Modifiez la méthode equals() de Livre pour que la comparaison du
titre ignore la casse (equalsIgnoreCase).
đ Exemple : "1984" et "1984" ou "1984" et "1984"
(majuscule/minuscule) doivent ĂȘtre considĂ©rĂ©s Ă©gaux.
Exercice 4 : Ajout d'un champ¶
Ajoutez un champ int anneePublication dans Livre.
đ Modifiez equals() pour que deux livres soient Ă©gaux seulement si
titre, auteur et année sont identiques.
đ Testez avec des livres qui n'ont que l'annĂ©e diffĂ©rente.
Exercice 5 : Mauvaise implĂ©mentation¶
Créez une classe Personne avec :
- String nom
- String prenom
Implémentez equals() en ne comparant que le nom.
đ Testez avec deux personnes "Dupont Jean" et "Dupont Marie".
Discutez : est-ce correct ? Quels problĂšmes cela peut-il poser ?
Exercice 6 : Comparaison avec ==¶
Ăcrivez un programme qui crĂ©e deux objets Livre ayant les mĂȘmes
valeurs.
- Comparez-les avec
== - Comparez-les avec
equals()
đ Expliquez la diffĂ©rence entre Ă©galitĂ© de rĂ©fĂ©rence (==) et
égalité logique (equals()).
Exercice 7 : Utilisation dans un tableau¶
Créez un tableau de Livre contenant plusieurs objets.
đ Ăcrivez une mĂ©thode qui recherche si un livre donnĂ© est prĂ©sent dans
le tableau en utilisant equals().
đ Testez avec des livres identiques en contenu mais créés comme nouveaux objets.
Exercice 8 : Lien avec hashCode()¶
Reprenez votre classe Livre et implémentez equals() correctement.
đ Corrigez ensuite en ajoutant hashCode() et observez la diffĂ©rence.