Tp5 question1 Difference de deux collections

Programmation Avancée

Modérateur : Douin

GANKAMA
Messages : 34
Inscription : 26 oct. 2017 16:51

Tp5 question1 Difference de deux collections

Message par GANKAMA » 14 nov. 2017 20:12

Bonjour,
J'ai un soucis au niveau du résultat de la différence de deux collections.Voici mon code:

public Ensemble<T> diff(Ensemble<? extends T> e) {
// à compléter pour la question1-2

Ensemble<T> ensemble=this;
ensemble.removeAll(e);

return ensemble;
}

Il me renvoi une collection au lieu de au lieu d'une collection contenant 2.(ensemble1={2,3,4} ensemble2={3,4,5})

Cordialement

manuel.lb
Messages : 24
Inscription : 29 oct. 2017 16:59

Re: Tp5 question1 Difference de deux collections

Message par manuel.lb » 14 nov. 2017 21:23

Je ne vois pas pourquoi elle ne renvoie pas { 2 }. Peut-être un problème d'appel ?
Attention, comme déjà dit sur le forum et dans l'énoncé de la question :
Attention chaque opération retourne un nouvel ensemble, comme le suggère cette signature de la méthode "union"

GANKAMA
Messages : 34
Inscription : 26 oct. 2017 16:51

Re: Tp5 question1 Difference de deux collections

Message par GANKAMA » 14 nov. 2017 21:57

Bonsoir,

Le test me renvoi belle et bien 2,mais par contre mon test sur la différence symétrique ne marche pas, j'obtiens une collection vide.voici mon code:
Ensemble<T> diffSym(Ensemble<? extends T> e) {
// à compléter pour la question1-2:((e union e1) - (e inter e1))
Ensemble<T> ensemble1=this;
Ensemble<T> ensemble3=ensemble1.union(e);

Ensemble<T> ensemble2=this;
Ensemble<T> ensemble4=ensemble2.inter(e);


Ensemble<T> ensemble5=ensemble3.diff(ensemble4);

return ensemble4;
}

Cordialement

manuel.lb
Messages : 24
Inscription : 29 oct. 2017 16:59

Re: Tp5 question1 Difference de deux collections

Message par manuel.lb » 14 nov. 2017 22:11

Je vois que tu retournes ensemble4, c'est volontaire ?

Sinon, tu es sûr que tes fonctions union et inter renvient bien de nouveaux ensembles (c'est à dire ne modifient pas leur propre collection) ?

GANKAMA
Messages : 34
Inscription : 26 oct. 2017 16:51

Re: Tp5 question1 Difference de deux collections

Message par GANKAMA » 15 nov. 2017 19:05

Bonsoir,
Merci pour ta reponse.
c'est plutôt retrun ensemble5; que je voulais mettre.
Effectivement
Ensemble<T> ensemble3=ensemble1.union(e); et

Ensemble<T> ensemble4=ensemble2.inter(e);

Modifie ensemble3 et ensemble4

Pouvez me donner une piste pour resoudre ce problème.

Merci

manuel.lb
Messages : 24
Inscription : 29 oct. 2017 16:59

Re: Tp5 question1 Difference de deux collections

Message par manuel.lb » 15 nov. 2017 19:31

Ensemble<T> ensemble3=ensemble1.union(e); et
Ensemble<T> ensemble4=ensemble2.inter(e);
Modifie ensemble3 et ensemble4
Tu veux sûrement dire "modifie ensemble1 et ensemble2" ? Sinon je ne comprends pas la question.

Est-ce qu'il y a bien un nouvel ensemble (new Ensemble<T>) dans chacune des méthodes union et inter ?
Dans le code cité plus haut ( diffSym), je voyais en début de code

Code : Tout sélectionner

Ensemble<T> ensemble1=this;
Avec cette erreur d'inattention (référence au lieu de copie), si ensuite dans une autre fonction on fait un

Code : Tout sélectionner

ensembleX = ensemble1.diffSym(e);
, il est logique dans ce cas que ensemble1 soit modifié.

GANKAMA
Messages : 34
Inscription : 26 oct. 2017 16:51

Re: Tp5 question1 Difference de deux collections

Message par GANKAMA » 15 nov. 2017 19:54

Voici le code de la fonction union:

public Ensemble<T> union(Ensemble<? extends T> e) {
// à compléter pour la question1-2

Ensemble<T> ensemble=new Ensemble<T>();
ensemble=this;
ensemble.addAll(e);
return ensemble;
}

est ce qu'il faut que j'utilise la methode clone() sur la collection courante?

Merci

manuel.lb
Messages : 24
Inscription : 29 oct. 2017 16:59

Re: Tp5 question1 Difference de deux collections

Message par manuel.lb » 15 nov. 2017 20:29

Clone(), c'est exactement l'idée, mais on ne veut pas l'utiliser, et puis je ne peux pas te dire s'il est prêt à fonctionner tout de suite.
Il y a une grosse erreur ici :

Code : Tout sélectionner

Ensemble<T> ensemble=new Ensemble<T>();
ensemble=this;
Le nouvel ensemble est perdu dès la 2è ligne.
Vue l'erreur, il faut revoir le cours 2 sur les objets et les références : qu'est-ce qu'on entend par un nouvel objet et ce que sont les références à cet objet, et ce que signifie "this".

La démarche souhaitée est de :
  • créer un nouvel ensemble,
  • y ajouter les éléments de l'ensemble courant
  • puis les éléments de l'ensemble fourni en paramètre

GANKAMA
Messages : 34
Inscription : 26 oct. 2017 16:51

Re: Tp5 question1 Difference de deux collections

Message par GANKAMA » 18 nov. 2017 11:47

Merci pour ta réponse,qui m'a bien aidé.

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité