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


Répondre à