AOP Aspect Oriented Programming

Víctor Fariña Java, Technology Leave a Comment

Interesantísimos son los últimos documentos que estoy leyendo sobre AOP, una metodología de trabajo que nos ayuda en un montón de tareas de las que ahora nos ocupábamos usando ñapas o malos hábitos de programación.

Problema

El problema es que la programación orientada a objetos no escala con facilidad en cuanto se aumentan funcionalidades trasversales o requerimientos al desarrollo del programa. Me refiero a funcionalidades trasversales, funcionalidades que no son intrínsecas al modelo de nuestro desarrollo y que pueden ser externalizadas y aplicadas a múltiples desarrollos, como por ejemplo los logs, la seguridad, la persistencia, … Una clase desarrollada por nosotros a priori no tiene porqué saber como implementar la seguridad, como persistirse a si misma o como logear sus propias acciones.

Solución

La solución viene de la mano de AOP. Nos permite establecer «puntos de ruptura» en los cuales «salta» la ejecución de otras clases, realizan tareas y devuelven el control al punto de ruptura. Mediante la definicion en un archivo xml del punto de ruptura (que puede ser un patron en el nombre del metodo por ejemplo), le indicamos a nuestro «cargador de clases» ( tomcat, spring, …) que ejecute otra clase y luego devuelva el control, todo ello sin necesidad de modificar la clase original por supuesto.

Implementaciones de AOP

Algunas implementaciones de AOP son AspectJ, Aspectwerkz, Jboss AOP, Spring AOP, … . Aunque probablemente el mas potente (y el que yo uso) sea Spring AOP, quizás no sea el mas adecuado para aprender el funcionamiento de la Programacion Orientada a Aspectos. Yo creo que el mas adecuado para aprender es Aspectwerkz debido a la sencillez de su sintaxis y a que se centra exclusivamente en la AOP.

Conceptos Clave

Cross-cutting concerns:
Un problema cruzado es aquella funcionalidad que es trasversal a nuestra clase, de modo que se pueda implementar a varias clases o incluso programas, por ejemplo Logging
Advice:
Del inglés consejo, es el codigo adicional que queremos añadir a nuestro modelo, que puede ser codigo especifico de log, de persistencia, …
Point-cut :
El punto de corte, es el punto determinado en la ejecucion de nuestro programa donde queremos aplicar el consejo o codigo adicional.

Articulos y Links Relacionados

http://www.programacion.com/java/articulo/jap_aop/
http://en.wikipedia.org/wiki/Aspect-oriented_programming
http://www.onjava.com/pub/a/onjava/2004/07/14/springaop.html

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.