commit q3

Programmation Avancée

Modérateur : Douin

RENAUD
Messages : 72
Inscription : 21 sept. 2018 19:34

commit q3

Message par RENAUD » 29 nov. 2018 18:58

Bonsoir

Je vais éviter d'être trop pessimiste.

J'ai cherché sur le forum et lu ce topic http://deptmedia.cnam.fr/phpBB2/viewtop ... 309#p36986
Mais ça m'aide pas beaucoup je ne vois pas ici l’intérêt de visiteur. Je finis même par me demander comment fonctionne le pattern Visitor déjà que j'ai du mal avec ce pattern.

Mais même je ne vois pas a part appeler la class VisiteurToString du package de la question 1 ou faire question2.CompositeValide() par ex mais sinon je ne sais pas utiliser de visiteur comme ça sans implémenter Visiteur dans la classe Memento!
Alors encore moins ici y trouver une utilité pour déjà sauver l'état. Mais surtout ça change quoi, Cotisant est abstract donc je ne vois pas faire grand chose a part faire state=c;

Tout est abstract pour moi !
ps : je sais qu'il n'y a pas de question je cherche juste une indication, un indice, une nouvelle idée, quelque chose quand je suis totalement perdu!

a.tortevois
Messages : 58
Inscription : 05 oct. 2018 16:00
Contact :

Re: commit q3

Message par a.tortevois » 29 nov. 2018 19:47

Ta class TransactionDebit, fait appel à Memento
Memento va sauvegarder la transaction et restituer les soldes en cas d'échec.
Il faut écrire le VisiteurSauvegarde et le VisiteurRestitution ... dont les codes ne sont pas très éloignés des visiteurs de la q2 ;)

rousset
Messages : 35
Inscription : 30 sept. 2018 9:23

Re: commit q3

Message par rousset » 30 nov. 2018 1:00

RENAUD a écrit :
29 nov. 2018 18:58
Tout est abstract pour moi !
ps : je sais qu'il n'y a pas de question je cherche juste une indication, un indice, une nouvelle idée, quelque chose quand je suis totalement perdu!
Ah y a de quoi se "torturer" l'esprit ;)
Bah si vraiment tu bloques sur Visiteur, peut être reprends (à partir d'un projet vide depuis un Eclipse), le "composite interpreter" (Expression, Nombre, Variable, Binaire, Addition, Contexte et Mémoire.., sans les autres par exemple.., avec une classe de test) puis transforme le en "composite visiteur".., ?
Je crois que ton message c'est le prolongement de ton autre message viewtopic.php?f=40&t=15603&sid=f5fa6700 ... 4a226259cf
Alors je crois qu'il y a différentes manières de résoudre l'exercice, et j'espère ne pas te dire trop d'aneries. En gros je crois que soit on "clone, on fait des copies" des contributeurs et Groupes. Soit on ne va garder en "mémento" que les références aux objets et leurs valeurs, pour ensuite recharger.
Y a bien un lien avec ce que suggère l'enseignant dans le sujet que tu as repéré deptmedia.cnam.fr/phpBB3/viewtopic.php? ... 75ba6330ad. Il propose que la classe Memento définisse une classe Map<Cotisant,Integer> (donc on est dans l'optique de garder en mémoire que des références d'objets, et leurs valeur à un instant donné).
On a vu passer dans le support de cours la proposition d'un code "clone visitor" (quelque chose de ce goût là) entre autre.., je crois qu'on ne s'attarde pas trop sur "clone" parce qu'on va voir avec le cours d'injection and co, qu'on peut le faire autrement ?

Quel que soit le choix fait ("cloner ou recharger") il va être nécessaire qu'on parcourt les éléments.
Ca donne que pour sauvegarder le memento en fait tu fais ton parcours, et tu stockes dans la Map les éléments : en clef on attend un Cotisant (la Map va les gérer en utilisant leur hashcode, c'est transparent pour nous, l'objet sert de pointeur vers lui même), et en valeur c'est le solde. Tu remarqueras que le solde d'un groupe se détermine dynamiquement à partir des soldes de ses contributeurs, donc tu ne le stocke pas dans la Map.
Tu es donc amené à "visiter / parcourir" tes éléments, avec un premier visiteur, pour la sauvegarde.

Pour la recharge, bah si j'ai réussit à être explicite ça devrait te venir, tu auras un visiteur qui parcourt tes éléments, et qui fait la correspondance avec la map pour actualiser le solde.
Nicolas

RENAUD
Messages : 72
Inscription : 21 sept. 2018 19:34

Re: commit q3

Message par RENAUD » 30 nov. 2018 1:57

Je suis peut-être fatigué mais j'ai essayé plein de version de visiteur, pour sauvegarde et restitution, mais pour que ça change quelque chose.
Désolé j'ai le même effet avec ou sans visiteur.

C'est déprimant. Je commence à penser à abandonner ce tp et le reste...je crois que l'informatique et moi ça fait 4!

rousset
Messages : 35
Inscription : 30 sept. 2018 9:23

Re: commit q3

Message par rousset » 30 nov. 2018 9:38

Te prends pas la tête Renaud, si tu as d'autres UE, mets celle-ci de côté 24-48h par exemple, essaies de te détendre.
Fais un copié/collé de ta classe Memento là, je regarderai dans la journée.

Tu sais si tu valides la licence d'informatique générale, y a d'autres matières sur lesquelles mettre l'accent : si ton objectif c'est plus le réseau alors c'est pas indispensable de tout piger à ce qu'on fait là par exemple. D'autre part, même si les résultats à JNEws ne sont pas là, il reste que le plus important ce sera de comprendre. Et puis on fait que conceptualiser, formaliser, des techniques que tu ferais peut être toi même naturellement, sauf que là on t'impose tout.
Y a de tous les niveaux dans toutes les professions, t'inquiètes pas y a de place même en informatique.
Je serai au taff aujourd'hui, j'essaierai de répondre dans la journée si je percute sans avoir "mon" code sous la main.
Gardes la pêche, lâches rien.
Nicolas

RENAUD
Messages : 72
Inscription : 21 sept. 2018 19:34

Re: commit q3

Message par RENAUD » 30 nov. 2018 15:20

J'en sais rien du tout !
Pour moi setState est void et cotisant passé est abstract ne serait modifiable que localement, avec ou sans visiteur map ou pas map.
je peux mettre n'importe quoi avant ! Dans rollback rien ne se passe après gardien.getMemento().setState(cotisant); :
cotisant reste inchangé <GroupeDeContributeurs : g,360>

rousset
Messages : 35
Inscription : 30 sept. 2018 9:23

Re: commit q3

Message par rousset » 30 nov. 2018 18:39

Fais un copié/collé de ta classe, même en message privé si tu veux, pas de soucis.
Si rien ne se passe au RollBack c'est ta méthode de restitution du memento qui ne fonctionne pas.

Pour ma part là c'est pause, je "récite" les patrons sur Eclipse et sur papier (je crois que le patron Command a été fait en TP et évoqué dans support de cours, sans ED dessus, faut que je le fasse, je sais pas si tu l'as en tête) et j'enchaine le TP7.
T'inquiètes pas que si c'est un satellite qui part dans une mauvaise trajectoire on en entendra parler, mais si c'est un logiciel métier de la fonction publique et assimilés, 3 fois rien en actualité. Ca va le faire, "t'inquiètes" !

Bien cordialement
Nicolas

Douin
Messages : 366
Inscription : 18 mars 2009 15:46

Re: commit q3

Message par Douin » 30 nov. 2018 19:39

Bonsoir,

Vous pouvez vous inspirer du squelette fourni

class Memento
Map<Nom,Solde>
classe VisiteurDeSauvegarde

classe VisiteurDeRestitution

Bonne soirée

RENAUD
Messages : 72
Inscription : 21 sept. 2018 19:34

Re: commit q3

Message par RENAUD » 04 déc. 2018 18:48

Bonsoir
Je commence enfin à comprendre ce que je fais... vaut mieux tard que jamais !
Je remercie tous ceux qui m'ont aidé à tous niveaux.

Par contre je suis à fond dessus pour pouvoir le rendre dans les délais.
Donc message à mr douin si il est de passage sur le forum avant la webconf de ce soir.

Il y a l'enregistrement mais rien ne vaut le live mais je pensais faire l'impasse pour me consacrer entièrement à ce tp et au rapport.
Est ce qu'on continue ce soir de voir Introspection ou c'est entièrement Injection ?
Dans les deux cas, à votre avis, est ce plus important que de rendre plus "sereinement" un TP ?

Merci

Répondre

Qui est en ligne ?

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