SlideShare uma empresa Scribd logo
1 de 22
Programación Orientada a Aspectos Fernando Darío Córdoba M Cod: 06042019
Introducción ,[object Object]
Historia ,[object Object],[object Object],[object Object]
¿Qué es un aspecto? ,[object Object],[object Object]
[object Object]
En la siguiente figura, se muestra un programa como un todo formado por un conjunto  de aspectos más un modelo de objetos. Con el modelo de objetos  se recoge la funcionalidad básica, mientras que el resto de aspectos recogen características de rendimiento.
Comparación de la apariencia que presenta un programa tradicional con la que muestra un programa orientado a aspectos en la que se confrontan la estructura de un programa tradicional (parte izquierda) con la de uno orientado a aspectos (parte derecha).
Si el rectángulo de traza más gruesa representa el código de un programa , se puede apreciar que la estructura del programa tradicional está formada por una serie de bandas horizontales. Cada banda está rellena utilizando una trama distinta., y cada trama representa una funcionalidad. El programa orientado a aspectos, sin embargo, esta formado por tres bloques compactos, cada uno de los cuales representa un aspecto o competencia dentro del código. Como se puede observar, en la versión tradicional estos mismos bloques de funcionalidad quedan repartidos por todo el código, mientras en que la versión orientada  a aspectos tenemos un programa más compacto y modularizado, teniendo cada aspecto su propia competencia.
Fundamentos de la programación orientada a aspectos ,[object Object]
Puntos de enlace   Los  puntos de enlace  son una clase especial de interfaz entre los aspectos y los módulos del lenguaje de componentes. Son los lugares del código en los que éste se puede aumentar con comportamientos adicionales. Estos comportamientos se especifican en los aspectos. Tejedor El tejedor (del término inglés weaver) se encarga de mezclar los diferentes mecanismos de abstracción y composición que aparecen en los lenguajes de aspectos y componentes ayudándose de los puntos de enlace.
Para tener un programa orientado a aspectos necesitamos definir los siguientes elementos: ,[object Object],[object Object],[object Object]
Estructura de una implementación en los lenguajes tradicionales. En las aplicaciones tradicionales, bastaba con un compilador o intérprete que tradujera nuestro programa escrito en un lenguaje de alto nivel a un código directamente entendible por la máquina.
Estructura de una implementación en los lenguajes de aspectos. En las aplicaciones orientadas a aspectos, además del compilador, hemos de tener el tejedor, que nos combine el código que implementa la funcionalidad básica, con los distintos módulos que implementan los aspectos, pudiendo estar cada aspecto codificado  con un lenguaje distinto.
Tejiendo clases y aspectos ,[object Object],[object Object],[object Object]
Entrelazado dinámico. Una precondición o requisito para que se pueda realizar un entrelazado dinámico es que los aspectos existan de forma explícita tanto en tiempo de compilación como en tiempo de ejecución. Para conseguir esto, tanto los aspectos como las estructuras entrelazadas se deben modelar como objetos y deben mantenerse en el ejecutable. Dado un interfaz de reflexión, el tejedor es capaz de añadir, adaptar y borrar aspectos de forma dinámica, si así se desea, durante la ejecución.
Lenguajes de Aspectos de Propósito General vs. Dominio Específico. ,[object Object],[object Object]
Los lenguajes de aspectos de propósito general   se diseñaron para ser utilizados con cualquier clase de aspecto, no solamente con aspectos específicos. Por lo tanto, no pueden imponer restricciones en el lenguaje base. Principalmente soportan la definición separada de los aspectos proporcionando unidades de aspectos. Normalmente tienen el mismo nivel de abstracción que el lenguaje base y también el mismo conjunto de instrucciones. Un ejemplo de este tipo de lenguajes es AspectJ, que utiliza Java como base, y las instrucciones de los aspectos también se escriben en Java. Si contrastamos estos dos enfoques, propósito general versus propósito específico, se tiene que los lenguajes de aspectos de propósito general no pueden cubrir completamente las necesidades. Tienen un severo inconveniente: Permiten la separación del código, pero no garantizan la separación de funcionalidades, es decir, que la unidad de aspecto solamente se utiliza para programar el aspecto. Sin embargo, esta es la idea central de la programación orientada a aspectos.
Un lenguaje de dominio específico: COOL ,[object Object],[object Object],[object Object],[object Object]
Un lenguaje de propósito general: AspectJ ,[object Object],[object Object],[object Object]
Disciplinas relacionadas con POA. Por último, hay muchas disciplinas y campos de investigación relacionados de alguna manera con la orientación a aspectos, algunos persiguen los mismos objetivos, de los cuales tenemos. Transformación de programas El objetivo que persigue la transformación de programas es similar al de la orientación a aspectos. Busca el poder escribir programas correctos en un lenguaje de más alto nivel, y luego, transformarlos de forma mecánica en otros que tengan un comportamiento idéntico, pero cuya eficiencia sea mucho mejor. Con este estilo de programación algunas propiedades de las que el programador quiere implementar se escriben en un programa inicial.
Programación subjetiva ,[object Object],[object Object],[object Object]
Conclusiones ,[object Object],[object Object],[object Object],[object Object]

Mais conteúdo relacionado

Mais procurados

Programación rientada a Aspectos - David Burbano
Programación rientada a Aspectos - David BurbanoProgramación rientada a Aspectos - David Burbano
Programación rientada a Aspectos - David Burbano
2008PA2Info3
 
Tabla comparativa de paradigma de programacion estruturada y pradigma de prog...
Tabla comparativa de paradigma de programacion estruturada y pradigma de prog...Tabla comparativa de paradigma de programacion estruturada y pradigma de prog...
Tabla comparativa de paradigma de programacion estruturada y pradigma de prog...
jose francisco arenas jimenez
 
3 paradigmas
3 paradigmas3 paradigmas
3 paradigmas
alithu1
 
P R O G R A M A C I O N O R I E N T A D A
P R O G R A M A C I O N  O R I E N T A D AP R O G R A M A C I O N  O R I E N T A D A
P R O G R A M A C I O N O R I E N T A D A
chayna
 
Tabla comparativa de paradigmas de programacion
Tabla comparativa de paradigmas de programacionTabla comparativa de paradigmas de programacion
Tabla comparativa de paradigmas de programacion
MarioS1093
 
Programación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación EstructuradaProgramación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación Estructurada
Michael de la Cruz
 
Tabla comparativa de poo y paradigma de programación estructurada
Tabla comparativa de poo y paradigma de programación estructuradaTabla comparativa de poo y paradigma de programación estructurada
Tabla comparativa de poo y paradigma de programación estructurada
Angeles Rivera
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
vnslgars
 
Programacion estructurado
Programacion estructuradoProgramacion estructurado
Programacion estructurado
Agapito26
 

Mais procurados (20)

Programación rientada a Aspectos - David Burbano
Programación rientada a Aspectos - David BurbanoProgramación rientada a Aspectos - David Burbano
Programación rientada a Aspectos - David Burbano
 
Programación
ProgramaciónProgramación
Programación
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Tabla comparativa de paradigma de programacion estruturada y pradigma de prog...
Tabla comparativa de paradigma de programacion estruturada y pradigma de prog...Tabla comparativa de paradigma de programacion estruturada y pradigma de prog...
Tabla comparativa de paradigma de programacion estruturada y pradigma de prog...
 
3 paradigmas
3 paradigmas3 paradigmas
3 paradigmas
 
P R O G R A M A C I O N O R I E N T A D A
P R O G R A M A C I O N  O R I E N T A D AP R O G R A M A C I O N  O R I E N T A D A
P R O G R A M A C I O N O R I E N T A D A
 
Tabla comparativa de paradigmas de programacion
Tabla comparativa de paradigmas de programacionTabla comparativa de paradigmas de programacion
Tabla comparativa de paradigmas de programacion
 
Programación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación EstructuradaProgramación Orientada a Objetos vs Programación Estructurada
Programación Orientada a Objetos vs Programación Estructurada
 
Cuadro comparativo.
Cuadro comparativo.Cuadro comparativo.
Cuadro comparativo.
 
Paradigmas de programacion
Paradigmas de programacion Paradigmas de programacion
Paradigmas de programacion
 
Tabla comparativa de poo y paradigma de programación estructurada
Tabla comparativa de poo y paradigma de programación estructuradaTabla comparativa de poo y paradigma de programación estructurada
Tabla comparativa de poo y paradigma de programación estructurada
 
Grupo 12-objetos-compuestos
Grupo 12-objetos-compuestosGrupo 12-objetos-compuestos
Grupo 12-objetos-compuestos
 
Estructura de un programa
Estructura de un programaEstructura de un programa
Estructura de un programa
 
Lenguaje de programacion mike alvarado
Lenguaje de programacion mike alvaradoLenguaje de programacion mike alvarado
Lenguaje de programacion mike alvarado
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
9 anulacion
9   anulacion9   anulacion
9 anulacion
 
Programación estructurada
Programación estructuradaProgramación estructurada
Programación estructurada
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
 
Programacion estructurada
Programacion estructuradaProgramacion estructurada
Programacion estructurada
 
Programacion estructurado
Programacion estructuradoProgramacion estructurado
Programacion estructurado
 

Semelhante a Programación Orientada a Aspectos - Fernando Córdoba

Semelhante a Programación Orientada a Aspectos - Fernando Córdoba (20)

Herrera poveda quilachamin_paper
Herrera poveda quilachamin_paperHerrera poveda quilachamin_paper
Herrera poveda quilachamin_paper
 
Int a la computacion
Int a la computacionInt a la computacion
Int a la computacion
 
Evoluciýýn de la programaciýýn
Evoluciýýn de la programaciýýnEvoluciýýn de la programaciýýn
Evoluciýýn de la programaciýýn
 
Lenguaje de programacion de c++
Lenguaje de programacion de c++Lenguaje de programacion de c++
Lenguaje de programacion de c++
 
Aspect Oriented Programming introduction
Aspect Oriented Programming introductionAspect Oriented Programming introduction
Aspect Oriented Programming introduction
 
Informe lpi
Informe lpiInforme lpi
Informe lpi
 
Introduccion a la Programación I parte
Introduccion a la Programación I parte Introduccion a la Programación I parte
Introduccion a la Programación I parte
 
Introduccion a la programación I Parte
Introduccion a la programación I Parte Introduccion a la programación I Parte
Introduccion a la programación I Parte
 
cuestionario
cuestionariocuestionario
cuestionario
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Lenguajesprog
LenguajesprogLenguajesprog
Lenguajesprog
 
Programacion Basica
Programacion Basica Programacion Basica
Programacion Basica
 
Presentación de programacion
Presentación  de programacionPresentación  de programacion
Presentación de programacion
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacion
 
Cuaderno3
Cuaderno3Cuaderno3
Cuaderno3
 
Introducción a java
Introducción a javaIntroducción a java
Introducción a java
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Diapositiva informatica nidia
Diapositiva informatica nidiaDiapositiva informatica nidia
Diapositiva informatica nidia
 
Poa Borrador
Poa BorradorPoa Borrador
Poa Borrador
 
Programación!! . .
Programación!! . .Programación!! . .
Programación!! . .
 

Mais de 2008PA2Info3

UML para dispositivos móviles - Milena Cabrera
UML para dispositivos móviles - Milena CabreraUML para dispositivos móviles - Milena Cabrera
UML para dispositivos móviles - Milena Cabrera
2008PA2Info3
 
JUnit - Germán Domínguez
JUnit - Germán DomínguezJUnit - Germán Domínguez
JUnit - Germán Domínguez
2008PA2Info3
 
JUnit - Pablo Calvache
JUnit - Pablo CalvacheJUnit - Pablo Calvache
JUnit - Pablo Calvache
2008PA2Info3
 
SCRUM - César Ortiz
SCRUM - César OrtizSCRUM - César Ortiz
SCRUM - César Ortiz
2008PA2Info3
 
Java Fx - Santiago Vejarano
Java Fx - Santiago VejaranoJava Fx - Santiago Vejarano
Java Fx - Santiago Vejarano
2008PA2Info3
 
Modelado de redes de telecomunicaciones con UML - Leonardo Nieto
Modelado de redes de telecomunicaciones con UML - Leonardo NietoModelado de redes de telecomunicaciones con UML - Leonardo Nieto
Modelado de redes de telecomunicaciones con UML - Leonardo Nieto
2008PA2Info3
 
SCRUM - Osiris López
SCRUM - Osiris LópezSCRUM - Osiris López
SCRUM - Osiris López
2008PA2Info3
 
Formalización en UML - Ingrid Muñoz
Formalización en UML - Ingrid MuñozFormalización en UML - Ingrid Muñoz
Formalización en UML - Ingrid Muñoz
2008PA2Info3
 
Java Fx - Alejandro Sotelo
Java Fx - Alejandro SoteloJava Fx - Alejandro Sotelo
Java Fx - Alejandro Sotelo
2008PA2Info3
 
Scripting Integration en Java 6 - Daniel E. Jaramillo
Scripting Integration en Java 6 - Daniel E. JaramilloScripting Integration en Java 6 - Daniel E. Jaramillo
Scripting Integration en Java 6 - Daniel E. Jaramillo
2008PA2Info3
 
Perfiles UML - Paola Morales
Perfiles UML - Paola MoralesPerfiles UML - Paola Morales
Perfiles UML - Paola Morales
2008PA2Info3
 
SCRUM - Víctor Orobio
SCRUM - Víctor OrobioSCRUM - Víctor Orobio
SCRUM - Víctor Orobio
2008PA2Info3
 
Estándares calidad del software - Cristina Ortega
Estándares calidad del software - Cristina OrtegaEstándares calidad del software - Cristina Ortega
Estándares calidad del software - Cristina Ortega
2008PA2Info3
 
Extensiones UML para aplicaciones web - Rocío Santiago
Extensiones UML para aplicaciones web - Rocío SantiagoExtensiones UML para aplicaciones web - Rocío Santiago
Extensiones UML para aplicaciones web - Rocío Santiago
2008PA2Info3
 
Programación orientada a eventos - Alejandro Solano
Programación orientada a eventos - Alejandro SolanoProgramación orientada a eventos - Alejandro Solano
Programación orientada a eventos - Alejandro Solano
2008PA2Info3
 
UML para sistemas de tiempo real - Marcela Folleco
UML para sistemas de tiempo real - Marcela FollecoUML para sistemas de tiempo real - Marcela Folleco
UML para sistemas de tiempo real - Marcela Folleco
2008PA2Info3
 
Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado
2008PA2Info3
 
MDD - Andrés Goyes
MDD - Andrés GoyesMDD - Andrés Goyes
MDD - Andrés Goyes
2008PA2Info3
 
Aplicaciones web - Gonzalo Acte
Aplicaciones web - Gonzalo ActeAplicaciones web - Gonzalo Acte
Aplicaciones web - Gonzalo Acte
2008PA2Info3
 
Estándares de calidad del software - Andrés Mera
Estándares de calidad del software - Andrés MeraEstándares de calidad del software - Andrés Mera
Estándares de calidad del software - Andrés Mera
2008PA2Info3
 

Mais de 2008PA2Info3 (20)

UML para dispositivos móviles - Milena Cabrera
UML para dispositivos móviles - Milena CabreraUML para dispositivos móviles - Milena Cabrera
UML para dispositivos móviles - Milena Cabrera
 
JUnit - Germán Domínguez
JUnit - Germán DomínguezJUnit - Germán Domínguez
JUnit - Germán Domínguez
 
JUnit - Pablo Calvache
JUnit - Pablo CalvacheJUnit - Pablo Calvache
JUnit - Pablo Calvache
 
SCRUM - César Ortiz
SCRUM - César OrtizSCRUM - César Ortiz
SCRUM - César Ortiz
 
Java Fx - Santiago Vejarano
Java Fx - Santiago VejaranoJava Fx - Santiago Vejarano
Java Fx - Santiago Vejarano
 
Modelado de redes de telecomunicaciones con UML - Leonardo Nieto
Modelado de redes de telecomunicaciones con UML - Leonardo NietoModelado de redes de telecomunicaciones con UML - Leonardo Nieto
Modelado de redes de telecomunicaciones con UML - Leonardo Nieto
 
SCRUM - Osiris López
SCRUM - Osiris LópezSCRUM - Osiris López
SCRUM - Osiris López
 
Formalización en UML - Ingrid Muñoz
Formalización en UML - Ingrid MuñozFormalización en UML - Ingrid Muñoz
Formalización en UML - Ingrid Muñoz
 
Java Fx - Alejandro Sotelo
Java Fx - Alejandro SoteloJava Fx - Alejandro Sotelo
Java Fx - Alejandro Sotelo
 
Scripting Integration en Java 6 - Daniel E. Jaramillo
Scripting Integration en Java 6 - Daniel E. JaramilloScripting Integration en Java 6 - Daniel E. Jaramillo
Scripting Integration en Java 6 - Daniel E. Jaramillo
 
Perfiles UML - Paola Morales
Perfiles UML - Paola MoralesPerfiles UML - Paola Morales
Perfiles UML - Paola Morales
 
SCRUM - Víctor Orobio
SCRUM - Víctor OrobioSCRUM - Víctor Orobio
SCRUM - Víctor Orobio
 
Estándares calidad del software - Cristina Ortega
Estándares calidad del software - Cristina OrtegaEstándares calidad del software - Cristina Ortega
Estándares calidad del software - Cristina Ortega
 
Extensiones UML para aplicaciones web - Rocío Santiago
Extensiones UML para aplicaciones web - Rocío SantiagoExtensiones UML para aplicaciones web - Rocío Santiago
Extensiones UML para aplicaciones web - Rocío Santiago
 
Programación orientada a eventos - Alejandro Solano
Programación orientada a eventos - Alejandro SolanoProgramación orientada a eventos - Alejandro Solano
Programación orientada a eventos - Alejandro Solano
 
UML para sistemas de tiempo real - Marcela Folleco
UML para sistemas de tiempo real - Marcela FollecoUML para sistemas de tiempo real - Marcela Folleco
UML para sistemas de tiempo real - Marcela Folleco
 
Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado
 
MDD - Andrés Goyes
MDD - Andrés GoyesMDD - Andrés Goyes
MDD - Andrés Goyes
 
Aplicaciones web - Gonzalo Acte
Aplicaciones web - Gonzalo ActeAplicaciones web - Gonzalo Acte
Aplicaciones web - Gonzalo Acte
 
Estándares de calidad del software - Andrés Mera
Estándares de calidad del software - Andrés MeraEstándares de calidad del software - Andrés Mera
Estándares de calidad del software - Andrés Mera
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Último (11)

pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

Programación Orientada a Aspectos - Fernando Córdoba

  • 1. Programación Orientada a Aspectos Fernando Darío Córdoba M Cod: 06042019
  • 2.
  • 3.
  • 4.
  • 5.
  • 6. En la siguiente figura, se muestra un programa como un todo formado por un conjunto de aspectos más un modelo de objetos. Con el modelo de objetos se recoge la funcionalidad básica, mientras que el resto de aspectos recogen características de rendimiento.
  • 7. Comparación de la apariencia que presenta un programa tradicional con la que muestra un programa orientado a aspectos en la que se confrontan la estructura de un programa tradicional (parte izquierda) con la de uno orientado a aspectos (parte derecha).
  • 8. Si el rectángulo de traza más gruesa representa el código de un programa , se puede apreciar que la estructura del programa tradicional está formada por una serie de bandas horizontales. Cada banda está rellena utilizando una trama distinta., y cada trama representa una funcionalidad. El programa orientado a aspectos, sin embargo, esta formado por tres bloques compactos, cada uno de los cuales representa un aspecto o competencia dentro del código. Como se puede observar, en la versión tradicional estos mismos bloques de funcionalidad quedan repartidos por todo el código, mientras en que la versión orientada a aspectos tenemos un programa más compacto y modularizado, teniendo cada aspecto su propia competencia.
  • 9.
  • 10. Puntos de enlace Los puntos de enlace son una clase especial de interfaz entre los aspectos y los módulos del lenguaje de componentes. Son los lugares del código en los que éste se puede aumentar con comportamientos adicionales. Estos comportamientos se especifican en los aspectos. Tejedor El tejedor (del término inglés weaver) se encarga de mezclar los diferentes mecanismos de abstracción y composición que aparecen en los lenguajes de aspectos y componentes ayudándose de los puntos de enlace.
  • 11.
  • 12. Estructura de una implementación en los lenguajes tradicionales. En las aplicaciones tradicionales, bastaba con un compilador o intérprete que tradujera nuestro programa escrito en un lenguaje de alto nivel a un código directamente entendible por la máquina.
  • 13. Estructura de una implementación en los lenguajes de aspectos. En las aplicaciones orientadas a aspectos, además del compilador, hemos de tener el tejedor, que nos combine el código que implementa la funcionalidad básica, con los distintos módulos que implementan los aspectos, pudiendo estar cada aspecto codificado con un lenguaje distinto.
  • 14.
  • 15. Entrelazado dinámico. Una precondición o requisito para que se pueda realizar un entrelazado dinámico es que los aspectos existan de forma explícita tanto en tiempo de compilación como en tiempo de ejecución. Para conseguir esto, tanto los aspectos como las estructuras entrelazadas se deben modelar como objetos y deben mantenerse en el ejecutable. Dado un interfaz de reflexión, el tejedor es capaz de añadir, adaptar y borrar aspectos de forma dinámica, si así se desea, durante la ejecución.
  • 16.
  • 17. Los lenguajes de aspectos de propósito general se diseñaron para ser utilizados con cualquier clase de aspecto, no solamente con aspectos específicos. Por lo tanto, no pueden imponer restricciones en el lenguaje base. Principalmente soportan la definición separada de los aspectos proporcionando unidades de aspectos. Normalmente tienen el mismo nivel de abstracción que el lenguaje base y también el mismo conjunto de instrucciones. Un ejemplo de este tipo de lenguajes es AspectJ, que utiliza Java como base, y las instrucciones de los aspectos también se escriben en Java. Si contrastamos estos dos enfoques, propósito general versus propósito específico, se tiene que los lenguajes de aspectos de propósito general no pueden cubrir completamente las necesidades. Tienen un severo inconveniente: Permiten la separación del código, pero no garantizan la separación de funcionalidades, es decir, que la unidad de aspecto solamente se utiliza para programar el aspecto. Sin embargo, esta es la idea central de la programación orientada a aspectos.
  • 18.
  • 19.
  • 20. Disciplinas relacionadas con POA. Por último, hay muchas disciplinas y campos de investigación relacionados de alguna manera con la orientación a aspectos, algunos persiguen los mismos objetivos, de los cuales tenemos. Transformación de programas El objetivo que persigue la transformación de programas es similar al de la orientación a aspectos. Busca el poder escribir programas correctos en un lenguaje de más alto nivel, y luego, transformarlos de forma mecánica en otros que tengan un comportamiento idéntico, pero cuya eficiencia sea mucho mejor. Con este estilo de programación algunas propiedades de las que el programador quiere implementar se escriben en un programa inicial.
  • 21.
  • 22.