TP3 q2_5

Programmation Avancée

Modérateur : douinj

guill_f58
Messages : 27
Inscription : 10 oct. 2020 19:42

TP3 q2_5

Message par guill_f58 » 21 oct. 2020 16:24

Bonjour, depuis la dernière fois j'ai réussi à avancer dans le TP3 mais je me retrouve de nouveau embêté avec la question 2_5.
De ce que je comprends, il faut utiliser le code fourni (ci-dessous) pour faire fonctionner la class de test (ce qui marche):

Code : Tout sélectionner

   
   public boolean equals(Object o) {
    if (o instanceof PileI) {
      PileI p = (PileI) o;
      return this.capacite() == p.capacite()
          && this.hashCode() == p.hashCode();
    } else
      return false;
  } 
  
Par contre, j'ai un échec quand je propose mon travail. Le programme, vu qu'il travail avec un toString(), il ne sait pas si un élément était du type d'un nombre ou d'un String. Sauf que je bloque un peu à partir de là...

De ce que je comprends, il me faut 4 equals identiques qui ont comme base le code d'en haut, et qu'ils prennent en compte le problème des nombres/string.

Mais les 4 piles fonctionnent de 4 manières différentes: 4 manières différentes de parcourir les piles

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

Re: TP3 q2_5

Message par douinj » 21 oct. 2020 16:40

Bonjour,

J'ai dû raté quelque chose, où avez eu cette implémentation qui est incorrecte

this.hashCode() == p.hashCode(); on ne peut induire que les piles sont égales

par contre si les piles sont égales alors leur hashCode doit l'être

à suivre

guill_f58
Messages : 27
Inscription : 10 oct. 2020 19:42

Re: TP3 q2_5

Message par guill_f58 » 21 oct. 2020 18:25

douinj a écrit :
21 oct. 2020 16:40
Bonjour,

J'ai dû raté quelque chose, où avez eu cette implémentation qui est incorrecte

this.hashCode() == p.hashCode(); on ne peut induire que les piles sont égales

par contre si les piles sont égales alors leur hashCode doit l'être

à suivre
Bonjour, j'ai mieux compris l'exercice. J'ai refais mes 4 equals et cela marche maintenant.
Sauf que j'ai un nouveau souci... est-ce-que cela peut venir du fait que j'utilise pas la dernière version du TP3 ?

Mais une erreur (exception pour junit) subsiste, vérifiez à nouveau votre réponse, si cette erreur persiste, envoyez-nous le source incriminé, merci ... 1) test_equals_capacite_differente(question2)java.lang.ClassCastException: class question2.Pile cannot be cast to class question2.Pile2 (question2.Pile and question2.Pile2 are in unnamed module of loader ''app'')

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

Re: TP3 q2_5

Message par douinj » 22 oct. 2020 9:55

bonjour,

vous avez la réponse, class question2.Pile cannot be cast to class question2.Pile2 revoyez votre code ou le test

à suivre...

guill_f58
Messages : 27
Inscription : 10 oct. 2020 19:42

Re: TP3 q2_5

Message par guill_f58 » 22 oct. 2020 10:56

douinj a écrit :
22 oct. 2020 9:55
bonjour,

vous avez la réponse, class question2.Pile cannot be cast to class question2.Pile2 revoyez votre code ou le test

à suivre...
Bonjour,

le code de la class junit "Uniquement pour la question 2_5" n'a pas vocation à fonctionner au moment ou je fais un submit ? elle est la uniquement pour tester la fonction equals:

Code : Tout sélectionner

   public boolean equals(Object o) {
    if (o instanceof PileI) {
      PileI p = (PileI) o;
      return this.capacite() == p.capacite()
          && this.hashCode() == p.hashCode();
    } else
      return false;
  } 
je ne suis pas non plus supposer pouvoir faire un equals entre des objets de type différent ?

Code : Tout sélectionner

pile p = new Pile();
pile2 p2 = new Pile2();
p.equals(p2) //false car objet différent
Je ne comprends pas vraiment le message d'erreur. Il n'y a pas de test_equals_capacite_differente dans mon code. Et je n'ai pas de cast de pile en pile2 car je traite uniquement des Pile avec des Pile, des Pile2 avec des Pile2 etc...
Tout les tests fonctionnent sauf le 2_5 ce qui est normal je pense.

guill_f58
Messages : 27
Inscription : 10 oct. 2020 19:42

Re: TP3 q2_5

Message par guill_f58 » 22 oct. 2020 11:31

Problème résolu. j'avais des instanceOf pas bons dans mon equals.

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

Re: TP3 q2_5

Message par douinj » 22 oct. 2020 12:18

je ne suis pas non plus supposer pouvoir faire un equals entre des objets de type différent ?
Bonjour,

Par défaut non, en l'état pour ce tp, mais je vous proposerai une solution pour le faire à l'aide du patron TemplateMethod

Bon fin d'equals

Répondre