Download presentation
Presentation is loading. Please wait.
Published byEthan O'Leary Modified over 11 years ago
1
Parametric Aspects. A way to design-pattern implementation (...and others)? Jordi Alvarez Open University of Catalonia Barcelona - Spain jalvarezc@uoc.edu
2
Certain problems cannot be adequately solved with OO+AOP Example 1: Some design patterns in GoF can be implemented in an abstract way using AOP, but others not. Example 2: For some problems (like EJB development) we still need to provide a lot of redundant code. Motivation
3
Goal: provide aspect language extensions that allow to provide reusable implementations with no redundant code for a broader range of problems than that provided nowadays by OO+AOP. (Our) Solution Adapt parametric-type ideas to separation of concerns. This should be done in a very flexible way and allow powerful results!
4
Example domain 1: Design Patterns. OO solution Alternatives a) Automatic code-generation b) Reusable pattern implementation Design patterns Problem domain Program pattern code domain code
5
Design patterns problem domain pattern code domain code Pattern application domain code Pattern library abstract patterns concrete aspects Reusable pattern implementation (Hannemann&Kiczales)
6
Code reuse: design patterns are implemented only once Pattern-code isolated from domain code (untangling) Pattern code unscattered Reusable implementation of design patterns: advantatges OO developmentAOP development pattern implementation pattern code domain code
7
Works on design pattern implementation Hannemann & Kickzales Hachani & Bardou Noda & Kishi - Study from 23 GoF patterns. - Remove dependencies between participants and patterns. - Implements 12 of them in a completely reusable way. - Implement Visitor and Strategy [GoF]. - Implement directly as an application. - Implement Observer, Composite and Adapter. - Code reuse.
8
Problematic patterns Creational Low level Too abstract Goal: provide (aspect) language extensions that allow us to board some of these patterns. Creation is related to the nature of the created entity. Correctly implemented without aspects. - Describe design structure. - It is complex to provide an implementation for them without taking into account the concrete application domain.
9
Parametric Aspects Proposal: add parametric-type ideas to AOP Detailed specification of patterns. Parameterized/template classes Patterns Parametric aspects Parameterized/template methods Parameterized/template expressions -Sets of classes (new role type) -Class generation from roles -Allowing also multiple class generation -Method generation from roles -Allowing also multiple role generation -Compile-time evaluable -Should allow class hierarchy traversal Name composition.
10
Abstract Factory Pattern
11
Abstract Factory applied to GUI components
12
Abstract Factory applied to GUI components : detailed role specification AbstractFactory ConcreteFactory AbstractProduct ConcreteProduct ProductSet
13
class { … } Class generation from roles abstract class ComponentFactory { … } aspect ComponentFactoryPattern extends FactoryPattern { class ComponentFactory plays AbstractFactory;... } Parameterized/template classes
14
class Factory extends { … } Parameterized/template classes Multiple generation of classes aspect ComponentFactoryP ext. FP {... class-set A plays ProductSet {... } class-set B plays ProductSet {... } } class AFactory extends ComponentFactory { … } class BFactory extends ComponentFactory { … } ProductSet=BProductSet=A
15
Method generation from roles / Multiple generation of roles class { public abstract create (); } abstract class CompFact { public abstract Window createWindow(); public abstract ScrollBar createScrollBar(); public abstract Button createButton(); } aspect ComponentFactoryPattern extends FactoryPattern { class ComponentFactory plays AbstractFactory; class Window plays AbstractProduct; class ScrollBar plays AbstractProduct; class Button plays AbstractProduct;... } Parameterized/template methods
16
Evaluable at compile-time Should allow class hierarchy traversal class Factory extends { public … create () { return new <subclasses(AbstractProduct) & members(ProductSet)>(); } class AFactory … { … return new AWindow(); … return new AScrollBar(); … return new AButton(); } class BFactory … { … return new AWindow(); … return new AScrollBar(); … return new AButton(); } aspect ComponentFactoryPattern extends FP { class Window plays AbstractProduct; class ScrollBar plays AbstractProduct; class Button plays AbstractProduct; class-set A plays ProductSet { AWindow, AScrollBar, AButton; } class-set B plays ProductSet {... } } Parameterized/template expressions
17
<subclasses(AbstractProduct) & members(ProductSet)> class AFactory … { … return new AWindow(); … return new AScrollBar(); … return new AButton(); } Class BFactory … { … return new AWindow(); … return new AScrollBar(); … return new AButton(); } Window A Parameterized/template expressions
18
What are we conceptually doing? Object Oriented (OO) hierarchical definition of behavior Aspect Oriented (AOP) Injects/intercepts code modifying the structure AOP + parametric aspects Injects/intercepts code modifying the structure Generates code based on the structure
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.