IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC Discussion :

[MVC]: le Contrôleur [DAO] et le Transfer Object.


Sujet :

MVC

  1. #21
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par rp37000 Voir le message
    C'est bon ça non??? (, non parce-que ça me tente bien )
    En tout cas, c'est comme ça que je fais généralement.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  2. #22
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 90
    Par défaut
    Bon ben c'est trop cool alors Pseudocode, ,
    ç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?

  3. #23
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par rp37000 Voir le message
    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?
    En fait, je disais juste que j'étais d'accord sur la conception.

    Pour ce qui est de ton implémentation, je ne sais pas trop ce qu'il y a dans tes classes, ni quelles sont leur responsabilité. Mais la signature de controleurDAO me semble effectivement assez curieuse.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  4. #24
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 90
    Par défaut
    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??
    C'est bien ça??

    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 ?

  5. #25
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 90
    Par défaut
    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?

  6. #26
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par rp37000 Voir le message
    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.

    Voila a quoi ressemble le code actuel d'une de mes applications (sans le traitement des exceptions, pour clarifier le code):

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    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 java : Sélectionner tout - Visualiser dans une fenêtre à part
    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);
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #27
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 90
    Par défaut
    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?!

  8. #28
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par rp37000 Voir le message
    C'est bien ça non?!
    heu... non.
    Le code est bien dans le controleur.
    userdao : c'est une classe DAO
    user : c'est une classe du modèle de donnée

    Je n'ai pas utilisé ici l'équivalent de "userVue", qui serait une instance recupérée au début du code pour avoir les données.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #29
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 90
    Par défaut
    Ah d'accord Pseudocode, donc ... j'avais rien compris

    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...?
    Allo la base, au secours!??

  10. #30
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par rp37000 Voir le message
    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 ?
    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 java : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #31
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 90
    Par défaut

    (tiens le CRUD je ne connaissais pas l'acronyme, cool merci j'vais pouvoir l'ressortir )

    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

  12. #32
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par rp37000 Voir le message

    (tiens le CRUD je ne connaissais pas l'acronyme, cool merci j'vais pouvoir l'ressortir )
    Ca va plus vite a dire que CREATE, UPDATE, bla bla bla

    - 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?
    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.

    -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??
    J'en pense qu'il faut faire simple.

    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.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  13. #33
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 90
    Par défaut
    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? non parce-que moi j'ai pas l'habitude de tous ces termes et raccourcis de langage.

  14. #34
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par rp37000 Voir le message
    Au fait quand tu dis un DAO tu veux dire un ContrôleurDAO c'est bien ça? 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
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  15. #35
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Contrôleur DAO c'est un abus de langage DAO tout court suffit.

  16. #36
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Par défaut
    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 .

  17. #37
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 90
    Par défaut
    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. 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.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. model mvc et la DAO
    Par nashouille dans le forum C#
    Réponses: 1
    Dernier message: 13/05/2011, 20h24
  2. Data Transfer Object
    Par ngomsi dans le forum C#
    Réponses: 1
    Dernier message: 29/01/2008, 10h44
  3. [Spring MVC] Formulaires, contrôleurs.. besoin d'aide.
    Par Invité dans le forum Spring Web
    Réponses: 6
    Dernier message: 13/07/2007, 16h25
  4. Champ de texte et MVC (modèle vue contrôleur)
    Par three minute hero dans le forum Windows
    Réponses: 1
    Dernier message: 22/02/2007, 11h04
  5. Site web MVC : Comment gérer le contrôleur frontal ?
    Par HALOMOTO dans le forum Langage
    Réponses: 5
    Dernier message: 10/10/2006, 17h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo