SlideShare une entreprise Scribd logo
DDeessiiggnn PPaatttteerrnnss 
PPaarrtt 44 
Mohamed Youssfi 
Laboratoire Signaux Systèmes Distribués et Intelligence Artificielle (SSDIA) 
ENSET, Université Hassan II Casablanca, Maroc 
Email : med@youssfi.net 
Supports de cours : http://fr.slideshare.net/mohamedyoussfi9 
Chaîne vidéo : http://youtube.com/mohamedYoussfi 
Recherche : http://www.researchgate.net/profile/Youssfi_Mohamed/publications 
med@youssfi.net
PPaatttteerrnn CCoommppoossiittee
PPaatttteerrnn CCoommppoossiittee 
 Catégorie : 
◦ Structure 
 Objectif du pattern Décorateur 
◦ Organiser les objets en structure arborescente afin de 
rreepprréésseenntteerr uunnee hhiiéérraarrcchhiiee.. 
◦ Permettre à la partie cliente de manipuler un objet 
unique et un objet composé de la même manière. 
 Résultat : 
◦ Le Design Pattern permet d'isoler 
l'appartenance à un agrégat. 
med@youssfi.net
DDiiaaggrraammmmee ddee ccllaasssseess 
med@youssfi.net
RRaaiissoonn dd’’uuttiilliissaattiioonn 
 Le système comporte une hiérarchie avec un nombre 
de niveaux non déterminé. 
 Il est nécessaire de pouvoir considérer un groupe 
d'éléments comme un élément unique. 
 Cela peut être le cas des éléments graphiques d'un 
llooggiicciieell ddee DDAAOO.. PPlluussiieeuurrss éélléémmeennttss ggrraapphhiiqquueess ppeeuuvveenntt 
être regroupés en un nouvel élément graphique. 
 Chaque élément est un composant potentiel. En plus 
des éléments classiques, il y a un élément composite qui 
peut être composés de plusieurs composants. 
 Comme l'élément composite est un composant 
potentiel, il peut être composé d'autres éléments 
composites. 
med@youssfi.net
RReessppoonnssaabbiilliittééss 
 Composant : 
◦ Définit l'interface d'un objet pouvant être un composant d'un 
autre objet de l'arborescence. 
 Element : 
◦ implémente un objet de l'arborescence n'ayant pas d'objet le 
ccoommppoossaanntt.. 
 Composite : 
◦ implémente un objet de l'arborescence ayant un ou des objets le 
composant. 
 La partie client manipule les objets par l'interface 
Composant. 
med@youssfi.net
IImmpplléémmeennttaattiioonn 
public abstract class Composant { 
protected String nom; 
protected int level; 
public Composant(String nom) { 
this.nom = nom; 
} 
public abstract void operation(); 
} 
/* Composant.java */ 
public class Element extends Composant { 
public Element(String nom) { super(nom); } 
@Override 
public void operation() { 
String tab=; for(int i=0;ilevel;i++) tab+=--; 
System.out.println(tab+Opération sur l'élément (+nom+)); 
med@youssfi.net 
} 
} 
/* Element.java */
IImmpplléémmeennttaattiioonn 
/* Composite.java */ 
import java.util.ArrayList; import java.util.List; 
public class Composite extends Composant { 
private ListComposant composants=new ArrayListComposant(); 
public Composite(String nom) { super(nom); } 
@Override 
public void operation() { 
String tab=; for(int i=0;ilevel;i++) tab+=--; 
System.out.println(tab+Opération sur un composite(+nom+)); 
for(Composant composant:composants) 
composant.operation(); 
} 
public void add(Composant composant){ 
composant.level=this.level+1; composants.add(composant); 
} 
public void remove(Composant composant){ composants.remove(composant); } 
public ListComposant getChilds(){ return composants; } 
} 
med@youssfi.net
IImmpplléémmeennttaattiioonn 
/* Application.java */ :Composite 
public class Application { 
public static void main(String[] args) { 
Composite racine=new Composite(Composite 1); 
Composite composite2=new Composite(Composite 2); 
racine.add(composite2); 
racine.add(new Element(Elément 11)); 
racine.add(new Element(Elément 12)); 
racine.add(new Element(Elément 13)); 
composite2.add(new Element(Elément 21)); 
nom=composite l 
level= 0 
:Composite 
nom=composite 2 
level= 1 
:Element 
nom=Elément 21 
level= 2 
:Element 
nom=Elément 22 
composite2.add(new Element(Elément 22)); 
racine.operation(); 
}} 
med@youssfi.net 
level= 2 
:Element 
nom=Elément 11 
level= 1 
:Element 
nom=Elément 12 
level= 1 
:Element 
nom=Elément 13 
level= 1 
Opération sur un composite(Composite 1) 
-- Opération sur un composite(Composite 2) 
---- Opération sur l'élément (Elément 21) 
---- Opération sur l'élément (Elément 22) 
-- Opération sur l'élément (Elément 11) 
-- Opération sur l'élément (Elément 12) 
-- Opération sur l'élément (Elément 13)

Contenu connexe

Tendances

Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
ENSET, Université Hassan II Casablanca
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
ENSET, Université Hassan II Casablanca
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
ENSET, Université Hassan II Casablanca
 
Cours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observerCours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observer
ENSET, Université Hassan II Casablanca
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
ENSET, Université Hassan II Casablanca
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
ENSET, Université Hassan II Casablanca
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introduction
neuros
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
ENSET, Université Hassan II Casablanca
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
ENSET, Université Hassan II Casablanca
 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
ENSET, Université Hassan II Casablanca
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
ENSET, Université Hassan II Casablanca
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
Antoine Rey
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
ENSET, Université Hassan II Casablanca
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
ENSET, Université Hassan II Casablanca
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
ENSET, Université Hassan II Casablanca
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
ENSET, Université Hassan II Casablanca
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
ENSET, Université Hassan II Casablanca
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
ENSET, Université Hassan II Casablanca
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
ENSET, Université Hassan II Casablanca
 
Mise en oeuvre des framework de machines et deep learning v1
Mise en oeuvre des framework de machines et deep learning v1 Mise en oeuvre des framework de machines et deep learning v1
Mise en oeuvre des framework de machines et deep learning v1
ENSET, Université Hassan II Casablanca
 

Tendances (20)

Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
Support POO Java Deuxième Partie
Support POO Java Deuxième PartieSupport POO Java Deuxième Partie
Support POO Java Deuxième Partie
 
Cours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observerCours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observer
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introduction
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
Support de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfiSupport de cours entrepise java beans ejb m.youssfi
Support de cours entrepise java beans ejb m.youssfi
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Mise en oeuvre des framework de machines et deep learning v1
Mise en oeuvre des framework de machines et deep learning v1 Mise en oeuvre des framework de machines et deep learning v1
Mise en oeuvre des framework de machines et deep learning v1
 

Similaire à Cours design pattern m youssfi partie 4 composite

POO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdfPOO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdf
YasushiTsubakik
 
Multithreading
MultithreadingMultithreading
Multithreading
Ghazouani Mahdi
 
Les Activités.pdf
Les Activités.pdfLes Activités.pdf
Les Activités.pdf
RihabBENLAMINE
 
Applications Android - cours 12 : Persistance de données SQLite
Applications Android - cours 12 : Persistance de données SQLiteApplications Android - cours 12 : Persistance de données SQLite
Applications Android - cours 12 : Persistance de données SQLite
Ahmed-Chawki Chaouche
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?
Fou Cha
 
POO
POOPOO
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulation
ECAM Brussels Engineering School
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
Hugo Hamon
 
POO-chapitre3.pptx
POO-chapitre3.pptxPOO-chapitre3.pptx
POO-chapitre3.pptx
ImaneLoukili7
 
Utilisation de ZK avec Java - Retour d’expérience
Utilisation de ZK avec Java - Retour d’expérienceUtilisation de ZK avec Java - Retour d’expérience
Utilisation de ZK avec Java - Retour d’expérience
louschwartz
 
Poo vb.net
Poo vb.netPoo vb.net
Poo vb.net
Dimitri LEMBOKOLO
 
Intro ihm
Intro ihmIntro ihm
Applications Android - cours 6 : Structure d’un projet Android
Applications Android - cours 6 :  Structure d’un projet AndroidApplications Android - cours 6 :  Structure d’un projet Android
Applications Android - cours 6 : Structure d’un projet Android
Ahmed-Chawki Chaouche
 
Tableau objetjava
Tableau objetjavaTableau objetjava
Tableau objetjava
Moez Moezm
 
Vos fixtures en 30 sec avec loopback fixtures
Vos fixtures en 30 sec avec loopback fixturesVos fixtures en 30 sec avec loopback fixtures
Vos fixtures en 30 sec avec loopback fixtures
Samy GHRIBI
 
Patron observer
Patron observerPatron observer
Patron observer
Hibatallah Aouadni
 
Pensez objets avec java
Pensez objets avec javaPensez objets avec java
Pensez objets avec java
Asmaa BENGUEDDACH
 
Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02
Rahma Boufalgha
 
La Programmation Orienté Objet en VB.Net
La Programmation Orienté Objet en VB.NetLa Programmation Orienté Objet en VB.Net
La Programmation Orienté Objet en VB.Net
Ali Ben Amor
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
Mehdi Mehni
 

Similaire à Cours design pattern m youssfi partie 4 composite (20)

POO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdfPOO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdf
 
Multithreading
MultithreadingMultithreading
Multithreading
 
Les Activités.pdf
Les Activités.pdfLes Activités.pdf
Les Activités.pdf
 
Applications Android - cours 12 : Persistance de données SQLite
Applications Android - cours 12 : Persistance de données SQLiteApplications Android - cours 12 : Persistance de données SQLite
Applications Android - cours 12 : Persistance de données SQLite
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?
 
POO
POOPOO
POO
 
Programmation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulationProgrammation orientée objet : Object, classe et encapsulation
Programmation orientée objet : Object, classe et encapsulation
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
 
POO-chapitre3.pptx
POO-chapitre3.pptxPOO-chapitre3.pptx
POO-chapitre3.pptx
 
Utilisation de ZK avec Java - Retour d’expérience
Utilisation de ZK avec Java - Retour d’expérienceUtilisation de ZK avec Java - Retour d’expérience
Utilisation de ZK avec Java - Retour d’expérience
 
Poo vb.net
Poo vb.netPoo vb.net
Poo vb.net
 
Intro ihm
Intro ihmIntro ihm
Intro ihm
 
Applications Android - cours 6 : Structure d’un projet Android
Applications Android - cours 6 :  Structure d’un projet AndroidApplications Android - cours 6 :  Structure d’un projet Android
Applications Android - cours 6 : Structure d’un projet Android
 
Tableau objetjava
Tableau objetjavaTableau objetjava
Tableau objetjava
 
Vos fixtures en 30 sec avec loopback fixtures
Vos fixtures en 30 sec avec loopback fixturesVos fixtures en 30 sec avec loopback fixtures
Vos fixtures en 30 sec avec loopback fixtures
 
Patron observer
Patron observerPatron observer
Patron observer
 
Pensez objets avec java
Pensez objets avec javaPensez objets avec java
Pensez objets avec java
 
Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02Memojava 100604104941-phpapp02
Memojava 100604104941-phpapp02
 
La Programmation Orienté Objet en VB.Net
La Programmation Orienté Objet en VB.NetLa Programmation Orienté Objet en VB.Net
La Programmation Orienté Objet en VB.Net
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 

Plus de ENSET, Université Hassan II Casablanca

Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFITheses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
ENSET, Université Hassan II Casablanca
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
ENSET, Université Hassan II Casablanca
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
ENSET, Université Hassan II Casablanca
 
Support distributed computing and caching avec hazelcast
Support distributed computing and caching avec hazelcastSupport distributed computing and caching avec hazelcast
Support distributed computing and caching avec hazelcast
ENSET, Université Hassan II Casablanca
 
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
ENSET, Université Hassan II Casablanca
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
ENSET, Université Hassan II Casablanca
 
Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4
ENSET, Université Hassan II Casablanca
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
ENSET, Université Hassan II Casablanca
 
Support programmation orientée objet c# .net version f8
Support programmation orientée objet c#  .net version f8Support programmation orientée objet c#  .net version f8
Support programmation orientée objet c# .net version f8
ENSET, Université Hassan II Casablanca
 
Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jadeSystèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
ENSET, Université Hassan II Casablanca
 

Plus de ENSET, Université Hassan II Casablanca (10)

Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFITheses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
Theses Soutenues sous Direction et Co-Direction du Pr YOUSSFI
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
Mise en oeuvre des Frameworks de Machines et Deep Learning pour les Applicati...
 
Support distributed computing and caching avec hazelcast
Support distributed computing and caching avec hazelcastSupport distributed computing and caching avec hazelcast
Support distributed computing and caching avec hazelcast
 
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
Conférence: Catalyseurs de l'Intelligence Artificielle et Écosystème des Fram...
 
Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)Sécurité des Applications Web avec Json Web Token (JWT)
Sécurité des Applications Web avec Json Web Token (JWT)
 
Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4Support developpement applications mobiles avec ionic v3 et v4
Support developpement applications mobiles avec ionic v3 et v4
 
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...Mohamed youssfi support architectures logicielles distribuées basées sue les ...
Mohamed youssfi support architectures logicielles distribuées basées sue les ...
 
Support programmation orientée objet c# .net version f8
Support programmation orientée objet c#  .net version f8Support programmation orientée objet c#  .net version f8
Support programmation orientée objet c# .net version f8
 
Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jadeSystèmes multi agents concepts et mise en oeuvre avec le middleware jade
Systèmes multi agents concepts et mise en oeuvre avec le middleware jade
 

Cours design pattern m youssfi partie 4 composite

  • 1. DDeessiiggnn PPaatttteerrnnss PPaarrtt 44 Mohamed Youssfi Laboratoire Signaux Systèmes Distribués et Intelligence Artificielle (SSDIA) ENSET, Université Hassan II Casablanca, Maroc Email : med@youssfi.net Supports de cours : http://fr.slideshare.net/mohamedyoussfi9 Chaîne vidéo : http://youtube.com/mohamedYoussfi Recherche : http://www.researchgate.net/profile/Youssfi_Mohamed/publications med@youssfi.net
  • 3. PPaatttteerrnn CCoommppoossiittee Catégorie : ◦ Structure Objectif du pattern Décorateur ◦ Organiser les objets en structure arborescente afin de rreepprréésseenntteerr uunnee hhiiéérraarrcchhiiee.. ◦ Permettre à la partie cliente de manipuler un objet unique et un objet composé de la même manière. Résultat : ◦ Le Design Pattern permet d'isoler l'appartenance à un agrégat. med@youssfi.net
  • 5. RRaaiissoonn dd’’uuttiilliissaattiioonn Le système comporte une hiérarchie avec un nombre de niveaux non déterminé. Il est nécessaire de pouvoir considérer un groupe d'éléments comme un élément unique. Cela peut être le cas des éléments graphiques d'un llooggiicciieell ddee DDAAOO.. PPlluussiieeuurrss éélléémmeennttss ggrraapphhiiqquueess ppeeuuvveenntt être regroupés en un nouvel élément graphique. Chaque élément est un composant potentiel. En plus des éléments classiques, il y a un élément composite qui peut être composés de plusieurs composants. Comme l'élément composite est un composant potentiel, il peut être composé d'autres éléments composites. med@youssfi.net
  • 6. RReessppoonnssaabbiilliittééss Composant : ◦ Définit l'interface d'un objet pouvant être un composant d'un autre objet de l'arborescence. Element : ◦ implémente un objet de l'arborescence n'ayant pas d'objet le ccoommppoossaanntt.. Composite : ◦ implémente un objet de l'arborescence ayant un ou des objets le composant. La partie client manipule les objets par l'interface Composant. med@youssfi.net
  • 7. IImmpplléémmeennttaattiioonn public abstract class Composant { protected String nom; protected int level; public Composant(String nom) { this.nom = nom; } public abstract void operation(); } /* Composant.java */ public class Element extends Composant { public Element(String nom) { super(nom); } @Override public void operation() { String tab=; for(int i=0;ilevel;i++) tab+=--; System.out.println(tab+Opération sur l'élément (+nom+)); med@youssfi.net } } /* Element.java */
  • 8. IImmpplléémmeennttaattiioonn /* Composite.java */ import java.util.ArrayList; import java.util.List; public class Composite extends Composant { private ListComposant composants=new ArrayListComposant(); public Composite(String nom) { super(nom); } @Override public void operation() { String tab=; for(int i=0;ilevel;i++) tab+=--; System.out.println(tab+Opération sur un composite(+nom+)); for(Composant composant:composants) composant.operation(); } public void add(Composant composant){ composant.level=this.level+1; composants.add(composant); } public void remove(Composant composant){ composants.remove(composant); } public ListComposant getChilds(){ return composants; } } med@youssfi.net
  • 9. IImmpplléémmeennttaattiioonn /* Application.java */ :Composite public class Application { public static void main(String[] args) { Composite racine=new Composite(Composite 1); Composite composite2=new Composite(Composite 2); racine.add(composite2); racine.add(new Element(Elément 11)); racine.add(new Element(Elément 12)); racine.add(new Element(Elément 13)); composite2.add(new Element(Elément 21)); nom=composite l level= 0 :Composite nom=composite 2 level= 1 :Element nom=Elément 21 level= 2 :Element nom=Elément 22 composite2.add(new Element(Elément 22)); racine.operation(); }} med@youssfi.net level= 2 :Element nom=Elément 11 level= 1 :Element nom=Elément 12 level= 1 :Element nom=Elément 13 level= 1 Opération sur un composite(Composite 1) -- Opération sur un composite(Composite 2) ---- Opération sur l'élément (Elément 21) ---- Opération sur l'élément (Elément 22) -- Opération sur l'élément (Elément 11) -- Opération sur l'élément (Elément 12) -- Opération sur l'élément (Elément 13)