Les aspects pour la ralisation de patrons de conception - PowerPoint PPT Presentation

1 / 24
About This Presentation
Title:

Les aspects pour la ralisation de patrons de conception

Description:

Exemple de r alisation de patrons de concepetion en AspectJ : Visiteur ... D finir les introductions ajoutant tous les comportements voulus au sein d'un aspect visiteur unique ... – PowerPoint PPT presentation

Number of Views:149
Avg rating:3.0/5.0
Slides: 25
Provided by: hass93
Category:

less

Transcript and Presenter's Notes

Title: Les aspects pour la ralisation de patrons de conception


1
Les aspects pour la réalisation de patrons de
conception
  • O. Hachani, D. Bardou
  • Ouafa.Hachani_at_imag.fr

LSR-IMAG, Grenoble Equipe SIGMA http//www-lsr.i
mag.fr/sigma.html
Systèmes à composants adaptables et extensibles
Grenoble, 17 octobre
2002
2
Plan
  • Introduction
  • Problèmes dutilisation des patrons de conception
    par objets
  • Programmation par aspects et AspectJ
  • Exemple de réalisation de patrons de concepetion
    en AspectJ Visiteur
  • Conclusion et perspectives

3
I
Introduction
4
Introduction
  • Les patrons de conception par objets sont très
    utiles dans la conception dune application ou
    dun composant
  • Modèles de conception réutilisables
  • Offrent des possibilités très intéressantes, en
    particulier, pour ladaptation, lévolution et la
    réutilisation logicielles
  • Ils sont le plus souvent définis comme des
    collaborations entre plusieurs classes
     enchevêtrement et dispersion de leur
    implantation
  • ? Difficilement localisés dans le
    code final
  • ? Plusieurs problèmes dutilisation
  • Utiliser la programmation par aspects (ou PPA)
  • Les aspects peuvent être utilisés pour
    implanter les patrons de conception par objets
    tout en évitant les problèmes de dispersion et
    denchevêtrement

5
II
Problèmes dutilisation des patrons de conception
par objets
6
Patron Visiteur
Client
StructureDObjets
7
Exemple dimitation du patron Visiteur
8
Problème de confusion
  • Enchevêtrement du code ? Code non lisible
  • ? Réutilisation réduite

9
Problème dindirection
  • Augmentation du nombre de communications entre
    objets ? Code non lisible
  • Introduction de dépendances entre les classes
    dobjets ? évolution réduite
  • ? Réutilisation réduite

VisiteurCoût visiteDisquette (Disquette)
visiteBoîtier (Boîtier)
10
Rupture dencapsulation
  • Besoin daccéder à des ressources (attribut ou
    opération) privées dautres types ? couplage
    augmenté

v.visiteDisquette (this)
11
Problèmes liés à lhéritage
  • Introduction de dépendances entre les classes de
    lapplication et leurs patrons de conception
  • ? Réutilisation séparée réduite
  • Problèmes techniques dimitation lorsque le
    langage de programmation nintégre pas
    lhéritage multiple

12
Importance des problèmes relevés
13
III
Programmation par aspects et AspectJ
14
Programmation par aspects
  • Tissage daspects recomposition des aspects et
    composants pour produire le code final de
    lapplication

15
AspectJ
  • Extension de Java pour la programmation par
    aspects
  • Concepts fondamentaux dAspectJ
  • Point de jonction (Join point)
  • Point de recouvrement (Pointcut)
  • Perfectionnement (Advice)
  • Introduction
  • Déclaration dhéritage (declare parents)
  • Compilateur java et tisseur daspects intégré

16
Point de jonction
Point bien défini dans le flot dexécution des
composants
int X
17
IV
Exemple de réalisation de patrons de conception
par AspectJ
18
Patron Visiteur par aspects
19
Exemple dimitation
20
Squelette du code de laspect VisiteurCoût
Chaque classe déquipement possède une opération
calculCoût( )
privileged aspect VisiteurCoût //
Introduction de lopération calculCoût dans les
classes Equipement et EquipementComposite
public abstract Monnaie (EquipementEquipementCom
posite).calculCoût() // Introduction de
lopération calculCoût dans la classe Disquette
public Monnaie Disquette.calculCoût() return
(this.prixHT0.95) // et ainsi de suite
pour tous les équipements feuilles //
Introduction de lopération calculCoût à
lensemble des équipements composite concrets
public Monnaie (ChassisBusBoîtier).calcul
Coût() Monnaie coûtTotal 0
for (int i0 iltthis.taille I)
coûtTotal((Equipement) this.composants.elementAt
(i)).calculCoût() return coûtTotal

Une implantation définie et exécutée dans le
contexte de la classe déquipement elle-même.
Une implantation définie et exécutée dans le
contexte de la classe déquipement elle-même.
Accès à un attribut privé de la classe Disquette
Accès à un attribut privé des classes
déquipements composites
21
Variantes
  • Une solution par aspects
  • Prévoir un aspect pour chaque
    comportement à ajouter
  • Dautres possibilités
  • Définir les introductions ajoutant tous les
    comportements voulus au sein dun aspect visiteur
    unique
  • Prévoir plusieurs aspects visiteurs regroupant
    des introductions correspondant à des services
    liés les uns aux autres
  • Plusieurs autres possibilités quant à
    lorganisation des aspects visiteurs (héritage
    entre aspects, aspects abstraits)

22
V
Conclusion et perspectives
23
Conclusion
  • Caractérisation de quatre problèmes liés à
    lutilisation de patrons de conception dans leur
    structure objet.
  • Des implantations par aspects des patrons
  • Visiteur introduction
  • Adaptateur déclaration dhéritage et
    introduction
  • Stratégie point de jonction et de recouvrement,
    perfectionnement et introduction
  • Observateur point de jonction et de
    recouvrement, perfectionnement, déclaration
    dhéritage, introduction, aspect abstrait et
    héritage entre aspects
  • Décorateur.
  • Idée principale
  • Considérer le patron comme un problème dans
    un contexte et chercher de nouvelles solutions à
    base daspects

24
Perspectives
  • Considérer tous les patrons du catalogue de
    GHJ95, ainsi que dautres patrons de
    conception issus dautres travaux
  • Evaluer limplantation de patrons de conception
    en utilisant les autres mécanismes offerts par
    AspectJ (instanciation daspect, aspect pour
    objet, etc.) ainsi que par dautres techniques de
    séparation de préoccupations comme HyperJ.
Write a Comment
User Comments (0)
About PowerShow.com