Le Jeudi 9 Janvier 2003 17:30, Sebastien Cesbron a �crit : > > Je croyais que l'interface appartenait � la couche m�tier ! >
L� dessus j'avoue ne pas savoir o� il doit se trouver exactement :-( Moi j'ai tendance � le mettre dans la couche pr�sentation, parce que j'ai bien du mal � me persuader qu'une couche m�tier puisse �tre totalement ind�pandante d'une couche pr�sentation. Mais bon je veux pas d�marrer un troll sur le sujet ! > [...] > En fait je r�fl�chi en m�me temps sur le mapping. J'ai pris comme > pr�-requis que ma couche de mapping va travailler sur mes objets m�tier. > A ce propos je pose une autre question : est ce que ce postulat est > selon vous correct ? > Je ne comprends pas. C'est le mapping de quoi ? > Je me place dans le cas o� j'ai un objet A (un compte) qui a un lien > vers * instances d'un objet B (une op�ration). > Je peux avoir une ihm de visualisation du compte et de ses op�rations. > Dans ce cas ma couche pr�sentation r�cup�re un compte auquel est associ� > des op�rations. > > Si je fais un clone, il faut que je clone aussi mes op�rations. De plus > dans le cas o� mon mapping fait du lazy instanciation que se passe t'il > si mes op�rations ne sont pas instanci�es au moment du clone. > Mais comment veux-tu faire un clone d'un objet qui n'est pas instanci� ? Le postulat de d�part, c'est que pour faire un clone il y a un objet. Pas d'objet, pas de clone. Pour s'en sortir, il y a un truc qui est apparemment un peu compliqu� mais qui finalement permet de mieux appr�hender des situations d�licates. C'est que l'interface pr�sentation n'est pas qu'un simple transmetteur pour empecher de mauvais programmeurs de perturber la couche m�tier. L'interface pr�sentation a vraiment un r�le d'adaptation � jouer. Le plus �vident (pas forc�ment le meilleur) est de transformer les objets en cha�nes de caract�res, puisque il est bien �vident que pour afficher le contenu d'un objet, il faut le transformer en cha�ne de caract�res. Donc, pour afficher tes comptes et tes op�rations, tu seras � un moment ou � un autre oblig� de les transformer en cha�ne de caract�res. Dans le sch�ma [ objet m�tier -> clone "interface" -> transformation en chaine pour affichage ], la transformation a lieu tr�s tard, et tu es donc oblig� de te trimballer des imp�ratifs m�tiers pratiquement jusqu'au milieu de l'IHM. Tu as bien isol� la couche m�tier de l'ihm, mais cette derni�re est compl�tement pollu�e par des consid�rations m�tiers ! Par contre, si tu es plus soft, et que tu te poses d�s le niveau de l'interface une question du genre "Grosso modo, de quoi aura besoin mon IHM dans 75 % des cas, que je le fasse d�s l'interfa�age ? ", cela te conduit � ne plus faire de clone brutaux, � cr�er de v�ritables objets interfaces (m�me si vu du dehors ce ne sont que des interfaces ! ) (et qu'ils ont fait une sorte de clone), et � v�ritablement isoler m�tier et ihm, et non plus seulement m�tier. Tu as un sch�ma style [ objet m�tier -> interface aproximativement adapt�e -> affichage ] . C'est notamment au niveau de cette interface adaptative que tu te poseras la question de r�soudre les lazy instanciations. Et tr�s souvent le clone est fait de fait. Mais n'est plus un clone stricto-sensu. Pour continuer l'exemple idiot d'un compte qui contient une propri�t� de type int qui est le num�ro de compte, que tu consid�res que dans 75% des cas la couche pr�sentation � besoin de ce num�ro sous une forme cha�ne de caract�res, tu seras conduit � mettre dans ton interface une m�thode style "String getNumeroCompte()", qui transformera le int en String, r�alisant de fait un clonage. C'est � partir de la r�ponse � la question "De quoi � besoin EN GENERAL mon IHM" que tu dois r�soudre la mise en oeuvre des clonages, et non pas � partir de consid�rations propres � la m�canique informatique de la couche m�tier, ce qui est une erreur totale. (les lazys instanciations n'ont rien � voir que je sache avec un quelconque m�tier ! ) C'est pour cela que j'ai tendance � mettre cette interface dans la couche "pr�sentation", mais je me trompe peut �tre compl�tement. Et si cela peut te rassurer, j'observe que je place souvent la mise en oeuvre de cette interface dans la couche m�tier. Donc, finalement, je suis cens� avoir bon � tous les coups :-) A+. -- SARL diaam informatique - 04 50 77 12 60 Ingenierie, d�veloppements de syst�mes d'information http://www.diaam-informatique.com
