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.