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![]()
Partager