Title: Les aspects pour la ralisation de patrons de conception
1Les 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
2Plan
-
- 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
3I
Introduction
4Introduction
- 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
5II
Problèmes dutilisation des patrons de conception
par objets
6Patron Visiteur
Client
StructureDObjets
7Exemple dimitation du patron Visiteur
8Problème de confusion
- Enchevêtrement du code ? Code non lisible
- ? Réutilisation réduite
9Problè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)
10Rupture dencapsulation
- Besoin daccéder à des ressources (attribut ou
opération) privées dautres types ? couplage
augmenté
v.visiteDisquette (this)
11Problè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
12Importance des problèmes relevés
13III
Programmation par aspects et AspectJ
14Programmation par aspects
- Tissage daspects recomposition des aspects et
composants pour produire le code final de
lapplication
15AspectJ
- 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é
16Point de jonction
Point bien défini dans le flot dexécution des
composants
int X
17IV
Exemple de réalisation de patrons de conception
par AspectJ
18Patron Visiteur par aspects
19Exemple 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
21Variantes
- 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)
22V
Conclusion et perspectives
23Conclusion
- 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 -
24Perspectives
- 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.