En tout cas, c'est comme ça que je fais généralement. :mrgreen:
Version imprimable
Bon ben c'est trop cool alors Pseudocode, :mrgreen:,
ça me rassure un peu.
Mais t'es sûr que ma ligne:
modeleUser _modeleUser=this.controleurDAO.makeInstance( _vueUser.getLogin(), _vueUser.getPassw());
ne te dérange pas trop dans le ContrôleurIHM? :?
Patriarch24, ta remarque pourrait bien m'intéresser...
Je crois que je comprends ce que tu veux dire (bon je ne sais pas ce qu'est un framework de binging).
En fait tu parles d'une classe entre la Vue et le Modèle, ce qui fera que la Vue n'aura aucune notion du métier, et que c'est cette nouvelle classe qui se chargera de faire le lien entre Vue et Métier?? :roll:
C'est bien ça?? :roll:
A ce propos j'en profite pour faire une remarque:
La Vue ne peut-être complètement désolidarisée du Modèle puisque justement elle est censée représenter le Modèle.
Et même en admettant qu'on ait cette classe intermédiaire entre Vue et Modèle: La Vue possède bien des libellés ( ceux à gauche des champs de saisie par exemple), et ces libellés sont forcément métiers!
Ca voudrait donc dire que c'est cette classe intermédiaire qui se chargerait d'initialiser la valeur de ces libellés métiers affichés?
De plus: ces libellés ne seraient plus les mêmes si on passait dans une autre langue... (gestion multi-langue donc): qui va gérer ça alors, aussi la classe intermédiaire dont tu parles? :?
(Au fait du MVP c'est plus du MVC, donc on change un peu de monde là non? Ceci dit ça me dérange pas plus que ça!)
Qu'en penses-tu Patriarch24 ? :?
En fait Pseudocode,
La méthode makeInstance() serait censée renvoyer une instance de User (User côté modèle : un objet de type userModele donc).
C'est en fait une méthode de fabrique, c'est elle qui fait (côté ContrôleurDAO donc), le new User(login,passw) puis renvoie cette instance).
?? C'est pas bien comme façon de faire selon toi? :?
Ce n'est pas comme ça que je fais d'habitude, mais ça ne veut pas dire que c'est moi qui ai raison. :aie:
Voila a quoi ressemble le code actuel d'une de mes applications (sans le traitement des exceptions, pour clarifier le code):
Code:
1
2
3
4
5
6
7
8 /* creation d'un nouvel utilisateur*/ UserDAO userdao = new UserDAO(); User u = new User(); u.setName("toto"); u.setGroup("guest"); userdao.createUser(u);
Code:
1
2
3
4
5
6
7 /* modification d'un utilisateur*/ UserDAO userdao = new UserDAO(); User u = userdao.retrieveUser("toto"); u.setGroup("poweruser"); userdao.updateUser(u);
Pseudocode,
Merci mais j'aimerais bien que tu me confirmes 3 points:
-Tout le code que tu as écris là tu le places dans le ContrôleurIHM c'est ça?
-Et la classe userDAO c'est l'équivalent de ma classe userModele??
-Et ta classe User c'est l'équivalent de ma classe userVue??
C'est bien ça non?! :roll: :)
Ah d'accord Pseudocode, donc ... j'avais rien compris :mouarf:
Bon donc, dans ton code:
-La classe User c'est celle "Normale" du modèle.
-Et la classe userDAO c'est une classe du Contrôleur DAO.
Donc quand tu écris dans le ContrôleurIHM:
User u = new User();
tu supposes un couplage direct entre le modèle (classe User)
et le ContrôleurIHM ? :(
Parce-que moi je pensais qu'entre les 2 justement venait s'interposer le
ContrôleurDAO...? :?
:aie: Allo la base, au secours!??
Oui, le contrôleur connait le modèle. Effectivement j'aurai pu découpler un peu plus les 2 classes en implémentant une factory dans le DAO:
Code:
1
2
3
4
5
6
7
8 /* creation d'un nouvel utilisateur*/ UserDAO userdao = new UserDAO(); User u = userdao.newUser(); u.setName("toto"); u.setGroup("guest"); userdao.createUser(u);
Mais je suis de la veille école et mon DAO se contente de faire du CRUD. :aie:
:mrgreen:
(tiens le CRUD je ne connaissais pas l'acronyme, cool merci j'vais pouvoir l'ressortir :mouarf:)
Ok maintenant ton code me sied bien, je m'en inspirerai sérieusement.
Par contre j'ai l'impression d'avoir râté un épisode:
- C'est : 1 contrôleur DAO par entité du modèle à manipuler ou quoi? :?
userDAO, customerDAO, purchaseDAO, sellsDAO ??
Ca veut dire que dans le Contrôleur IHM on aura autant d'instances
xxxDAO que d'entités du modèle à manipuler pour la Vue?? :?
C'est bien ça, les xxxDAO sont des contrôleurs DAO?
-Autre pitite question: ma classe userVue à moi, t'en penses quoi (elle me sert pour la transmission d'une entité User entre ContrôleurIHM et Vue). :( ça se fait??
Merci pseudocode :D
Ca va plus vite a dire que CREATE, UPDATE, bla bla bla :mrgreen:
Pour des raisons de découplage j'ai un DAO par type de données persistantes. Mais tu peux tous les regrouper dans un gros DAO composite.Citation:
- C'est : 1 contrôleur DAO par entité du modèle à manipuler ou quoi? :?
userDAO, customerDAO, purchaseDAO, sellsDAO ??
Ca veut dire que dans le Contrôleur IHM on aura autant d'instances
xxxDAO que d'entités du modèle à manipuler pour la Vue?? :?
C'est bien ça, les xxxDAO sont des contrôleurs DAO?
J'en pense qu'il faut faire simple. :DCitation:
-Autre pitite question: ma classe userVue à moi, t'en penses quoi (elle me sert pour la transmission d'une entité User entre ContrôleurIHM et Vue). :( ça se fait??
Si tu as seulement 2 ou 3 valeurs à passer au contrôleur, crée les 2 ou 3 getters dans la vue. Si tu as beaucoup de valeurs, passe par un Transfer Object.
Comme je l'ai déjà dit (dans cette discussion ou l'autre), pour des IHM plus complexes j'utilise un modèle dédiée à la vue. Et ce modèle peut me servir également de Transfer Object.
D'accord Ok Pseudocode, merci pour ces éclaircissements.
Au fait quand tu dis un DAO tu veux dire un ContrôleurDAO c'est bien ça? :roll: non parce-que moi j'ai pas l'habitude de tous ces termes et raccourcis de langage. :?
Heu... je ne sais pas ce que c'est un ContrôleurDAO. Moi je connais le DAO (Data Access Object) tout court.
http://java.sun.com/blueprints/corej...rns/index.html
Contrôleur DAO c'est un abus de langage DAO tout court suffit.
En effet, l'idée derrière l'expréssion "data objet access" sous-entends déjà une contrainte et une certaine forme d'abstraction/arbitrage (je suis moitié anglophone).
En passant, merci pour avoir lancé ce sujet rp37000. Ca me donneras des pistes à creuser quand j'aurais atteint ton niveau. Je suivrais tes autres sujets avec intérêt tout en gardant mes réserves lorsque je sentirais que je me trouve à une trop grande profondeur ;) .
Pseudocode, hegros d'accord, merci pour l'histoire du (contrôleur) DAO, c'est très clair.
Et d'une façon générale: Merci à tous en particulier : hegros, Patriarch24, Pseudocode, tristan_m, Keihilin et j'en oublie peut-être, pour l'énergie que vous
m'avez consacrée. :king: Merci beaucoup ça m'aide à avancer.
Jimalexp, si certains sujets que j'ai lancés ont pu t'apporter j'en suis plus que ravi, mais les vrais connaisseurs sont ceux que j'ai cités ci-dessus.
Quant à toi ne te sous-estimes pas, tu sembles avoir plus de connaissances que tu ne crois.
Merci à toi.
;)
Je pense que je vais refermer cette discussion.