Mvc (5)
Upcoming SlideShare
Loading in...5
×
 

Mvc (5)

on

  • 307 views

présentation sur le MVC très claire :)

présentation sur le MVC très claire :)

Statistics

Views

Total Views
307
Views on SlideShare
307
Embed Views
0

Actions

Likes
0
Downloads
9
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Mvc (5) Mvc (5) Presentation Transcript

  • Module Java Expert CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV MVC
  • Module Java Vue d’ensemble du langage Java Le langage Java : syntaxe et sémantique Programmation multi-tâche : les threads Accéder aux bases de données Composants réutilisables : le modèle MVC Développement Client/Serveur Présentation d’un IDE : WSAD / Forté / JBuilder Les serveurs d’applications J2EE Les Enterprise JavaBeans Ré-ingénierie d’applications Java Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 2 / 31
  • Vue globale de MVC “Dans le paradigme MVC l’entrée utilisateur, la modélisation du monde extérieur, l’aspect visuel présenté l’utilisateur sont explictement séparés et gérés par trois types d’objet, chacun spécialisé dans sa tâche.” [Burbeck 92] Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 3 / 31
  • Buts de MVC L ’architecture Model-View-Controller a pour objectif d ’organiser une application interactive en séparant : – les données – la représentation des données – le comportement de l ’application Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 4 / 31
  • Historique de MVC Créé dans la fin des années 1970 par Trygve Reenskaug au Xerox PARC Applications aux GUI (Graphical User Interfaces) Première version en 1980 utilise une sous classe pour chaque vue à adapter au modèle Vues en 1983 ont spécifié les messages à envoyer au model avec des symboles Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 5 / 31
  • Historique de MVC (suite) ObjectWorks en 1989 a utilisé les détenteurs de valeurs In 1992 VisualWorks a remplacé ObjectWorks et a utilisé de composants de fine granularité GUI spécifiant l’interface MVC. Visualworks a ajouté la gestion des événements par des controllers en 1998 Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 6 / 31
  • Structure de MVC Le modèle représente la structure des données dans l ’application et les opérations spécifiques sur ces données. Une Vue présente les données sous une certaine forme à l ’utilisateur, suivant un contexte d ’exploitation. Un Controller traduit les interactions utilisateur par des appels de méthodes (comportement) sur le modèle et sélectionne la vue appropriée basée sur l’état du modèle. Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 7 / 31
  • Vue globale MVC (suite) Controllers gèrent les entrées de l’utilisateur Controller View Views présentent l’information à l’utilisateur Model Models implémentent les fonctionnalités de l’application Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 8 / 31
  • MVC Avantages Structure O-O propre Vues Multiples d’un même modèle Vues Synchronized views et controllers interchangeables Look and Feel modifiable Framework Potentiel Deruelle Laurent Copyright © 2002 Laurent Deruelle Désavantages Complexité accrue mise à jours potentiellement excessive View/Controller fortement liés au modèle Module UV Java Page 9 / 31
  • Architecture du modèle MVC Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 10 / 31
  • Références Controller View View Model Controller Model Model Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 11 / 31
  • Communication MVC 1. Entrée utilisateur Controller View 2. Modifier aspect 4. Mettre à jour Model 3. Modification interne Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 12 / 31
  • MVC et les modèles de conception View-Model (Observer) View-Controller (Strategy) View-View (Composite ) View-Controller (Factory Method) View-View (Decorator) Model (Adaptor) Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 13 / 31
  • Cas d’étude Hypothétique Le secteur technologique ralentit, impliquent que les dot-com s’effondrent, laissant de nombreux programmeurs sans travail ... Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 14 / 31
  • McDonald’s La décision est prise de ne pas gaspiller ce talent ... Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 15 / 31
  • Nouveau système pour la gestion des commandes Les caissiers ont besoin d’une nouvelle interface – entrées les nouvelles commandes, récupérer l’argent Les cuisiniers ont besoin d’une autre interface – Visualiser les commandes, supprimer celles qui sont réalisées Exemples de code pour le Model, la View, le Controller, et la manière de les intégrer. McDonald’s utilise Java Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 16 / 31
  • Boot-strap class McDonaldsViewController{ public static void main() { //notre modèle est autonome OrderTracker model = new OrderTracker(); //ces références dépendent du modèle CashierGUI vc1 = new CashierGUI(model); CashierGUI vc2 = new CashierGUI(model); CookGUI vc3 = new CookGUI(model); CookGUI vc4 = new CookGUI(model); } } Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 17 / 31
  • Le Modèle import java.util.Observable; class CommandeModele extends Observable{ Vector orders; // liste de toutes les commandes //...CommandeModele()... //...getCommandeIterator()... public void ajouterCommande(Commande newOrder) { orders.add(newOrder); //modification du modèle setChanged(); // le modèle a changé (vecteur) notifyObservers(); //notification globale } //idem avec supprimerCommande() } Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 18 / 31
  • La Vue import java.util.Observer; class CuisineVue implements Observer{ CommandeModele model; CuisineControleur controller; CuisineVue(CommandeModele newModel) { model = newModel; model.addObserver(this); controller = new CuisineControleur(model, this); initialiserVue(); } public void update(Observable changed, Object arg){ MiseAJourVue(); } private void MiseAJourVue() { //...model.getCommandeIterator()... //...mettre à jour ce qui est vu à l’écran } } Deruelle Laurent Copyright © 2002 Laurent Deruelle Création du contrôleur Appelée par notifyObservers() Module UV Java Page 19 / 31
  • Le Contrôleur import java.util.Observer; class CuisineControleur implements Observer{ CommandeModele model; CuisineVue view; //liste des contrôles JButton nextPageButton; JButton removeButton; CuisineControleur(CommandeModele inModel, CuisineVue inView){ model = inModel; model.addObserver(this); view = inView; //... Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 20 / 31
  • Le Contrôleur nextPageButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { view.pagesuivante(); } }); removeButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { model.supprimerCommande(view.getCommandeSelectionnee()); } }); public void update(Observable changed, Object arg) { if (model.getNombreDeCommandes() == 0) removeButton.disable(); } Appelée } par notifyObservers() Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 21 / 31
  • Les Références Le code du modèle n’inclut pas de références aux classes GUI L’utilisation de l’Observer permet de réaliser le découplage GUI font une référence au Modèle – GUI est spécifique au Modèle – réutilisation Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 22 / 31
  • Le Modèle Nécessite d’être orienté métier pour supporter le couplage des vues et des controllers Ne doit jamais contenir des informations concernant l’état de la GUI Ne doit pas proposer de services spécifiques à des vues particulières et à des controllers Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 23 / 31
  • View-Controller Pas besoin d’être séparés – Document-View – Réduit la complexité Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 24 / 31
  • La classe Observable (java.util) Cette classe représente un objet observable par d ’autres, au niveau du modèle de données. Un objet observable possède un ou plusieurs observateur, ajoutés par la méthode addObserver(Observer o) Lorsque l ’interface d ’un objet observable est modifié, la méthode notifyObservers() Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 25 / 31
  • La classe Observable (java.util) La méthode notifyObservers permet de notifier les observateurs d ’une modification dans l ’état. La modification est indiquée par la méthode hasChanged(). Une fois les observateurs notifiés, la méthode clearChanged permet d ’indiquer que l ’objet n ’est plus dans l ’état modifié. Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 26 / 31
  • La classe Observable (java.util) La méthode deleteObservers() permet de supprimer l ’ensemble des observateurs associés à l ’objet. Une modification est reflétée par la méthode setChanged(). Une fois les observateurs notifiés, la méthode clearChanged permet d ’indiquer que l ’objet n ’est plus dans l ’état modifié. Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 27 / 31
  • L ’interface Observer (java.util) Une classe qui implémente l ’interface Observer, désire être notifiée des changements produits sur un objet observable. Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 28 / 31
  • L ’interface Observer (java.util) L ’unique méthode devant être implémentée est update(Observable o, Object arg). La méthode update est appelée automatiquement lorsque l ’objet est notifié de la modification de l ’observable. Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 29 / 31
  • L ’interface Observer (java.util) Le premier paramètre est l ’objet qui notifie. Le second paramètre est un objet passé à la méthode update, au moyen d ’un appel à la méthode notifyObserver(Object o) Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 30 / 31
  • Liens vers MVC ... Applications Programming in Smalltalk-80(TM): How to use Model-View-Controller (MVC) by Steve Burbeck, Ph.D. http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html A Description of the Model-View-Controller User Interface Paradigm in the Smalltalk80 System by Glenn E. Krasner and Stephen T. Pope http://rain.create.ucsb.edu/~stp/CD-ROM/Documents/MVC %20Cookbook/mvc_cookbook_1.html TWISTING THE TRIAD: The evolution of the Dolphin Smalltalk MVP application framework by Andy Bower, Blair McGlashan http://www.object-arts.com/Papers/TwistingTheTriad.PDF MVP: Model-View-Presenter: The Taligent Programming Model for C++ and Java by Mike Potel ftp://www6.software.ibm.com/software/developer/library/mvp.pdf MVC meets Swing: Explore the underpinnings of the JFC's Swing components by Todd Sundsted www.javaworld.com/javaworld/jw-04-1998/jw-04-howto.html The Model-View-Controller (MVC) Framework Stingray Software http://www.stingray.com/products/objtoolkitpro/mvc.cfm ModelViewControllerHistory http://c2.com/cgi/wiki?ModelViewControllerHistory Deruelle Laurent Copyright © 2002 Laurent Deruelle Module UV Java Page 31 / 31