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.