Un patron de conception

Slides:



Advertisements
Présentations similaires
Cours de l’OACI sur les Systèmes de Gestion de la Sécurité (SMS)
Advertisements

Gestion des événements (suite)
Projet n°4 : Objecteering
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
Cours 6 : XML et les architectures N-tiers – Tier Applicatif
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
Programmation Orientée Objet (POO)
Plan de formation Chapitre 1 : Présentation de SAP
Construction de Box-Plot ou diagrammes en boîtes ou boîtes à moustaches Construire une boîte à moustaches …
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Introduction à la POO: Les classes vs les objets
بسم الله الرحمن الرحيم. Institut Supérieure des Etudes Technologiques de Kébili.
Introduction aux Session Beans
PARTIE 3 : Le SYSTEME D’INFORMATION FUTUR
Page de garde Introduction aux Design Patterns ISIA, Mars 2003
Présentation générale de MapBruit
Pattern État PowerPoint 2003, télécharger la visionneuse PowerPoint Viewer dernière édition si vous ne lavez pas…télécharger la visionneuse PowerPoint.
XML-Family Web Services Description Language W.S.D.L.
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
Administration de SharePoint
Analyse et Conception orientée objet
Langage Oriente Objet Cours 4.
1 Initiation aux bases de données et à la programmation événementielle Cours N°9 : Gestion de la cohérence avec des sous-formulaires. Support de cours.
Principes de programmation (suite)
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Méthodologie de développement Les couches « layer »
Classes abstraites et Interfaces
1 Objectifs de ce cours (I21) Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde Résumé du cours précédent.
Gestion denquêtes et suivi dindicateurs statistiques 1er degré © DOS3 – Pôle Analyse & Développement Octobre 2011 – v.0.1 Tutorial portail directeur décole.
.Net Remoting.
Le patron de conception « Strategy » Simon Durocher ( )
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
GPA789 Analyse et conception orientées objet 1 Professeur: Tony Wong, Ph.D., ing. Chapitre 6 Correspondance UML et C++
Introduction au paradigme orienté-objet (suite)
Présentation Structures de Données et TDA
Diagramme d’interaction
Programmation concurrente
Console MMC de Windows 2000 Présenté par Suzanne Savoie Cours 4.
Design Pattern Memento. Principe : Enregistrer les changements d'états d'un objet Objectif : Pouvoir restituer les états précédents d'un objet.
Design Pattern: Decorator
Architecture dun site de vente au détail1 Modèle d'un site simple de vente Lexemple du livre Ruby on Rails Partie II Java Adventure Builder Demo Réalisé.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Conception des Réalisé par : Nassim TIGUENITINE.
Android View, onClick, Activity, Modèle Vue Contrôleur
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Le diagramme de séquences
Une approche documentaire de la diffusion sur Internet Journée WebÉducation Martin Sévigny / Irosoft / 14 mai 2009
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Gestion des transactions SQLServer.
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Presentaion Projet IA.
Objectifs À la fin de ce cours, vous serez capables de :
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
Factory Design Patterns. Contents Factory patterns: principesFactory patterns: principes The Factory Method patternThe Factory Method pattern The Abstract.
11/04/ L'héritage Cours 7 Cours 7.
Un design pattern orienté-objet
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Tutorat en bio-informatique
Réaliser par: Sadok Amel Cheboui hassiba
La programmation système
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Iterator Design Pattern Alessandro Soro Sylvain Giroux.
Transcription de la présentation:

Un patron de conception Memento Un patron de conception par Rémi L. Lavoie

But « Sans violation de l’encapsulation, saisir et transmettre à l’extérieur d’un objet l’état interne de celui-ci, dans le but de pouvoir ultérieurement le restaurer dans cet état. »

Définition Le patron Memento enregistre et extériorise l’état interne d’un objet pour pouvoir restaurer l’objet à un état précédant plus tard. L’état de l’objet est sauvegardé à des points stratégiques pour que le mécanisme « undo » permette aux utilisateurs de restaurer un objet à l’état ou il était avant une certaine opération.

Diagramme de classe

Rôles des Classes Originator Créer un Memento contenant un portrait de l’état interne actuel. Utilise le Memento pour restaurer son état interne

Rôles des Classes Caretaker Est responsable du « safe-keeping » du memento N’opère jamais ou n’examine jamais le contenu du memento

Rôles des Classes Memento Sauvegarde l’état interne de l’objet Originator. Peut sauvegarder autant de composantes nécessaires (beaucoup ou peu) de l’état de Originator (laissez à la discrétion de l’originator) Protège contre l’accès par des objets autres que l’originator. Les mementos ont 2 interfaces. (façons d’interagir) Caretaker a interface minime vers Memento, il peut seulement passer le memento à d’autres objets. L’Originator, par contre, a une large interface, qui lui laisse l’accès à tous les informations nécessaires pour restaurer l’état précédent. Idéalement, seulement l’originator qui produit le memento serait permis d’accéder l’état interne du memento.

Points pour/contre + préserve les frontières d’encapsulation. + élimine le besoin de plusieurs instance du même objet (Originator) simplement pour sauvegarder son état. Une version plus restreinte est sauvegarder au lieu du Originator complet. + Simplifie l’originator, car la responsabilité de gérer le Memento est distribué au Caretaker. + simple à implémenter. - l’utilisation peut être coûteuse. (si plusieurs détails à sauvegarder)

Conseils Pratiques Si seulement 1 Memento est nécessaire, vous pouvez combine le Originator et le Caretaker. Si vous avez besoin de plusieurs Mementos, sauvegarder que les changements incrémentaux. Ceci sauvera de l’espace. Memento est souvent utilisé en conjonction avec Command, Iterator et Singleton.

Pourquoi? Laisser de l’information d’un objet accessible à d’autres objets par des méthodes d’accès Sauvegarder de l’information pour utilisation antérieur Supporter la fonction undo/redo Utilisé dans les transactions de base de données

Fonctionnement

Exemple Voici un exemple simple qui permet de sauvegarder l’état actuel et de le restaurer.

Caretaker public class Caretaker { // Memento private Memento memento; // Get public Memento getMemento() { return memento; } // Set public void setMemento(Memento m) memento = m;

Memento public class Memento { // State private String state; // Constructeur public Memento( String state ) { this.state = state; } // Get public String getState() return state;

Originator public class Originator { // State private String state = "OFF"; // Get public String getState() { return state; } //Set public void setState(String state) System.out.println("State changed to: " + state); this.state = state;

Originator (suite) // Cree le Memento public Memento CreateMemento() { return (new Memento( state )); } // Set le Memento public void SetMemento( Memento memento ) state = memento.getState(); System.out.println( "Restored to state: " + state );

Démonstration par Rémi Lavoie

Exemples d’utilisations réelles Memento peut être utilisé dans une Session de Servlet quand une session « time-out ». L’état de l’application est sauvegardé à l’aide d’un Memento et reconstruit quand l’utilisateur accède au site plus tard. Pour sauvegardé les dimension d’une fenêtre dans des applications qui permette une vue pleine-écran ou dans une fenêtre. Pour implémenter la fonction de Undo dans plusieurs applications. Utilisé dans des transactions de base de données

Références http://dept-info.labri.fr/~baudon/Master/ArchiLog/Cours.ppt.pdf http://www.dofactory.com/Patterns/PatternMemento.aspx http://www.cs.unb.ca/profs/wdu/cs4015w02/ch5f.htm