You are on page 1of 18

Programacin Orientada a Aspectos (POA)

Jess Enrique Villalobos Jimnez Pedro Antonio Gmez Snchez

ndice
1. 2. 3. 4. 5. 6. 7. Introduccin Qu es un aspecto? Fundamentos de la POA Tejiendo Clases y Aspectos Tendencias en los Lenguajes de Aspectos Ejemplo Los Aspectos en la Etapa de Diseo

Introduccin
Historia de la programacin:
1 generacin:

Cdigo Espaghetti

Introduccin
Historia de la programacin:
1 generacin:

Cdigo Espaghetti 2 y 3 generacin: Descomposicin funcional

Introduccin
Historia de la programacin:
1 generacin:

Cdigo Espaghetti 2 y 3 generacin: Descomposicin funcional 4 generacin: Descomposicin en objetos

Introduccin
Historia de la programacin:
5 generacin?: Descomposicin en Aspectos

Introduccin
Ventajas de la POA:
Cdigo menos enmaraado, ms natural y reducido Facilidad para razonar sobre las materias Facilidad para depurar y modificar cdigo Impacto mnimo en modificaciones Cdigo ms reutilizable

Qu es un aspecto?
Primera definicin: Unidad que se define en trminos de informacin parcial de otras unidades. Definicin actual (G. Kiczales):
Unidad modular que se disemina por la estructura de

otras unidades funcionales. Los aspectos existen tanto en la etapa de diseo como en la de implementacin. Un aspecto de diseo es una unidad modular del diseo que se entremezcla en la estructura de otras partes del diseo. Un aspecto de programa o de cdigo es una unidad modular del programa que aparece en otras unidades modulares del programa

Qu es un aspecto?
Definicin informal:
Es la unidad bsica de la POA Partes de una aplicacin que describen las cuestiones

claves relacionadas con la semntica esencial o el rendimiento Los aspectos no suelen ser unidades de descomposicin funcional del sistema, sino propiedades que afectan al rendimiento o la semntica de los componentes. Algunos ejemplos de aspectos son, los patrones de acceso a memoria, la sincronizacin de procesos concurrentes, el manejo de errores, etc.

Qu es un aspecto?
Estructura de un programa en la POA:

Qu es un aspecto?
Comparativa entre un programa tradicional y un programa orientado a aspectos:

Fundamentos de la POA
Para poder programar en el paradigma de Aspectos se necesita:
Lenguaje

base para la funcionalidad (C,

Java,...) Uno o varios lenguajes de aspectos (COOL, AspectJ,...) Un tejedor de aspectos que una la funcionalidad bsica con los aspectos

Fundamentos de la POA

Tejiendo Clases y Aspectos


Los aspectos describen apndices a la funcionalidad Los aspectos deben situarse en determinados puntos (puntos de enlace) Diferentes formas de entrelazar aspectos y objetos:
Esttico Dinmico

Tejiendo Clases y Aspectos:


Entrelazado Esttico El tejedor modifica el cdigo fuente de una clase insertando sentencias en los puntos de enlace. Ventaja: Mejor rendimiento (analogo entre
compilar e interpretar)

Desventaja: Difcil de identificar los aspectos en el cdigo tejido

Tejiendo Clases y Aspectos:


Entrelazado Dinmico Aspectos y objetos deben de estar contenidos en el ejecutable El tejedor se encarga de aadir, adaptar y borrar aspectos a los objetos de forma dinmica

Tejiendo Clases y Aspectos:


Entrelazado Dinmico
Ejemplo AOP/ST: El tejedor no modifica el cdigo fuente, ya que emplea la herencia para aadir los aspectos a las clases originales

Inconveniente: Bajo rendimiento

Tendencias en los Lenguajes de Aspectos


Dos enfoques:
Lenguajes de aspectos de dominio

especfico
Lenguajes de aspectos de propsito

general

Tendencias en los Lenguajes de Aspectos:


Lenguajes de Dominio Especfico
Se centran en algunos aspectos concretos (distribucin, coordinacin, manejo de errores, sincronizacin,...) No soportan otros aspectos para los que no fueron diseados Imponen restricciones en el lenguaje base Ejemplos:
COOL (Sincronizacin) RIDL (Distribucin)

Tendencias en los Lenguajes de Aspectos:


Lenguajes de Propsito General Diseados para tratar con cualquier tipo de aspecto No imponen restricciones en el lenguaje base Ejemplo: AspectJ, utiliza Java como base, y las instrucciones de los aspectos tambin se escriben en Java

10

Tendencias en los Lenguajes de Aspectos:


wait, notify, notifyAll y synchronized)

Creado por Xerox para la sincronizacin de hilos Lenguaje base: versin restringida de Java (elimina Programa COOL: conjunto de mdulos coordinadores Cada coordinador define una estrategia de sincronizacin, que puede ser utilizada por varias clases del lenguaje base Los coordinadores conocen a las clases que sincronizan, pero las clases no saben de la existencia de los coordinadores

COOL

Tendencias en los Lenguajes de Aspectos:


COOL, Estructura del Coordinador
Conjunto de mtodos en exclusin mtua Mtodos autoexcluyentes Variables de Condicin para controlar la sincronizacin Gestor de Mtodo Gestor de Mtodo: Precondicin

11

Tendencias en los Lenguajes de Aspectos:


AspectJ Extensin de Java orientada a aspectos y de propsito general Aade una nueva categora de clases, llamadas aspectos Estas clases contiene un nuevo tipo de constructores, llamados constructores de corte

Tendencias en los Lenguajes de Aspectos:


AspectJ

Elementos de un aspecto:
Cortes (poincut) Introducciones (introduction) Avisos (advice)

12

Tendencias en los Lenguajes de Aspectos:


AspectJ, Elementos de un Aspecto AspectJ,

Cortes (poincut):
Capturan eventos en la ejecucin de un programa Tipos de eventos capturados: invocaciones de

mtodos o constructores, sealizacin y gestin de excepciones Definen el cdigo de los aspectos usando avisos (advice)

Tendencias en los Lenguajes de Aspectos:


AspectJ, Elementos de un Aspecto AspectJ,

Cortes (poincut):
Estructura de un corte:
Nombre y contexto Eventos del corte (designadores)

Un designador puede ser: Un mtodo Un constructor Un manejador de excepciones

13

Tendencias en los Lenguajes de Aspectos:


AspectJ, Elementos de un Aspecto AspectJ,

Introducciones (introduction): Utilizadas


para introducir elementos nuevos en las clases
Tipos de elementos: Mtodo a la clase Constructores Atributos

Tendencias en los Lenguajes de Aspectos:


AspectJ, Elementos de un Aspecto AspectJ,

Avisos (advice): definen partes de la


implementacin del aspecto
Con nombre

Tipos de aviso: before, after, catch, finally, around Los avisos se puede definir mediante cortes con nombre o cortes annimos
Annimo

14

Ejemplo: Gestin de una Cola Circular


Implementacin en Java sin considerar sincronizacin:

Ejemplo: Gestin de una Cola Circular


Implementacin en Java considerando sincronizacin:

15

Ejemplo: Gestin de una Cola Circular


Implementacin en COOL (definicin en lenguaje base):

Ejemplo: Gestin de una Cola Circular


Implementacin en COOL (definicin del coordinador):

16

Ejemplo: Gestin de una Cola Circular


Implementacin en AspectJ (definicin en lenguaje base):

Implementacin en AspectJ (definicin del aspecto para la sincronizacin):

Ejemplo: Gestin de una Cola Circular

17

Los Aspectos en la Etapa de Diseo


En las primeras fases de la evolucin de la POA los aspectos se consideraban en las etapas de implementacin y codificacin Actualmente, se tienen en cuenta en la etapa de diseo De esta forma se consigue:
Facilitar la creacin de documentacin Comprender mejor el modelo

18

You might also like