Le Modèle Vue-Contrôleur (MVC)
Le modèle MVC (Model-View-Controller) consiste à découpler une application en trois principaux rôles : le modèle, la vue et le contrôleur, afin que chaque rôle puisse être modifié ou remplacé facilement, et indépendamment des autres.
Rappel des composants
Le modèle représente les données manipulées par l'application et offre des méthodes d’accès et de modification de ces données. Les résultats renvoyés par le modèle sont dénués de toute présentation.
La vue correspond à l'interface avec laquelle l'utilisateur interagit. Elle n'effectue aucun traitement, mais affiche simplement les données fournies par le modèle. Plusieurs vues peuvent présenter les données d'un même modèle.
- Affiche le contenu du modèle (accède aux données)
- Spécifie comment ces données se visualisent
- Maintient la cohérence de la représentation du modèle lors de changements
Le contrôleur gère les événements pour mettre à jour la vue ou le modèle et les synchroniser. Il reçoit toutes les actions de l'utilisateur et déclenche les modifications nécessaires.
- Traduction entre une action de l'utilisateur dans la vue et une action sur le modèle
- Exemple : sélection d'une commande dans un menu pour ouvrir un document ou clic sur un bouton pour générer une table des matières
- Choisit la vue suivante en fonction du résultat de l'action
Contrôleur
Rôle du contrôleur :
- Définit le comportement de l'application
- Lie une action utilisateur à une modification de l'état du modèle
- Sélectionne une vue après l'action
- Un contrôleur peut être associé à une fonctionnalité spécifique
Interaction avec le modèle :
- Demande l'état du modèle
- Notifie les changements au modèle
- Encapsule l'état de l'application
- Répond aux requêtes sur l'état du modèle
- Expose les fonctionnalités de l'application
- Communique aux vues les changements d'état
Interaction avec la vue :
- Envoie des gestes d'utilisateur au contrôleur
- Demande des mises à jour au modèle
- Permet au contrôleur de sélectionner une vue
Patrons de conception utilisés dans MVC
Le patron MVC combine trois patrons de conception : composite, observer et strategy.
- Composite : organise plusieurs vues dans une structure hiérarchique (arbre)
- Observer : relation entre les vues et le modèle (le modèle agit comme sujet, la vue comme observateur)
- Strategy : les contrôleurs sont des stratégies pour les vues (la vue est un contexte, le contrôleur une stratégie)
Le contrôleur transfère les données de l'utilisateur au modèle et peut modifier le contenu. Pour centraliser les contrôles et découpler davantage le modèle de la vue, une implémentation du patron strategy est intégrée dans la vue.
Exercices
Exercice 1 : Modélisation globale d'un système
Combinez les différents sous-modèles élaborés pour former un modèle global du système complet. Ce modèle utilise trois patrons de conception : composite, observer et strategy, chacun apportant des fonctionnalités différentes mais complémentaires.
- Plusieurs vues synchronisées
- Plusieurs contrôles possibles (exemple : clavier, souris)
- Données isolées (base de données, fichiers, etc.)
Exercice 2 : Interface de contrôle de température
Créez une interface permettant le contrôle d'une température en degrés Celsius ou Fahrenheit. L'interface se compose de trois vues représentant la même température sous des formes différentes. La modification d'une vue doit mettre automatiquement à jour les autres.
Question : Proposez une modélisation UML de cette application.
FAQ
1. Pourquoi utiliser le modèle MVC dans le développement logiciel ?
Le modèle MVC permet de séparer clairement les responsabilités de l'application (données, présentation et logique), facilitant ainsi la maintenance, les modifications et l'extensibilité indépendantes de chaque composant.
2. Comment le patron Observer intervient-il dans MVC ?
Dans MVC, le patron Observer est utilisé pour synchroniser les vues avec le modèle. Lorsqu'une vue modifie les données du modèle, toutes les autres vues observant ce modèle sont automatiquement mises à jour.
3. Quels sont les avantages d'une vue composite ?
Une vue composite permet d'organiser plusieurs vues en une structure hiérarchique (comme un arbre), facilitant la gestion des interfaces complexes et la réutilisation de parties de l'interface.