TP_Commit_Question3

Programmation Avancée

Modérateur : douinj

guill_c98
Messages : 4
Inscription : 01 oct. 2020 22:42

TP_Commit_Question3

Message par guill_c98 » 28 nov. 2020 21:57

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

charp_n1
Messages : 33
Inscription : 07 oct. 2020 17:35

Re: TP_Commit_Question3

Message par charp_n1 » 28 nov. 2020 23:51

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

guill_c98
Messages : 4
Inscription : 01 oct. 2020 22:42

Re: TP_Commit_Question3

Message par guill_c98 » 29 nov. 2020 11:47

Bonjour,

Que je suis mauvais, je ne me souviens même plus du B-A-BA !

Je te remercie charp_n1 !

Bon dimanche,
Cyril

Répondre