Peluch

Solo disponible en BuenasTareas
  • Páginas : 8 (1870 palabras )
  • Descarga(s) : 0
  • Publicado : 6 de marzo de 2012
Leer documento completo
Vista previa del texto
Programación Orientada por Aspectos
Rubby Casallas Grupo de Construcción de Software Universidad de los Andes

1

Referencias
http://eclipse.org/aspectj/ http://www.theserverside.com/events/video s/GregorKiczalesText/interview.jsp http://www.onjava.com/pub/a/onjava/2004/ 01/14/aop.html http://www.onjava.com/pub/a/onjava/2004/ 08/25/aoa.html

2

1

Agenda
Motivación Conceptos BásicosEl lenguaje AspectJ:
Pointcuts Advices Aspects Introductions

Ejemplos
3

Motivación
Ejemplo:
Se necesita saber cuanto tiempo se demora la ejecución de algunos métodos de una aplicación

4

2

Motivación
public class BankAccount { public void withdraw (double amount) { long startTime = System.currentTimeMillis(); try { // Actual method body... } finally { long endTime =System.currentTimeMillis() – startTime; System.out.println("withdraw took: " + endTime); } } }

5

Motivación
Código similar en cada clase y cada método donde se quiera hacer la medición Si se necesitara un cambio en ese código tocaría cambiar en todas las clases donde está No se puede decir apagar o prender la ejecución de ese código

6

3

Motivación
Código similar en cada clase y cada métododonde se quiera hacer la medición Si se necesitara un cambio en ese código tocaría cambiar en todas las clases donde está No se puede decir apagar o prender la ejecución de ese código
El anterior es un ejemplo de un aspecto transversal a la aplicación. Es transversal porque la misma lógica se debe escribir en 7 varias partes de la aplicación.

Conceptos Básicos
Un aspecto es una preocupacióncomú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 y validación de contratos, etc.

8

4

Conceptos Básicos
Un aspecto es una unidad funcional que permite expresar una estructura de código en diferentes partes de un programa Un aspecto está compuesto de dos partes:
elpunto de corte (point cut) que indica en qué partes del código se va a introducir un código definido el código del aspecto que típicamente se llama un advice
9

Conceptos Básicos
Curso Profesor
0..*

0..* T ema

0.. *

Mat erial

0..*

0..*

0..*

0..*

0..*

0..*

10

5

Conceptos Básicos
Problema:
Incluir instrucciones en todos los métodos de todas las clases parahacer un logger! Al comienzo de la ejecución de cada método:

logger.info("Entering: " + );

11

Conceptos Básicos
Curso Profesor
0..*

0..* T ema

0.. *

Mat erial

0..*

0..*

0..*

0..*

0..*

0..*

12

6

Conceptos Básicos
Curso Profesor

0..*

0..* Tem a

0..*

M aterial

0..*

aspecto logger Operador “entretejer” (weaving) )
0..*

0..*

0..*0..*

0..*

13

Ejemplo: AspectJ
aspect simpleLogger { pointcut tracedCall(): call(public * *(..));
aspecto logger

before(): tracedCall() { logger.info("Entering: " + thisJoinPoint); } }

14

7

Ejemplo: AspectJ
aspect simpleLogger { pointcut tracedCall(): call(public * *(..)); before(): tracedCall() { logger.info("Entering: " + thisJoinPoint); } } Puntos de la ejecución delprograma

15

Ejemplo: AspectJ
aspect simpleLogger { pointcut tracedCall(): call(public * *(..)); before(): tracedCall() { logger.info("Entering: " + thisJoinPoint); } } La instrucción del logger se va a ejecutar justo antes de alcanzar el punto tracedCall
16

8

Ejemplo: JBoss AOP
public class Metrics { public Object profile (MethodInvocation invocation) throws Throwable { longstartTime = System.currentTimeMillis(); try { return invocation.invokeNext(); } finally { long endTime = System.currentTimeMillis() - startTime; java.lang.reflect.Method m = invocation.getMethod(); System.out.println("method " + m.toString() + " time: " + endTime + "ms"); } } }
17

Ejemplo: JBoss AOP
jboss-aop.xml

18

9

Agenda
Conceptos Básicos El lenguaje AspectJ:
Join point...
tracking img