Bonjour,
Je viens de passer la journée à faire mon Memento, Gardien TransactionDebit
Rien à faire je ne sais plus faire :(
lorsque je lance le test testDebitAvecTransaction()
j'ai mis des System.out.println partout alors ça donne :
cotisant sauve : <Contributeur : g_a,300>
<Contributeur : g_b,200>
<Contributeur : g_c,100>
l'entrée dans pile : <Contributeur : g_a,300>
<Contributeur : g_b,200>
<Contributeur : g_c,100>
sortie de la pile : <Contributeur : g_a,180>
<Contributeur : g_b,80>
<Contributeur : g_c,100>
cotisant revient : <Contributeur : g_a,180>
<Contributeur : g_b,80>
<Contributeur : g_c,100>
Dans ma classe Memento, j'ai mis :
public class Memento {
// Note : Un usage du patron Memento,
// d’un premier visiteur pour la sauvegarde et
// d’un second pour la restitution du composite,
// représentent une solution possible.
private Cotisant coti;
public Memento(Cotisant c) {
// sauvegarde
this.coti = c;
System.out.println("cotisant sauve : "+coti.toString());
}
public void setState(Cotisant c) {
// restitution
c = coti;
System.out.println("cotisant revient : "+coti.toString());
}
Rien n'y fait !! Je ne comprend pas que le memento qui rentre dans la pile est bon et lorsque le memento sort de pile il est erroné.
Quelqu'un peut-il m'expliquer mon erreur ?
Merci par avance
TP_Commit_Question3
Modérateur : douinj
Re: TP_Commit_Question3
Bonjour,
Dans ton constructeur de Memento, tu te contentes de mémoriser l'adresse du Cotisant dans ta variable coti, mais pas la structure de données qu'il contient : il n'y a toujours qu'un seul objet en mémoire (et deux variables qui pointent sur cet objet).
C'est pourquoi il est indiqué dans les commentaires du Memento qu'on peut utiliser des visiteurs : car il faut "cloner" l'objet, autrement dit recopier toute son arborescence dans un nouvel objet.
Bon courage
Dans ton constructeur de Memento, tu te contentes de mémoriser l'adresse du Cotisant dans ta variable coti, mais pas la structure de données qu'il contient : il n'y a toujours qu'un seul objet en mémoire (et deux variables qui pointent sur cet objet).
C'est pourquoi il est indiqué dans les commentaires du Memento qu'on peut utiliser des visiteurs : car il faut "cloner" l'objet, autrement dit recopier toute son arborescence dans un nouvel objet.
Bon courage
Re: TP_Commit_Question3
Bonjour,
Que je suis mauvais, je ne me souviens même plus du B-A-BA !
Je te remercie charp_n1 !
Bon dimanche,
Cyril
Que je suis mauvais, je ne me souviens même plus du B-A-BA !
Je te remercie charp_n1 !
Bon dimanche,
Cyril