Objectif général : Prendre en main l’une des bibliothèques JavaScript les plus utilisés pour créer des interfaces utilisateurs
Objectifs spécifiques :
Découper l’interface utilisateur avec les composants;
Configurer les composants avec « props »;
Gérer l’état local d’un composant avec « state »;
Afficher une listes de composants avec map();
Afficher un composant en fonction de l’état de l’application;
Interagir avec un utilisateur grâce à la gestion des événements;
Interagir avec un utilisateur par le biais des formulaires;
Communiquer avec un serveur HTTP avec AJAX;
Afficher des vues en fonction de l’URL avec le routage;
Mettre en forme un composant;
Ce support explique les concepts de base de Big Data Processing. Elle aborde les parties suivantes :
Série de vidéos : https://www.youtube.com/watch?v=1JAljjxpm-Q
- Introduction au Big Data
- Système de stockage en Big Data
- Batch Processing et Stream Processing en Big Data
- Aperçu bref de l’écosystème de Hadoop
- Aperçu de l’écosystème des outils du Bid Gata
- Big data stream processing avec Kafka écosystème
- Architecture de Kafka (Brokers, Zookeeper, Procuder, Consumer, Kafka Streams, Connecteurs)
- Comment démarrer un cluster de brokers KAFKA
- Création et configuration des Topics
- Création d’un Java Kafka consumer
- Création d’un Java Kafka Produder
- Kafka Producer et Kafka Consumer dans une application basée sur Spring
- Kafka Streams
- Intégration de Kafka dans Spring Cloud.
Mot clés : Big data, Big Data Processing, Stream Processing, Kafka, Kafka Streams, Java, Spring
Bon apprentissage
Objectif général : Prendre en main l’une des bibliothèques JavaScript les plus utilisés pour créer des interfaces utilisateurs
Objectifs spécifiques :
Découper l’interface utilisateur avec les composants;
Configurer les composants avec « props »;
Gérer l’état local d’un composant avec « state »;
Afficher une listes de composants avec map();
Afficher un composant en fonction de l’état de l’application;
Interagir avec un utilisateur grâce à la gestion des événements;
Interagir avec un utilisateur par le biais des formulaires;
Communiquer avec un serveur HTTP avec AJAX;
Afficher des vues en fonction de l’URL avec le routage;
Mettre en forme un composant;
Ce support explique les concepts de base de Big Data Processing. Elle aborde les parties suivantes :
Série de vidéos : https://www.youtube.com/watch?v=1JAljjxpm-Q
- Introduction au Big Data
- Système de stockage en Big Data
- Batch Processing et Stream Processing en Big Data
- Aperçu bref de l’écosystème de Hadoop
- Aperçu de l’écosystème des outils du Bid Gata
- Big data stream processing avec Kafka écosystème
- Architecture de Kafka (Brokers, Zookeeper, Procuder, Consumer, Kafka Streams, Connecteurs)
- Comment démarrer un cluster de brokers KAFKA
- Création et configuration des Topics
- Création d’un Java Kafka consumer
- Création d’un Java Kafka Produder
- Kafka Producer et Kafka Consumer dans une application basée sur Spring
- Kafka Streams
- Intégration de Kafka dans Spring Cloud.
Mot clés : Big data, Big Data Processing, Stream Processing, Kafka, Kafka Streams, Java, Spring
Bon apprentissage
Ce Support de cours Spring contient :
- Architecture JEE (Over view)
- Spring Overview
- Spring IOC
- Spring MVC
- Spring Integration (RMI, JaxWS, JaxRS, JMS, JMX,...)
- Spring Security
Bon apprentissage à tous
Ce Support explique quelques concepts de base de NodeJS et montre comment mettre en oeuvre la technologie NodeJS pour développer la partie Backend d'une application.
Les vidéos des démonstrations sont publiées sur les adresse suivantes :
- https://www.youtube.com/watch?v=-X_C1tS5-9Y
- https://www.youtube.com/watch?v=rE-xRH28m0s
- https://www.youtube.com/watch?v=tnxjkTvWoKA
Cette série explique les éléments suivants :
- Architecture Web
- Modèles Multi-Threads avec les entrées sorties bloquantes
- Modèles Single Thread avec les entrées sortie non bloquantes
-Technologie Node JS
- Comment créer une simple application Node JS avec java Script
- Architecture du Framwork Express
- Comment créer une application NodeJS avec Type Script
- Comment écrire des tests unitaires avec Jest
- Quelques concepts sur MongoDb
- Comment Créer une API Rest avec NodeJS, Express et MongoDb
- Comment tester l'API Rest
- Comment Créer la partie FrontEnd avec Angular.
Même si la qualité audio n'est pas bonne, ses vidéos peuvent aider ceux qui débutent dans NodeJS en attendant d'autres vidéos avec plus qualité audio et de contenu.
Bonne lecture
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
Les ORM, c’est pratique. Mais cela peut rapidement devenir complexe ou subtile. JPA permet de rapidement modéliser la couche d’accès aux données avec une facilité indiscutable. Cependant, il est préférable de bien en comprendre le fonctionnement pour éviter quelques anti patterns fâcheux.
La formation JPA Avancé proposée par Ippon détaille les aspects techniques et permet d’aller plus loin dans la compréhension et la maîtrise. Enrichie par des TP très fournis lorsqu’elle est dispensée par les formateurs Ippon, elle permet d’assimiler en 3 jours les subtilités et offre les outils pour réaliser une couche d’accès aux données de qualité, performante et maintenable.
Techniques de modélisation, gestion et subtilités du cache (L1, L2), mécanismes transactionnels, langage de requêtage… Tous ces aspects et bien d’autres sont détaillés et illustrés afin de vous apporter les clefs pour vos prochains projets.
Découvrez dès aujourd’hui les slides de cette formation, mis à disposition dans le cadre de l’OpenFormation.
Ce support explique les concepts de bases du principe de l'inversion de contrôle et d'injections des dépendances.
Les concepts les plus importants à comprendre par les futurs ingénieurs du génie Logiciel.
Un support de cours complet sur l'architecture JEE et l'industrialisation du génie logiciel. Ce support contient les parties suivantes :
- Tendances du génie logiciel
- Architecture JEE
- Services de l'infrastructure JEE (jdbc, jndi, rmi,servlet, jsp, jstl, jsf,EJB, JaxWS, JaxRS, JMS, JMX, ....)
- Maven : Outil d'industrialisation du génie logiciel
- Junit : Test Unitaires
- Hibernate
- Spring IOC et Spring MVC
- Struts 2
Bon apprentissage à tous
Maven
Support Complet sur la technologie EJB 3.1. Ce cours Traite l'architecture JEE. Les différents types EJB (Session, Entity, MDB). Des exemple complets sont aussi présentés.
Ce Support de cours Spring contient :
- Architecture JEE (Over view)
- Spring Overview
- Spring IOC
- Spring MVC
- Spring Integration (RMI, JaxWS, JaxRS, JMS, JMX,...)
- Spring Security
Bon apprentissage à tous
Ce Support explique quelques concepts de base de NodeJS et montre comment mettre en oeuvre la technologie NodeJS pour développer la partie Backend d'une application.
Les vidéos des démonstrations sont publiées sur les adresse suivantes :
- https://www.youtube.com/watch?v=-X_C1tS5-9Y
- https://www.youtube.com/watch?v=rE-xRH28m0s
- https://www.youtube.com/watch?v=tnxjkTvWoKA
Cette série explique les éléments suivants :
- Architecture Web
- Modèles Multi-Threads avec les entrées sorties bloquantes
- Modèles Single Thread avec les entrées sortie non bloquantes
-Technologie Node JS
- Comment créer une simple application Node JS avec java Script
- Architecture du Framwork Express
- Comment créer une application NodeJS avec Type Script
- Comment écrire des tests unitaires avec Jest
- Quelques concepts sur MongoDb
- Comment Créer une API Rest avec NodeJS, Express et MongoDb
- Comment tester l'API Rest
- Comment Créer la partie FrontEnd avec Angular.
Même si la qualité audio n'est pas bonne, ses vidéos peuvent aider ceux qui débutent dans NodeJS en attendant d'autres vidéos avec plus qualité audio et de contenu.
Bonne lecture
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
Les ORM, c’est pratique. Mais cela peut rapidement devenir complexe ou subtile. JPA permet de rapidement modéliser la couche d’accès aux données avec une facilité indiscutable. Cependant, il est préférable de bien en comprendre le fonctionnement pour éviter quelques anti patterns fâcheux.
La formation JPA Avancé proposée par Ippon détaille les aspects techniques et permet d’aller plus loin dans la compréhension et la maîtrise. Enrichie par des TP très fournis lorsqu’elle est dispensée par les formateurs Ippon, elle permet d’assimiler en 3 jours les subtilités et offre les outils pour réaliser une couche d’accès aux données de qualité, performante et maintenable.
Techniques de modélisation, gestion et subtilités du cache (L1, L2), mécanismes transactionnels, langage de requêtage… Tous ces aspects et bien d’autres sont détaillés et illustrés afin de vous apporter les clefs pour vos prochains projets.
Découvrez dès aujourd’hui les slides de cette formation, mis à disposition dans le cadre de l’OpenFormation.
Ce support explique les concepts de bases du principe de l'inversion de contrôle et d'injections des dépendances.
Les concepts les plus importants à comprendre par les futurs ingénieurs du génie Logiciel.
Un support de cours complet sur l'architecture JEE et l'industrialisation du génie logiciel. Ce support contient les parties suivantes :
- Tendances du génie logiciel
- Architecture JEE
- Services de l'infrastructure JEE (jdbc, jndi, rmi,servlet, jsp, jstl, jsf,EJB, JaxWS, JaxRS, JMS, JMX, ....)
- Maven : Outil d'industrialisation du génie logiciel
- Junit : Test Unitaires
- Hibernate
- Spring IOC et Spring MVC
- Struts 2
Bon apprentissage à tous
Maven
Support Complet sur la technologie EJB 3.1. Ce cours Traite l'architecture JEE. Les différents types EJB (Session, Entity, MDB). Des exemple complets sont aussi présentés.
This presentation discusses design patterns, which are general reusable solutions to commonly occurring problems in software design. It describes several design patterns including creational patterns like factory and singleton that deal with object creation, structural patterns like adapter and proxy that deal with relationships between entities, and behavioral patterns like strategy and observer that deal with communication between objects. Specific patterns like singleton, factory, observer, strategy, and adapter are explained in more detail through their definitions and purposes.
erocci - a scalable model-driven API framework, OW2con'16, Paris. OCCIware
REST APIs are becoming the most common technology for distributed applications. When it comes to designing and implementing such APIs, the heterogeneity of technologies for designing and describing them can make integration and even development a nightmare.
erocci provides developers a simple and standard way to describe these APIs, letting best-of-breed model-driven engineering technology doing all boilerplate work for you.
erocci easily integrates with existing APIs as it follows the following standards:
* HTTP / REST
* Swagger/OpenAPI for API description
* Open Cloud Computing Interface for data model
In the presentation, we will explain the use of erocci and its extension mechanisms.
The document discusses e-governance and KPMG's role in advising and assisting governments with e-governance initiatives. It notes that e-governance can help improve transparency and efficiency in government. KPMG has extensive experience implementing e-governance projects across various domains for many government entities in India and other countries. It provides advisory services, develops strategies and roadmaps, and assists with designing and implementing e-governance systems.
The document discusses the history and current state of the OMG QVT standard for model transformations, which includes three languages: QVTo, QVTr, and QVTc. It proposes a staged approach to implementing QVT transformations through a series of intermediate languages (QVTu, QVTm, QVTi) to address issues with the declarative languages and enable execution. The Eclipse QVT projects are working to implement editors, execution engines, and debuggers for the QVT languages based on this approach.
Cours multimédia interactif intégrant le Tableau Blanc Numérique destiné aux élèves de la 4.A.E.F.
Exemple de Ressource Numérique didactique réalisé à l'aide du logiciel ActivInspire de Promethean.
Model Transformation A Personal PerspectiveEdward Willink
The document discusses model transformation from the perspective of the author's background in embedded systems and digital signal processing. It outlines the author's experience with diagrams and models from analog circuits to block diagrams to functional modeling. It then discusses the challenges of model transformation, including dealing with meta-model semantics, managing multiple meta-models, and improving transformation efficiency through techniques like combining multiple transformation passes. The document argues that achieving widespread re-usable transformations will require formalizing the relationships between meta-models and their semantics.
Collaboration and Governance of Open Source ProjectsJordi Cabot
This document discusses collaboration and governance in open source software projects. It first describes a tool called Collaboro that was developed to enable collaboration when building domain-specific languages. However, the authors note that effective collaboration requires governance. They conducted a survey that found open source contributors found governance models to be difficult to understand and that clearer models would attract more contributors. The document proposes developing a domain-specific language and decision engine to help open source projects more clearly define their governance rules to improve collaboration.
OCCIware: extensible and standard-based XaaS platform to manage everything in...OCCIware
This document discusses OCCIware, an open source platform for managing cloud resources using the Open Cloud Computing Interface (OCCI) standard. It introduces OCCIware Studio for designing, simulating, and developing cloud applications and services, and the OCCIware Runtime for deploying and managing those services. It then demonstrates OCCIware's capabilities for linked data analytics as a service using Docker Studio and a MongoDB cluster. Upcoming work on OCCIware includes improvements to Studio, integration with cloud management tools, and further use cases involving data centers, big data, and linked data.
The document discusses how OCL (Object Constraint Language) is integrated with and used for code generation in Eclipse. It covers how OCL delegates are generated for EMF models, how OCL expressions can be loaded and used in Xtext editors, and how OCL is integrated with UML and Papyrus modeling tools for validation and code generation purposes including generating Java code from UML models with OCL constraints. It notes that OCL is increasingly useful with IDE tools and model-driven code generation capabilities.
Ressource numérique Circuit électrique au primaire Erradi Mohamed
Les pages écrans de la ressource numérique "Circuit électrique" réalisée à l'aide du logiciel ActivInspire et Powepoint.
La ressource est en arabe
Réalisation: Mohamed ERRADI; F.MOQADEM; A.ABERKANE
The document describes the OCLforUML profile, which aims to address gaps between UML and OCL by providing stereotypes for specifying numeric data types, configuring validation of object diagrams, and indicating whether collections allow null elements. The profile allows for finer-grained control over numeric values and data types than standard UML, as well as enabling configuration of validation and null semantics that are currently lacking in UML.
What is an aspect in aspect oriented requirements engineeringmeriem sari
1) The document discusses the definition of an "aspect" in aspect-oriented requirements engineering (AORE) and its relationship to aspects in aspect-oriented programming (AOP).
2) Initially, an aspect was ambiguously defined as either a crosscutting concern itself or a way to deal with crosscutting concerns.
3) The paper argues that an aspect is better defined as a mechanism for dealing with crosscutting concerns, not as a synonym for crosscutting concern.
Structural features for face recognitionmeriem sari
1) The document discusses two articles on facial recognition techniques. The first article compares a geometric feature-based approach to a template matching approach, finding recognition rates of 90% and 100% respectively. The second article compares geometric features and Gabor wavelet features, finding Gabor wavelets more powerful with recognition rates of 92.2% versus 73.3% for geometric features alone.
2) Both articles extract and analyze features from faces for recognition. The first compares positioning of facial features to whole face templates. The second analyzes geometric points versus Gabor wavelet coefficients through a multi-layer perceptron architecture.
3) Gabor wavelets were found to outperform geometric features for facial expression recognition in the second
REST Web Service
The document discusses REST (Representational State Transfer), which is an architectural style for providing standards for building web services. It introduces REST, describing that everything is considered a resource with a unique URI. Resources are manipulated through POST, GET, PUT, DELETE operations similar to CRUD. REST uses uniform interfaces and resources are transferred over HTTP. The document provides an example of creating a RESTful web service in Java using Jersey that returns "Hello World" when accessed.
Qt is a cross-platform application framework for building graphical user interfaces. It provides tools to develop applications that work on multiple desktop and mobile operating systems. Qt uses C++ and offers APIs for developing applications with classic or QML-based user interfaces. It includes modules for GUI, widgets, networking, multimedia, and more. Popular Qt tools include Qt Creator for development, Qt Designer for layouts, and Qt Linguist for translations. Qt sees wide use for applications across domains like embedded systems, mobile apps, and desktop programs.
The document discusses design patterns and summarizes three behavioral patterns:
1. The State pattern encapsulates varying behavior for the same object based on its internal state. It uses state objects to represent different states.
2. The Strategy pattern defines a family of algorithms, puts each of them in a separate class, and makes their objects interchangeable. This allows selecting an algorithm at runtime.
3. The Visitor pattern represents an operation performed on elements of an object structure. It separates the algorithms from the structure on which they operate and allows adding new operations without changing classes.
CVL (Common Variability Language) is a domain-independent language for specifying and resolving variability in product line engineering. It defines three models: a base model describing a system, a variability model defining variations on the base model using variability specifications (VSpecs), and a resolution model defining how to resolve the variability to create product models from the base model. The CVL architecture separates the logical specification of variability from the realization of variations on the base model through variation points. Configurable units provide reusable components that expose configurable variability interfaces.
Dans un contexte où la transmission et l'installation d'agriculteurs sont des enjeux cruciaux pour la profession agricole, de nouveaux agriculteurs s'installent chaque année et, parmi eux, certains Bac+5 ou plus. Les cursus des écoles d'ingénieurs n'ont pas vocation à former de futurs agriculteurs. Pourtant, certains apprenants ayant suivi ces cursus BAC + 5, qu'ils soient ou non issus du milieu agricole, tentent l'aventure de l'entrepreneuriat agricole. Qui sont-ils ? Quelles sont leurs motivations et visions ? Comment travaillent-ils ?
Si la baisse de la productivité est effective dans toutes les économies développées... elle est particulièrement marquée en France. Au niveau national, cet essoufflement touche tous les secteurs, et plus particulièrement celui de l’industrie, usuellement caractérisé par des gains de productivité élevés. Depuis la crise Covid, le secteur industriel contribue pour 35 % environ à cette perte, alors qu’il ne représente que 9,3 % de la valeur ajoutée nationale brute en 2023. Dans ce contexte, est-il possible de mener une politique de réindustrialisation du pays sans y associer un objectif de hausse des gains de productivité ?Non rappelle ce Cube. Au contraire, ces deux objectifs, jusqu’alors indépendants l’un de l’autre, sont désormais deux défis à relever conjointement. En analysant les différents explications à la baisse de celle-ci observée en France et dans les autres économies développées, ce Cube suggère que l’augmenter en parallèle d’une politique de réindustrialisation sous-entend une réallocation des facteurs de production vers les entreprises industrielles à fort potentiel. Elle suppose également une une meilleure affectation des ressources.
Productivité et politique industrielles: deux défis à relever conjointement
Design patterns french
1. Design Patterns
Par: Sari Meriem
1
UNIVERSITE de MOHAMED CHERIF MESAADIA
SOUK-AHRAS
Département de Math & Informatique
Exposé sur:
2. Motivation
2Meriem Sari GL à Objet 2 2eme AM GL
Concevoir un logiciel en OO est difficle.
Concevoir un logiciel réutilisable en OO est plus difficile.
Difficile de trouver les objets et les rassembler selon le bon
niveau de granularité.
Difficile de définir les classes, les interfaces et les relations
d’héritage entre eux.
Difficile d’établir les relations entre les classes.
La conception doit être spécifique à un problem mais suffisament
générale pour résoudre des future problèmes.
3. Motivation
3
Les concepteurs Expèrts réutilise des solutions éxistantes pour
résoudre des nouveaux problèmes.
ça cause la Réoccurance des patrons de classes et des différent
objets en communication dans plusieurs systèmes.
L’application de ces patrons nous produise un logiciel fléxible,
élégant et finalement réutilisable.
Meriem Sari GL à Objet 2 2eme AM GL
4. Historique
4
Dans cette présentation on va considéré les patrons de conception
publié dans le livre: «Design Patterns - Elements of Reusable
Object-Oriented Software» par le GOF.
Meriem Sari GL à Objet 2 2eme AM GL
6. Plan
6Meriem Sari GL à Objet 2 2eme AM GL
Définition.
Classification.
State Design Pattern.
Strategy Design Pattern.
Visitor Design Pattern.
7. Définition
7
Selon Christopher Alexander:
Un patrons décrit un problème qui se produit plusieurs fois.
Il décrit le noyau de la solution à ce problème.
Cette solution peut être utilisé un million de fois, sans jamais la
faire de la même manière deux fois.
Meriem Sari GL à Objet 2 2eme AM GL
8. Définition
8
Chaque patron a quatre éléments basiques:
Le nom du patron: il décrit le problème dont ce patron résout pour
faciliter la documentation et la communication entre les concepteurs et les
developpeurs.
Le problème: décrit quand on doit appliquer ce patron.
La solution: décrit l’arrangement générale des éléments (classes et
objets ) qui résout le problème.
Les conséquences: décrit les résultats d’appliquer ce patron dont le
but est d’évaluer ses alternatives , les coûts et les benefices de son
application.
Meriem Sari GL à Objet 2 2eme AM GL
9. Classification
9
Les patrons de conception se diffèrent dans leurs granularité et
niveau d’abstraction.
Ils sont classifié selon deux critères:
Par but i.e. que fait le patron.
Patrons de Création: concerne le processe de création des objets.
Patrons de Structure: manipule la composition des classes ou objets.
Patrons de Comportement: s’occupe de la façon comment les classes
et les objets s’interagissent .
Par scope i.e. est. ce que ce patron s’applique sur des classes ou
des objets.
Meriem Sari GL à Objet 2 2eme AM GL
11. Design Patterns
11
Dans cette présentation on va abbordé trois patrons de
comportement qui sont:
State design pattern.
Strategy design pattern.
Visitor design pattern.
Meriem Sari GL à Objet 2 2eme AM GL
13. Définition
13
Connu comme : Objects for States.
Le comportement d’un objet dépend de son état.
Permet à un objet de changer son comportement quand son état
interne se change.
Ce changement se fait lors de l’éxécution.
Encapsule les différent comportements d’un meme objet basé sur
ses états.
Meriem Sari GL à Objet 2 2eme AM GL
14. Objectif
14
Minimise l’utilisation des branchements conditionels qui résulte le
changement d’état d’un objet.
Met chaque branche d’une instruction conditionelle dans une
classe séparée .
Il nous permet de traiter les états d’un objet comme des objets
indépendents des autres objets.
Meriem Sari GL à Objet 2 2eme AM GL
16. Structure (2)
16
Context: définit l’interface d’intérét pour le client .
State: définit l’interface pour encapsuler le comportement associé à un
état particulié de l’objet Context.
Concrete State Subclass: chaque sous classe implemente un
comportement associé à un état de l’objet Context.
Meriem Sari GL à Objet 2 2eme AM GL
17. Conséquences
17
Le State pattern met tout les comportements associés à un état
particulié dans un seul objet.
Quand un objet definit son état courrant de façcon interne, son
transition d’état a aucune représentation éxplicite.
Les objets State peuvent etre partagé entre des objets Contexts
(Flyweight).
Meriem Sari GL à Objet 2 2eme AM GL
21. Strategy Pattern
21Meriem Sari GL à Objet 2 2eme AM GL
Définition.
Objectif.
Structure.
Conséquences.
Exemple.
22. Définition
22Meriem Sari GL à Objet 2 2eme AM GL
Connu comme: Policy pattern.
Permet au comportement d'un algorithme d'être choisi au temps
d'exécution.
Change l’algorithme en éxécution de l’objet Contexte.
Laisse l'algorithme change indépendamment des clients qui
l‘éxécute.
Definit une famille d’algorithmes et encapsule chaqu’une.
Permet au algorithmes d’être interchangeable entre les familles.
23. Objectif
23Meriem Sari GL à Objet 2 2eme AM GL
Configurer beaucoup de classes relatives qui diffèrent seulement
dans leur comportement.
Très utile dans les algorithmes basé sur la validation des données.
Type de données.
La source de données.
Le choix de l’utilisateur…
Utilisé par d’autres objets dans le meme système ou dans des
systèmes differents sans dupliqué le code.
25. Structure (2)
25Meriem Sari GL à Objet 2 2eme AM GL
Context : maintient une référence sur l’objet Strategy et se manipule à
l’aide d’un objet ConcreteStrategy.
Strategy: déclare une intérface commune pour tout les algorithmes
supportés.
ConcreteStrategy: implémente l’algorithme en utilisant l’intérface
Strategy.
26. Conséquences
26Meriem Sari GL à Objet 2 2eme AM GL
L’encapsulation de tout les comportements dans une seule classe
rendre difficile d’éviter les branchements conditionels.
Elimine l’utilisation des branchements conditionels.
Fournit des differentes implémentations pour un meme
comportement.
Augmente le nombre des objets dans une application.
30. Visitor Pattern
30Meriem Sari GL à Objet 2 2eme AM GL
Définition.
Objectif.
Structure.
Conséquences.
Exemple.
31. Définition
31Meriem Sari GL à Objet 2 2eme AM GL
Représente une opération faite sur les éléments de structure de
l’object.
Permet l’ajout des nouvelles opérations sans changer la structure
de l’objet.
Sépare l’algorithme de la structure de l’objet sur lequel il
s’éxécute.
Permet l’ajout des nouvelles fonctions virtuelles dans une classe
sans la modifier.
Il respécte le principe ouvert/fermé .
32. Objectif
32Meriem Sari GL à Objet 2 2eme AM GL
Considérer un compilateur qui représente les programmes sous
forme d’un arbre syntaxique.
On a besoin d’éxécuter des opérations sur ces arbres (configurer
les noeuds).
Compiler + Configurer = un système difficile à comprendre
(complexe).
Le Visitor design pattern nous permet de configurer les arbre sans
polluer le code source du programme originale qui est le
compilateur.
34. Structure (2)
34Meriem Sari GL à Objet 2 2eme AM GL
Visitor: déclare une opération de Visit pour chaque classe de
ConcreteElement .
le nom et la signature de l’opération identifis la classe qui envoie la
demande de Visit au visitor.
ConcreteVisitor: implemente chaque opération déclaré par Visitor.
Element: definit une opération Accept qui prend en argument un
visitor.
ConcreteElement: implemente une opération Accept qui prend en
argument un visitor.
35. Structure (3)
35Meriem Sari GL à Objet 2 2eme AM GL
Considérer deux objets: un « élément" et un "visitor".
un élément a une méthode accept() qui prend le visitor comme un
argument.
La méthode accept() appèlle la méthode visit() de visitor.
L’élément lui meme se passe en argument à la méthode visit() .
41. Conclusion
41
Si nous n'étudions pas les patrons de conception au niveau de la
programmation OO, nous ne pourrons pas améliorer les logiciel, et il
sera plus difficile de les concevoir et réaliser.
Meriem Sari GL à Objet 2 2eme AM GL