GLTD5MVC Java8+-5
GLTD5MVC Java8+-5
GLTD5MVC Java8+-5
TD Modèle-Vue-Contrôleur
Cette section est reprise du TP de Lilian Casiez, Université Lille 1. Il a été modifié et simplifié.
Ce TP est également disponible sur MooTSE, dans la section FISE2 Génie Logiciel. Télé-
charger le code associé sur MooTSE.
1.1 Objectif
L’objectif est de créer une interface permettant le contrôle de la 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 des vues doit mettre automatiquement à jour les autres
vues. Nous allons voir comment appliquer le modèle MVC pour réaliser cette interface.
1.2 Préambule
Le modèle MVC comprend :
1. Un modèle. Celui-ci comprend les données et un certain nombre de méthodes pour les
lire et les modifier. Le modèle n’a aucune connaissance de la façon dont les données sont
présentées à l’utilisateur (la Vue). Le modèle peut toutefois enregistrer une ou plusieurs
vues (une liste de dépendants) qui sont notifiées quand les données du modèle ont subi
une modification (patron de conception Observateur). En Java, le modèle comprend une
ou plusieurs classes de type java.beans.PropertyChangeSupport (ou d’une interface ou
classe équivalente).
2. Une ou plusieurs vues. Une vue fournit une représentation graphique de tout ou partie
des données du modèle. Chaque vue obtient les données à afficher en en faisant la de-
mande au modèle. Quand un utilisateur manipule une vue d’un modèle, la vue informe
1
2 1 Introduction : MVC et java.util
import java.beans.PropertyChangeSupport;
import java.beans.PropertyChangeListener;
import control.TemperatureController;
import model.TemperatureModel;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import control.TemperatureController;
1.3 Explications de l’organisation MVC du code de l’exemple 5
import model.TemperatureModel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
package control;
import model.TemperatureModel;
import vue.TemperatureVue;
import model.TemperatureModel;
import vue.TemperatureVueCelsius;
import vue.TemperatureVueFarenheit;
1.5 À faire
— Étudier les explications dans le texte ci-dessus.
— Tester l’utilisation de l’exemple de code Java fourni.
— Faire un diagramme de classes UML à partir du code Java fourni
— Faire un diagramme de séquence retraçant les appels de méthodes au lancement de l’ap-
plication
— Faire un diagramme de séquence depuis une saisie de valeur par l’utilisateur.
2 Exercice : Rectangle
L’objectif de cet exercice est de faire une application dessinant un rectangle dont la hauteur
est modifiable par l’utilisateur (voir l’annexe pour un début de code). L’application comporte :
— un modèle pour stocker les informations sur le rectangle.
— deux vues : l’une permet la modification de la hauteur, l’autre trace le rectangle (cf.
annexe en fin de sujet pour découvrir comment tracer un rectangle).
— un contrôleur, qui transmet les modifications de hauteur saisies par l’utilisateur au modèle
dans le cas où ces modifications sont correctes (valeur de hauteur entre un min et un max
définis dans le modèle), et change l’interface de saisie de hauteur dans le cas contraire.
Un exemple de fonctionnement est disponible sous forme d’un fichier jar sur MooTSE dans
la section correspondant à ce TD. Dans cet exemple, les min et max sont respectivement fixés à
0 et 399. En vous inspirant du code de la partie 1 de ce sujet, développez votre propre version
de cet exercice.