aspectj - github pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. ventajas y...
TRANSCRIPT
![Page 1: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/1.jpg)
AspectJ
Juan Rodriguez DuranJohann Triana OlayaJonatan Parra Toro
![Page 2: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/2.jpg)
Tabla de contenido1. Historia y descripción2. Ventajas y desventajas3. Instalación de AspectJ en Eclipse4. Sintaxis 5. Repaso Java6. Caso de estudio
![Page 3: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/3.jpg)
HistoriaBreve resumen
1
![Page 4: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/4.jpg)
AspectJ Historia
Gregor Kiczales.
Extensión de java
![Page 5: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/5.jpg)
Compatibilidad de AspectJ
Compatibilidad base
Compatibilidad de Plataforma
Compatibilidad de programación
![Page 6: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/6.jpg)
Extiende Java para soportar el manejo de aspectos agregando a la semántica de Java cuatro entidades
principales.
Puntos de enlace (Joint Point)
Introducciones (introduction)
Puntos de corte (Pointcut)
Consejos (Advice)
![Page 7: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/7.jpg)
La intención de AspectJ es ser un LOA práctico, que provea un conjunto sólido y maduro de características orientadas a
aspectos, compatible con Java para aprovechar su popularidad.
No es una traducción purista de la POA
No representa un intento agresivo para explorar las posibilidades del
lenguaje
Metas de AspectJ
![Page 8: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/8.jpg)
Ventajas y DesventajasAspectJ
2
![Page 9: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/9.jpg)
● Facilita/mejora la modularidad de los desarrollos de software.
● El código es organizado y comprimido
● Es reutilizable● Pérmite modelar referencias
transversales, extiende las capacidades de POO
Ventajas
● Puede introducir nuevos errores y fallas de seguridad si no se implementa adecuadamente
● El paradigma puede emplearse mal quitando y/o delegando responsabilidades a ciertas clases
● Los Aspectos pueden ser mal utilizados.
Desventajas
![Page 10: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/10.jpg)
CaracteristicasDel paradigma
2.1
![Page 11: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/11.jpg)
Características Principales
![Page 12: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/12.jpg)
Un aspecto es una preocupación común a varias clases de una aplicación El aspecto es “casi siempre” ortogonal a lo que la clase representa Por ejemplo:
● Logger, ● requerimientos no funcionales, ● testing ● validación de contratos (parámetros)● etc.
Características Principales
![Page 13: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/13.jpg)
AOP vs POO¿Como hacer un logger?
Y si usamos…● Un wrapper● Una interfaz● Herencia● Listeners● Reflexión de las clases
Resultado● Código muy complejo en la
llamada a los métodos● Posibilidad de olvidar la
implementación o llamar al super
● Olvidar el notify a los listeners● Malas prácticas en POO y
mayor complejidad
![Page 14: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/14.jpg)
Instalación en EclipsePaso a paso
3
![Page 15: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/15.jpg)
Instalación de aspectj en eclipse
![Page 16: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/16.jpg)
Instalación de aspectj en eclipse
![Page 17: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/17.jpg)
Instalación de aspectj en eclipse
![Page 18: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/18.jpg)
SintaxisBásica de los comandos
4
![Page 19: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/19.jpg)
Creación de un Aspecto
[privileged] [Modifiers] aspect Id [extends Type] [implements TypeList]
Privileged: Un aspecto con este modificador puede acceder Incluso a los métodos privados de las clases.
![Page 20: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/20.jpg)
● Como un archivo
Paquete: mi_paqueteAspecto: Mi_aspecto.aj
● Como parte de una clase.
public class MyClass{…
public aspect Mi_aspecto{…}
}● Extends, Implements, Abstract...
Creación de un Aspecto
mi_paqueteMi_aspecto.aj
MyClass.java
![Page 21: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/21.jpg)
Joint point
Es el punto de ejecución dentro del sistema donde un aspecto puede ser conectado
![Page 22: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/22.jpg)
PointCutcall(Signature)
![Page 23: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/23.jpg)
PointCut Pattern * method(..) Match method que retorna cualquier cosa y
recibe cualquier cantidad de parámetros
* method (*,*,*) Retorna cualquier cosa y recibe 3 parámetros cualesquiera
void *(String) Todos lo métodos que no retornan nada y reciben un parámetro String
String method(String, int) Method que retorna string y recibe como parámetro un String y un entero
* * (..) Todos los métodos
![Page 24: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/24.jpg)
Tipos de PointCut
Puntos de corte Descripción
call(method) Captura la llamada a un método o constructor de una clase
execution(method) Captura la ejecución de un método o constructor.
![Page 25: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/25.jpg)
Muestra de ejemploEjemplo de uso en eclipse
4.1
![Page 26: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/26.jpg)
PointCut: execution vs call
![Page 27: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/27.jpg)
PointCut: execution vs call
![Page 28: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/28.jpg)
withincode(firma) Captura la ejecución dentro del método o constructor indicado. La firma puede ser una clase o un paquete, en este caso capturará todos los métodos asociados a la firma.
Punto de captura
![Page 29: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/29.jpg)
this(objeto/clase)target(objeto/clase)
This captura todos los Join Point que hagan interacción con el objeto/clase especificadosTarget captura todos los Join Point respecto a métodos o operaciones con atributos del objeto/clase especificados.
args(firma) Captura todos los puntos de enlace donde los argumentos son instancias de una clase que coincide con el Patrón de Clase o con la clase del identificador
get(clase) Captura la lectura de una variable de una clase
set(clase) Captura la escritura de una variable de una clase
handler(Exception) Captura el manejador de una excepción
![Page 30: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/30.jpg)
AdviceCódigo que se ejecutará cuando se llegue al pointcut este se puede definir de tres diferentes maneras:
● before ()● after ()● around ()
![Page 31: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/31.jpg)
Implementacion de un advice after
![Page 32: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/32.jpg)
Ejemplo básico
Una tienda online necesita llevar el registro de cuantas veces se ha llamado al método buscarProducto() sin importar el objeto que lo haga.
Utilizando un aspecto y sin modificar el código actual imprima en pantalla la cantidad de veces que se ha llamado este método.
![Page 33: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/33.jpg)
Aspecto que cuenta la cantidad de veces que se llamó al método
![Page 34: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/34.jpg)
Salida en consola
![Page 35: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/35.jpg)
Repaso JavaEjemplos de uso
5
![Page 36: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/36.jpg)
Java 8 y anterioresBloques estaticos
![Page 37: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/37.jpg)
Java 8 y anterioresStreams
![Page 38: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/38.jpg)
Java 8 y anterioresLambda y map reduce paralelo
![Page 39: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/39.jpg)
Caso de estudioEjemplo de uso
6
![Page 40: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/40.jpg)
Google AnalyticsMide la usabilidad de una aplicación por el número de clicks y enlaces seguidos, además de otros datos
![Page 41: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/41.jpg)
Caracteristicas a EvaluarNúmero de llamadas a métodos
Memoria asignada por llamada
Clicks realizados sobre cada elemento
![Page 42: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/42.jpg)
Muestra de ejemploEjemplo de uso en eclipse
6.1
![Page 43: AspectJ - GitHub Pagesferestrepoca.github.io/paradigmas-de-programacion/poa/...2. Ventajas y desventajas 3. Instalación de AspectJ en Eclipse 4. Sintaxis 5. Repaso Java 6. Caso de](https://reader034.vdocuments.site/reader034/viewer/2022042303/5ecefd7d0910bd65e108ba3c/html5/thumbnails/43.jpg)
Muchas Gracias¿Preguntas?