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 :

Précisions sur Desing Pattern MVC


Sujet :

Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 74
    Points : 40
    Points
    40
    Par défaut Précisions sur Desing Pattern MVC
    Bonjour,

    J'essaye d'utiliser MVC dans une application graphique et je rencontre quelques difficultés "conceptuelles". J'ai lu beaucoup de choses sur le MVC (notamment les nombreuses discussions dans les forum), j'ai même regardé les articles originaux, la généalogie MVC/MVP/MVVM etc., mais je ne trouve pas d'exemple assez détaillé pour répondre à ma question. Chaque fois, on présente un modèle simple avec une vue simple (un ou plusieurs affichage(s)), et un contrôleur basique : la calculette, l'horloge, etc.

    Je vais partir d'un exemple relativement simple moi aussi pour poser les questions pour lesquelles je n'ai pas encore trouvé de réponse jusqu'à présent (si j'ai mal regardé, n'hésitez pas à me donner un coup lien ). Imaginons un logiciel de dessin, avec une fenêtre classique : un menu, des icônes cliquables permettant d'afficher des bibliothèques de formes prédéfinis, et une surface pour dessiner (penser à quelque chose du genre Visio/Dia). Voici mes questions :

    1) sur le modèle : je distingue nettement deux choses : le concept de dessin (par exemple une maison), et la représentation sous forme de données de ce dessin (par exemple une représentation bitmap ou au contraire une représentation vectorielle). Est-ce que je dois considérer que le modèle est le dessin "abstrait", le concept de dessin, la "possibilité" de représenter quelque chose en 2D, ou bien au contraire sa/ses modélisations mathématiques ?

    Dans la mesure où différentes modélisations donneront (aux imprécisions près) la même forme géométrique, j'aurais tendance à dire que ces modélisations peuvent être des modèles de mon domaine. Mais le principe d'abstraction me fait penser qu'il vaut mieux prendre comme modèle le concept de dessin. Le problème, dans ce cas, c'est que je ne vois pas trop quoi coder dans mon logiciel dans la partie "M"...

    Bref, dans cet exemple, le modèle, c'est quoi exactement ?

    2) le contrôleur et la vue : a priori, je dirais que la vue, c'est la surface à dessiner, la partie principale de la fenêtre dans laquelle l'utilisateur fait des glisser-déposer de formes prédéfinies pour les assembler entre elles.

    Mon questionnement à ce sujet vient de ce que je ne sais pas où mettre le menu et les bibliothèques de formes prédéfinies. D'après ce que j'ai compris du MVC, ça ne fait pas partie de la vue, puisque la vue est la présentation des données du modèles. Or, quand l'utilisateur clique sur l'icône des rectangles pour afficher la bibliothèque des formes rectangulaires, ça ne change absolument rien au modèle, et pourtant la vue globale de l'application perçue par l'utilisateur change... Est-ce qu'il faut considérer que cet ensemble (menu + bibliothèques) fait partie du contrôleur ? (Malgré que ce soit de l'ihm pure et dure...)

    Bref, comment séparer et traiter ce qui est "pure Vue" du modèle, et ce qui est "interaction" avec l'application mais sans impact immédiat avec le modèle ou la vue ?

    Merci pour votre aide

    PS : Avez-vous un tutoriel ou un livre conséquent sur la fabrication des interfaces graphiques utilisateurs, éventuellement en lien avec le MVC (ou les design pattern en général) ? Même en anglais, je suis preneur. Merci

  2. #2
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    avez-vous consulté ce petit tutoriel: http://baptiste-wicht.developpez.com...onception/mvc/

    J'ai commencé avec cela pour essayer de comprendre le principe.
    C'est sûr qu'au début, je me demandais comment construire mon projet sur le même principe, vu que l'exemple fourni est pour le moins simpliste, et que j'avais plein de trucs à mettre dans mon application !

    Mais les interactions entre les différentes parties ne sont pas si simple qu'il n'y parait. C'est pour cela qu'il faut prendre son temps de comprendre les mécanismes. Vous verrez ensuite que vous commencerez à avoir une idée de comment organiser les parties de votre projet.

    @ bientôt...
    @ bientôt...

    Salut & @+ sur 3W!

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 74
    Points : 40
    Points
    40
    Par défaut
    Oui, bien sûr, j'ai vu ce tuto, ainsi qu'une demi-douzaine d'autres... Mes questions sont relativement précises par rapport à l'exemple que je donne, et dans tous les exemples qui sont traités sur internet et que j'ai étudiés, il ne s'agit jamais d'une "vraie" application avec un menu, des composants graphiques qui agissent entre eux dans la même fenêtre, etc. Pour preuve, il suffit de regarder l'image à la fin du tuto proposé : 4 JFrame, aucun menu, aucun bouton d'interaction à l'intérieur d'une même fenêtre (comme par exemple l'interaction "icône/bibliothèque" dont je parle...).
    Finalement, tous les tutos sont un peu équivalents, ils sont très bien pour présenter les concepts généraux, mais dès que l'application se complique, ils ne répondent plus aux nouvelles questions que le débutant se pose naturellement. Bref, je suis plus que toujours sur ma faim .

  4. #4
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Re-bonjour,

    je ne suis pas informaticien... donc peut être que je vais raconter des bêtises.
    Le projet que je développe actuellement est sommairement constitué:

    * d'une JFrame implémentée dans la classe principale, celle qui contient main(). Elle implémente aussi d'autres classes étendant principalement JPanel, et regroupant des composants comme des JTable, JComboBox... bref tous des composants graphiques permettant de "voir" des données. Je pense que c'est la partie "Vue" de l'application

    * une classe qui ne contient que les données et dont la fonction est de les gérer. Elle s'occupe notamment de la sérialisation de celles-ci. Les tableaux, les ArrayList, les DefaultComBoxModel sont connectés aux différents composants des classes citées dans le pragraphe précédent. Je pense que c'est la partie "Modèle" de l'application.

    * Enfin, chacune des classes de la partie "Vue", surchargent des interfaces genre ActionListener, ComponentEvent, KeyListener, MouseListener, afin de réagir lorsque l'utilisateur sollicite les composants... Je pense que c'est la partie "Controleur".

    Je ne sais pas si l'architecture est conforme à la théorie du pattern MVC, cependant je ne dois pas en être loin, car lorsque j'ai besoin de changer une structure de mes données, je bidouille dans une petite partie de l'application et cela n'a pas de conséquence sur les autres parties... il y a une indépendance entre les différentes "zones" de l'application.

    Voila, c'est pas facile à expliquer avec des mots, j'espère néanmoins que cela vous sera utile. @ bientôt...
    @ bientôt...

    Salut & @+ sur 3W!

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 74
    Points : 40
    Points
    40
    Par défaut
    Bah... c'est gentil mais ces généralités ne m'apportent absolument rien par rapport aux questions très précises que je (me) pose. Merci quand même.

  6. #6
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Tant pis,

    @ bientôt...
    @ bientôt...

    Salut & @+ sur 3W!

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 168
    Points : 219
    Points
    219
    Par défaut
    Mon questionnement à ce sujet vient de ce que je ne sais pas où mettre le menu et les bibliothèques de formes prédéfinies. D'après ce que j'ai compris du MVC, ça ne fait pas partie de la vue, puisque la vue est la présentation des données du modèles. Or, quand l'utilisateur clique sur l'icône des rectangles pour afficher la bibliothèque des formes rectangulaires, ça ne change absolument rien au modèle, et pourtant la vue globale de l'application perçue par l'utilisateur change... Est-ce qu'il faut considérer que cet ensemble (menu + bibliothèques) fait partie du contrôleur ? (Malgré que ce soit de l'ihm pure et dure...)
    le menu lui aussi possède un model (collection de vo) un controller (écoute du click ) et une vue ( affichage des bouttons ).

    non ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 74
    Points : 40
    Points
    40
    Par défaut
    Oui, oui, j'ai bien vu ça. Les composants Swing sont basés sur MVC (avec V et C intimement liés dans ce cas). Mais ça ne répond pas non plus à mon questionnement, puisque l'interaction est gérée par Java/Swing. Ma question dans ce cas, en gros c'est : est-ce que je considère le menu et les boutons d'interaction plutôt dans le vue ou plutôt dans le contrôleur ?

    Mais cela n'est qu'une petite partie de l'iceberg (cf. message initial).

  9. #9
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575
    Par défaut
    Le Design pattern MVC n'est pas une fin en soi.

    Il n'est pas nécessaire non plus de décliner ce pattern sur toute la verticalité d'une application.

    La question qui se pose, se situe plus dans le besoin de découplage afin de ré-utiliser certain objet que dans un pseudo dogme.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 74
    Points : 40
    Points
    40
    Par défaut
    Certes... Encore faut-il, avant de pouvoir s'affranchir des codes et des règles, avoir bien compris leurs raisons d'être et leurs fonctionnements... Ce qui n'est pas mon cas. J'ai bien compris la "théorie", la notion de M, de V et de C, j'ai compris les exemples "simples" (simplistes ?) traités dans les tutoriels, mais dès qu'un élément nouveau apparaît, complexifiant légèrement le système (ici, les menus, les bibliothèques), je n'arrive pas à appliquer.

    Je demande simplement qu'on m'aide à y voir plus clair en répondant aux questions que je pose sur un cas concret. Pas qu'on me donne quelques généralités ou grands principes qui servent d'introduction à tout tutoriel sur la question. Visiblement, mon exemple n'est pas parlant car personne ne peut y apporter de réponse précise soutenue par une vision claire et une expérience de l'utilisation du MVC ...

  11. #11
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 74
    Points : 40
    Points
    40
    Par défaut
    Merci pour le lien. Ca enrichit ma liste de bookmarks mais... toujours pas de réponse concrète ... ?

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 74
    Points : 40
    Points
    40
    Par défaut
    Des éléments de réponse à méditer m'ont été apportés dans une autre section du forum où j'ai posé ma question. Pour ceux qui sont intéressés, voir http://www.developpez.net/forums/d10...ecis-question/

Discussions similaires

  1. [C++] Demande précision sur Pattern Factory
    Par Aspic dans le forum C++
    Réponses: 36
    Dernier message: 25/08/2011, 13h40
  2. Siscussion sur le pattern MVC
    Par encours dans le forum Général Java
    Réponses: 1
    Dernier message: 18/08/2011, 15h34
  3. Quelques questions sur le pattern MVC
    Par maa dans le forum Général Dotnet
    Réponses: 40
    Dernier message: 11/10/2009, 04h48
  4. [Observateur] Précisions sur le design pattern Observer [UML]
    Par joquetino dans le forum Design Patterns
    Réponses: 2
    Dernier message: 07/10/2004, 23h35

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