Question TP3 methode Pile.equals()

Programmation Avancée

Modérateur : douinj

gisclo_r
Messages : 11
Inscription : 08 oct. 2019 22:31

Question TP3 methode Pile.equals()

Message par gisclo_r » 17 oct. 2019 21:46

Bonjour.

J'avoue avoir du mal avec l’implémentation de la méthode equals.

J'ai compris que comparer les hashCode() n’était pas la bonne solution car, comme dit dans le cours, deux objects égaux on le même hashcode mais la réciproque n'est pas vrai.

Comparer les deux toString() des piles posent aussi problème (mais je ne dirais pas pourquoi, c'est plutôt fun de le découvrir par soit même).

Cependant si je mélange ces deux techniques le résultat est-il fiable?
Ou les probabilités d'avoir deux listes non similaires avec le même hashcode et le même toString est trop grande pour être négligé (ou simplement ce n'est pas le but de l’exercice)

Car sinon je ne vois que comparer les éléments des deux listes un a un et cela me semble un peu trop "bourrin".

Merci d'avance a tout personne qui a une idée

sadouk_h
Messages : 7
Inscription : 26 sept. 2019 23:54

Re: Question TP3 methode Pile.equals()

Message par sadouk_h » 17 oct. 2019 22:18

bonsoir gisclo ,
le but du TP est d'implémenter le patron "adapter" càd on doit utiliser ce que les classes adaptées ont déjà fait ( au moins c'est ce que j'ai compris ) alors à la place de réinventer la roue il faut juste chercher le mécanisme existant dans Array/ Stack /Vector qui sert à comparer deux instances de chacune de ces classes . j'espère que je suis assez clair et si jamais ce que j'ai dit ne fait pas trop de sens ou bien contient qlq chose qui est faux la discussion est ouverte , et je te souhaite une bonne soirée .

douinj
Messages : 96
Inscription : 18 mars 2009 15:46

Re: Question TP3 methode Pile.equals()

Message par douinj » 18 oct. 2019 8:35

Bonjour,

Comme l'écrit M. Saddouk, il doit bien y avoir une méthode equals dans les classes prédéfinies Stack, Vector... Il vous reste à vérifier :
La redéfinition des méthodes equals() et hashcode() doit respecter quelques contraintes qui sont précisées dans la documentation de la classe Object :
Symétrie : pour deux références a et b, si a.equals(b) alors il faut obligatoirement que b.equals(a)
Réflexivité : pour toute référence non null, a.equals(a) doit toujours renvoyer true
Transitivité : si a.equals(b) et b.equals(c) alors a.equals(c)
Consistance avec la méthode hashCode() : si deux objets sont égaux en invoquant la méthode equals() alors leur méthode hashCode() doit renvoyer la même valeur pour les deux objets
Pour toute référence non null, a.equals(null) doit toujours renvoyer false
Extrait de

Il vous reste l'implémentation en liste chainée, vous avez à la fin du support 2 une implémentation d'une file diapositive 108, et là encore regardez si il n'est pas possible de convertir cette liste chainée en "ArrayList" afin de déléguer l'égalité

Bonne fin de tp3

chauv_gi
Messages : 6
Inscription : 10 oct. 2019 16:24

Re: Question TP3 methode Pile.equals()

Message par chauv_gi » 20 oct. 2019 17:55

Bonjour Tout Le Monde,

Je viens de finir la partie Equals du TP3 et j'ai passé les tests de JNEWS qui semblent bons. Au début j'avais utilisé la technique de comparaison des "toString" mais vu la question dessus, effectivement ce n'était pas la bonne méthode.

Je pense qu'hélas, la comparaison des éléments de la Pile, un à un, soit la seule solution....

Par contre, je n'ai pas l'impression d'avoir utilisé le patron "Adapter" ou alors je n'en ai pas compris la finalité ....

Répondre