Le MVC
MVC=Modèle Vues Contrôleurs architecture permettant de séparer proprement la gestion des données et l’affichage des données:
– Le modèle gère les données
– les vues les affichent
– les contrôleurs demandent au modèle de modifier les données
Le modèle
● défini par une interface indiquant ce qu’on peut faire
● exemple: ListModel void addListDataListener(ListDataListener l)
Object get ElementAt(int index) int getSize()
void removeListDataListener(ListDataListener l)
● donc, un modèle de liste permet d’avoir la taille, un élément donné et des listeners pour savoir quand ça change
● l’interface définit ce dont les vues peuvent avoir besoin, pas ce qui concerne la mise à jour des données:
– pas de add dans ListModel
– ce sera le rôle d’une implémentation comme DefaultListModel
● toujours bien séparer l’interface de l’implémentation, pour éviter de forcer la main sur la façon de gérer les données
Les vues
● une vue est un mode de représentation des données
● souvent un objet graphique, mais ça pourrait être autre chose:
– contenu d’un fichier mappé
– image
– pages web
– etc
● une vue a pour but de montrer les données que son modèle lui fournit
● pour cela, elle met un listener sur son modèle pour savoir quand elle doit se mettre à jour
● fait implicitement pour les objets usuels de Swing, quand on passe un modèle au constructeur d’une vue:
finalDefaultListModel model=newDefaultListModel();
JList list=newJList(model);
Les contrôleurs
● contrôleur= »chose » qui demande au modèle de modifier les données
● dans l’exemple précédent, c’était le bouton
● on peut avoir plusieurs contrôleurs
● ils doivent toujours poster leurs demandes au modèle dans la thread Swing!
● exemple: Timer qui incrémente chaque seconde de 1000 un élément tiré au hasard
Un exemple complet
● projet: un Victim Manager pour le syndicat des tueurs en série
● besoins client:
– tenir à jour une liste de victimes, définies par un nom et un état (safe, scared, dead)
– on doit pouvoir modifier l’état d’une victime (safe → scared ou scared → dead)
….
Interface graphique en Java 1.6 MVC et listes (330 KO) (Cours PDF)