UMTS - Close the World... Open the Next



Programación orientada a Aspectos

January 9, 2006

La última tendencia en programación POA consiste en la nueva definición de aspecto como un concepto que es imposible de encapsular claramente pues resulta diseminado por todo el código (otras unidades funcionales).

Imaginemos un caso de POO en el cual contamos con 3 clases de un programa visual: Punto, recta y plano en el cual las rectas y puntos deben irse repintando tras un movimiento del usuario o el marcado de una posición dentro del plano.

La implementación básica consistiría en tres objetos una de cada clase y dentro de las 2 primeras mencionados un método “pintar” tras cualquier movimiento, es decir la ejecución de un método “mover” y estos tendrían que estar doblemente implementados.

Con POA, podríamos tener las 3 unidades funcionales más un aspecto “Pintado” que podría ser algo como:

aspecto pintar{
//Creación e instanciación
Clasemover Objetonomver = (cualquierClase.move() );
despues de ejecutar $mover {
invocar dibuja();
}
dibuja(){
//implementacion de metodo draw()
}
}

Y así el aspecto que puede ser nombrado en el código sin haber tocado lo anterior. Podrán decirnos que un simple copy paste esto se arreglaría, pero un copy paste ya se ve amenazador cuando nos encontramos con librerías de más de 100 clases… copiarían y pegarían tantas veces como figuras o clases diferentes hayan en el programa?

Muchos hablan de un nuevo paradigma en la programación y que deberían agruparse los lenguajes orientados a objetos, los funcionales y los procedurales como lenguajes de procedimientos generalizados que contienen una unidad básica llena de aspectos mientras que POA contiene una unidad funcional más pequeña que invoca a gran cantidad de aspectos diseminados en toda la programación. Otros hablan de un complemento entre ambos para potenciar POO.

El ejemplo del programa de dibujo lo saque de un blog de internet, lo entendi y lo explique. Para más información pueden ver esta tesis hecha sobre POA entrando AQUí