proyecto

Page 30

Programación Orientada a Aspectos. Una experiencia práctica con AspectJ

(Elemento+ && ¡Elemento).new(..)

Punto || Elemento Elemento+ *Punto !Punto java.*.Punto Java..*Model com.company..*

private Punto Linea.* * Linea.punto* * Linea.* public !final *.* !public * java..*.*

30

Elemento y de sus subclases. Todos los constructores de las subclases de Elemento, sin incluir los de la propia clase Elemento. Tipo Punto o tipo Elemento. El tipo Elemento y todos sus descendientes Cualquier tipo cuyo nombre empiece por la palabra Punto. Todos los tipos excepto el tipo Punto. Todos los tipos de nombre Punto dentro de cualquier subpaquete directo del paquete java. Todos los tipos cuyo nombre termina en Model, pertenecientes al paquete java o a alguno de sus subpaquetes, directos o indirectos. Todos los tipos del paquete com.company o de alguno de sus subpaquetes, es decir, cualquier tipo que empiece con la ruta com.company Todos los atributos privados de tipo Punto de la clase Linea Todos los atributos de la clase Linea cuyo nombre empieza por la palabra punto Todos los atributos de la clase Linea Todos los atributos no finales públicos de cualquier clase Todos los atributos no públicos de las clases del paquete Java y de todos sus subpaquetes directos o indirectos.

Tabla 5: Ejemplos de signaturas

Tipos de puntos de corte AspectJ proporciona una serie de descriptores de puntos de corte que nos permiten identificar grupos de puntos de enlace que cumplen diferentes criterios. Estos descriptores se clasifican en diferentes grupos:

Basados en las categorías de puntos de enlace: capturan los puntos de enlace según la categoría a la que pertenecen: llamada a método (call), ejecución de método (execute), lectura de atributo (get), etc.

Basados en el flujo de control: capturan puntos de enlace de cualquier categoría siempre y cuando ocurran en el contexto de otro punto de corte. Estos descriptores son cflow y cflowbelow.

Basados en la localización de código: capturan puntos de enlace de cualquier categoría que se localizan en ciertos fragmentos de código, por ejemplo, dentro de una clase o dentro del cuerpo de un método. Estos descriptores son within y withincode.

Basados en los objetos en tiempo de ejecución: capturan los puntos de enlace cuyo objeto actual (this) u objeto destino (target) son de un cierto tipo. Además de capturar los puntos de enlace asociados con los objetos referenciados, permite exponer el contexto de los puntos de enlace.


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.