11 - Comparaison
Introduction
Dans le cours IFT 1810, on introduit à la programmation orientée objet (POO) utilisant le langage JAVA sans aller dans les détails.
En Java on peut créer des objets, on a parfois besoin de les comparer.
En reprenant l’exemple des cercles, comment savoir si deux cercles sont égaux?
La comparaison suivante :
if(c3 == c4)
System.out.println("c3 et c4 égaux");Est vraie si c3 et c4 font référence à la même adresse en mémoire.
Objet Cercle
C3
C4
Ceci fonctionne uniquement si on crée les cercles de cette façon :
Cercle c4 = new Cercle();
Cercle c5 = c4;Mais dans ce cas, l’instruction suivante modifiera c4 ET c5 :
c4.setRayon(43);Pour comparer deux objets, on utilise généralement une méthode equals dans laquelle on spécifie comment comparer les objets, qu’est-ce qui fait que deux cercles ou deux portes sont égaux.
Dans la classe cercle, on pourra donc ajouter :
public boolean equals(Cercle c) {
return c.getRayon() == this.donnees[0];
}Cette fonction renvoie True si les deux cercles ont le même rayon.
On pourra donc l’utiliser de la façon suivante :
if(c3.equals(c4))
System.out.println("c3 et c4 égaux");Il existe d’autres méthodes de comparaison des objets telle que l’interface Comparator qui implique des notions avancées de programmation orientée objet comme l’héritage.