POURQUOI CE BLOG, POUR QUI ?


POURQUOI CE BLOG, POUR QUI ?
Ce Blog s'adresse à tous ceux qui sont passionnés par les sciences informatiques , Professionnels,Etudiants,Amateurs ...
Les sujets exposés dans la suite se rapporteront essentiellement sur l'analyse informatique,la programmation,le développement ainsi que à l'architecture IT.
QUI SUIS JE ?
Je suis Kangulungu Lubilanji, Consultant-Freelance sur les technologies .NET,C#,ASP.NET ... Contactez moi pour plus d'informations.

Design pattern : 12.Le Pattern Composite

12.Le Pattern Composite
Description:
Le but de pattern Composite est d'offrir un cadre de conception d'une composition d'objets dont la profondeur est variable, cette conception étant basée sur un arbre.

Par ailleurs, cette composition est encapsulée vis-à-vis des clients des objets qui peuvent interagir sans devoir connaître la profondeur de la conception.
Exemple:
Dans un système en arbre où il y a des composants enfants réunis et rattachés à un composant porteur ou mère,chaque composant enfant peut se composer lui même comme  composant mère ainsi de suite. 
But:
Le but de pattern Composite est d'offrir un cadre de conception d'une composition d'objets dont la profondeur est variable, cette conception étant basée sur un arbre
Solution:
Le pattern Composite unifie l'interface des deux types de société en utilisant la composition récursive. Cette composition récursive est nécessaire car un composant enfant  peut posséder des enfants qui possèdent elles-mêmes d'autres enfants. Il s'agit d'une composition en arbre. 
Avantages:
La structure de l'application est moins complexe.
Diagramme de classes:
Le pattern Composite en détails

La classe astraite ClassAbstrait détient l'interface destinée aux client. Elle possède deux sous-classes concrètes à savoir ClassEnfantConcretSsEnfant et ClassEnfantConcretAvEnfant cette dernière détenant une association d'agrégation avec la classe ClassAbstrait  représentant les liens avec ses enfants.
La classe ClassAbstrait  possède trois méthodes publiques dont une seule est concrète et les deux autres sont abstraites. La méthode concrète est la méthode  Operation1() qui ne dépend pas de la composition en enfant de la classe ClasseAbstrait . Quand aux deux autres méthodes, elles sont implantées dans les sous-classes concrètes (ajouteEnfant() ne possède qu'une implantation vide dans ClassEnfantConcretSsEnfant donc elle n'est pas représentée dans le diagramme de classes).

La structure générique du pattern Composite 

Participants:
- Composant est la classe abstraite qui introduit l'interface des objets de la composition, implante les méthodes communes et introduit la signature des méthodes qui gèrent la composition en ajoutant ou en supprimant des composants
- Feuille est la classe concrète qui décrit les feuilles de la composition (une feuille ne possède pas de composant);
- Composé est la classe concrète qui décrit les objets composés de la hiérarchie. Cette classe possède une association d'agrégation avec la classe Composant;
- Client est la classe des objets qui accèdent aux objets de la composition et qui les manipulent.
Collaborations:
Les clients envoient leurs requêtes aux composants au travers de l'interface de la classe Composant.

Lorsqu'un composant reçoit une requête, il réagit en fonction de sa classe. Si le composant est une feuille, il traite la requête comme illustré ci-dessous :
Traitement d'un message par une feuille

Si le composant est une instance de la classe Composé, il effectue un traitement préalable puis généralement envoie un message à chacun de ses composants puis effectue un traitement postérieur. La figure suivante illustre ce cas avec l'appel récursif à d'autres composants qui vont, à leur tour, traiter cet appel soit comme feuille, soit comme composé.
Traitement d'un message par un composé

Domaines d'utilisation:
- Il est nécessaire de représenter au sein d'un système des hiérarchies de composition;
- Les clients d'une composition doivent ignorer s'ils communiquent avec des objets composés ou non.

Aucun commentaire: