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

Java Discussion :

[MVC] Interactions vue/model


Sujet :

Java

  1. #1
    Membre régulier Avatar de zoullou
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Points : 103
    Points
    103
    Par défaut [MVC] Interactions vue/model
    Bonjour,

    Je commence à developper une application MVC et je me pose une petite question.
    Lorsqu'une vue est affiché, elle doit recuperer les infos à afficher (relative à une collection d'objet de meme type) en les demendant au model, mais je ne sais pas comment m'y prendre.
    J'ai créer ma classe d'objet à afficher (Club dans ce cas là) mais comment la vue demande les données au model.
    Je pense que je doit creer une classe de manipulation de donné (ClubHandler) à laqu'elle je demanderais les informations (stockée dans une BDD). Mais est ce que je doit creer une classe de manipulation (ex: ClubHandler) par classe (ex: Club) ? Si je fait ça, je me retrouverais avec beaucoup de classe à maintenir.

    Si vous aviez des exemple d'application implementant le patern MVC je suis aussi preneur.

    Merci d'avance

  2. #2
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    Dans le principe, tu es bon :
    la vue a besoin d'info. elle les demande au modele (via le controleur).
    Le modele, ca va donc etre une (ou plusieurs... c'est mieux d'ailleurs de séparer les couches acces base/traitements) qui va récuperer tes données en base (dans ton cas, les stocker dans tes classes d'objets à afficher Club) et les renvoyer à la vue.
    Vue ---> traitement ---> acces aux données
    <--- <---
    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java
    "La liberté de tout être s'arréte là où commence celle de l'autre... Respecter l'autre, c'est préserver sa liberté d'être, de penser et de vivre"

  3. #3
    Membre régulier Avatar de zoullou
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Points : 103
    Points
    103
    Par défaut
    Ok.
    Je récapitule pour ne pas me tromper.
    Je doit donc appeler une methode de mon controleur en lui passant une référence sur ma vue, lequel va appeler une methode du model (de ClubHandler par exemple) qui va remvoyer à la vue les données demandées grace à la référence transmise par le controleur.

    Mais si je procède comme ceci, le model doit connaitre une partie de la vue pour envoyer les donnée (la methode de la vue qui reçoit les données). Or il me semble que dans le patern MVC, le model est sensé ne rien connaitre des vues

    Est ce que je doit creer une interface générique (setData par exemple) qui sera implementée par mes vues afin que le model n'appel qu'une methode unique pour envoyer des données à toutes les vues ?

    Merci

  4. #4
    Membre habitué Avatar de le Daoud
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2002
    Messages : 287
    Points : 169
    Points
    169
    Par défaut
    Voici mon avis :

    Soit le contrôleur récupère les informations du modèle et les transmet à la vue, soit tu passes par une interface pour que ton modèle change ta vue (principe de l'observer/observable).


  5. #5
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 159
    Points : 97
    Points
    97
    Par défaut mvc
    Tu touches la a un probleme epineux du pattern mvc.
    comme tu l'as si bien dit, le modele ne doit rien connaitre de la vue. Mais

    Je resume le pattern mvc.
    Controleur (Ton handler): contient une reference de la vue et du modele.
    Implement un listener a laquel la vue s'abonne.
    Modele: ne sait rien de la vue
    Vue: peut contenir une reference du controleur. Seulement afin de pouvoir effectuer les abonnement aux events en debut

    Lorsqu'un evenement est declenche (par exemple clique sur la souris),
    le controleur etant le listener recoit l'evenement. Il appelle le modele pour recupere les donnnées afin de les afficher dans la vue.

    Il arrive que le modele soit modifier et que la vue doit en etre informe.
    On peut gerer ces modification du modele grace au pattern observer qui est implemente dans java.

    Le modele est un observable.
    la vue est un observer.
    Lorsque le modele est modifié, la vue est informe et ainsi elle peut recupere les informations et se mettre a jour


    Je suis dispo pour plus d'eclairciement

  6. #6
    Membre régulier Avatar de zoullou
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Points : 103
    Points
    103
    Par défaut
    Merci ouedmouss, je croit avoir saisie (en gros) comment fonctionne MVC, mais mon probleme se situe au niveau de la récupération des données par la vues.
    Quel est le meilleur systeme :
    Citation Envoyé par le Daoud
    Voici mon avis :

    Soit le contrôleur récupère les informations du modèle et les transmet à la vue, soit tu passes par une interface pour que ton modèle change ta vue (principe de l'observer/observable).
    ???

  7. #7
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 122
    Points : 110
    Points
    110
    Par défaut
    Salut,

    Pour recuperer les données du modéle dans la vue, tu dois avoir une instance du modèle dans la vue et créer des accesseurs aux données dans ton modèle.
    Par exemple la classe A est le modèle et la classe B est la vue.
    J'ai dans B un attribut de type A : typeA.
    Pour acceder au données de A je fait typeA.getSomething();
    Ou getSomething() accéde à certaine données.

    Voilà.

    PS : En java Vue et Controler son generalement confondus dans une même objet. PAr exemple tu auras une classe B qui implemente différentes interfaces. C'est en cela que Vue et Controler sont confondus (la vue la c'est classe B et le controler c'est les différentes interfaces qu'implemente B )

Discussions similaires

  1. Interaction vue Debug
    Par Dasson dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 14/11/2011, 19h26
  2. Aide mvc et vues
    Par Kais. dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 29/04/2010, 21h46
  3. [MVC] Interaction GUI <=> Model
    Par Nadd dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 06/04/2010, 17h15
  4. MVC Méthode Vue Controleur
    Par Deallyra dans le forum Général Conception Web
    Réponses: 9
    Dernier message: 16/04/2008, 14h57
  5. 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

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