tp2... mvc ? jlist contrôleur vue jlabel vue jslider contrôleur vue imagelibrary modèle...
TRANSCRIPT
![Page 1: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/1.jpg)
TP2 ... MVC ?
JList Contrôleur Vue
JLabel Vue
JSlider Contrôleur Vue
ImageLibrary Modèle
[email protected] Creative Commons Paternité-Pas d'Utilisation
Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France License
![Page 2: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/2.jpg)
Changer l'image courante
![Page 3: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/3.jpg)
Changer l'image courante
JList
Modèle
ImageLibrary
Jslider
JLabel
![Page 4: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/4.jpg)
Modifier sa taille
![Page 5: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/5.jpg)
Modifier sa taille
JList
Modèle
ImageLibrary
Jslider
JLabel
![Page 6: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/6.jpg)
Ajouter une nouvelle image
![Page 7: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/7.jpg)
Ajouter une nouvelle image
JList
Modèle
ImageLibrary
Jslider
JLabel
JFileChooser
![Page 8: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/8.jpg)
La solution ?
JList
Modèle
ImageLibrary
Jslider
JLabel
JFileChooser
JLabel
JSpinnerJProgressBar
Passage à l'échelle ??
Ajout d'un widget ?!
![Page 9: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/9.jpg)
Cas idéal : changer l'image courante
JList
Modèle
ImageLibraryJslider
JLabel
![Page 10: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/10.jpg)
Cas idéal : modifier sa taille
JList
Modèle
ImageLibraryJslider
JLabel
![Page 11: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/11.jpg)
Cas idéal : ajouter une image
JList
Modèle
ImageLibraryJslider
JLabel
JFileChooser
1 nouveau composant
=1 nouvelle connexion
au modèle
![Page 12: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/12.jpg)
Bilan
Rendre les composants indépendants les uns des autres
Placer le modèle au centre des dialogues Simplifier l'écriture des interfaces complexes Rendre modifiable / évolutif le code
![Page 13: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/13.jpg)
design pattern
Un patron pour nous sauver la vie : Observer
Observer
Update()
Observable
Attach(Observer)Notify()
![Page 14: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/14.jpg)
Observer Design Pattern
One to many
Abstract coupling between subject and observer, each can be extended and reused individually.
Dynamic relationship between subject and observer, such relationship can be established at run time. This gives a lot more programming flexibility.
Support for broadcast communication. The notification is broadcast automatically to all interested objects that subscribed to it.
Unexpected updates. Observes have no knowledge of each other and blind to the cost of changing in subject. With the dynamic relationship between subject and observers, the update dependency can be hard to track down.
![Page 15: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/15.jpg)
Subject
Knows it observers
Has any number of observer
Provides an interface to attach and detaching observer object at run time
Observer
Provides an update interface to receive signal from subject
ConcreteSubject
Store subject state interested by observer
Send notification to it's observer
ConcreteObserver
Maintain reference to a ConcreteSubject object
Maintain observer state
Implement update operation
![Page 16: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/16.jpg)
Coder ?
import java.util.Observable;
import java.util.Observer;
public class ImageLibray extend Observable
public class MonJLabel implements Observer
(& extends JLabel)
![Page 17: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/17.jpg)
Un exemple simple
1 Contrôleur1 Modèle
1 Vue
![Page 18: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/18.jpg)
Un exemple simple
Modele
Integer data;
JLabelJtextField
![Page 19: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/19.jpg)
Abstraction
Modele
Integer data;
JLabelJTextField
Abs 1 Abs 2
![Page 20: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/20.jpg)
Un exemple simple
Modele
Integer data;
MonJLabelJTextField
Observable
Modele
Integer data;
Modele
Integer data;
Observer JLabel
![Page 21: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/21.jpg)
Un exemple simple
Modele
Integer data;
JTextField
Observable
Modele
Integer data;
Modele
Integer data;
JLabeltoModel
Observer
JLabel
On modélise explicitement le contrôle
![Page 22: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/22.jpg)
Un exemple simple
Modele
Integer data;
JTextField Modele
Integer data;
Modele
Integer data;
![Page 23: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/23.jpg)
Un exemple simple
Modele
Integer data;
JTextField Modele
Integer data;
Modele
Integer data;
ActionListener
![Page 24: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/24.jpg)
Un exemple simple
Modele
Integer data;
Modele
Integer data;
Modele
Integer data;
JtextField
JtextFieldToModel
ActionListener
![Page 25: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/25.jpg)
Un exemple simple complet
Modele
Integer data;
ModeltoJLabel
Observable Observer
JLabel
JtextField
JtextFieldToModel
ActionListener
![Page 26: TP2... MVC ? JList Contrôleur Vue JLabel Vue JSlider Contrôleur Vue ImageLibrary Modèle Cedric.Dumas@emn.fr contrat Creative Commons Paternité-Pas d'Utilisation](https://reader036.vdocuments.pub/reader036/viewer/2022062307/551d9d8c497959293b8c1c9f/html5/thumbnails/26.jpg)
Bilan
Modèle indépendant Utilisation des classes natives de Swing Passage par des adaptateurs de types
Objets simples (1 méthode) Deux interfaces Gèrent le dialogue Transforme les types