Programación Orientada a Aspectos


En informática , la programación orientada a aspectos ( AOP ) es un paradigma de programación que tiene como objetivo aumentar la modularidad al permitir la separación de preocupaciones transversales . Lo hace agregando un comportamiento adicional al código existente (un consejo ) sin modificar el código en sí, en lugar de especificar por separado qué código se modifica a través de una especificación " pointcut ", como "registrar todas las llamadas a funciones cuando el nombre de la función comienza con 'set ' ". Esto permite comportamientos que no son centrales para la lógica de negocios. (como el registro) para agregarse a un programa sin saturar el núcleo del código de la funcionalidad.

AOP incluye métodos y herramientas de programación que soportan la modularización de preocupaciones a nivel del código fuente, mientras que el desarrollo de software orientado a aspectos se refiere a toda una disciplina de ingeniería.

La programación orientada a aspectos implica dividir la lógica del programa en distintas partes (las llamadas preocupaciones , áreas cohesivas de funcionalidad). Casi todos los paradigmas de programación admiten algún nivel de agrupación y encapsulación de preocupaciones en entidades separadas e independientes al proporcionar abstracciones (p. ej., funciones, procedimientos, módulos, clases, métodos) que se pueden usar para implementar, resumir y componer estas preocupaciones. Algunas preocupaciones "atraviesan" múltiples abstracciones en un programa y desafían estas formas de implementación. Estas preocupaciones se denominan preocupaciones transversales o preocupaciones horizontales.

El registro ejemplifica una preocupación transversal porque una estrategia de registro necesariamente afecta cada parte registrada del sistema. El registro cruza todas las clases y métodos registrados.

Todas las implementaciones de AOP tienen algunas expresiones transversales que encapsulan cada preocupación en un solo lugar. La diferencia entre las implementaciones radica en el poder, la seguridad y la facilidad de uso de las construcciones proporcionadas. Por ejemplo, interceptores que especifican los métodos para expresar una forma limitada de corte transversal, sin mucho soporte para seguridad de tipos o depuración. AspectJ tiene varias expresiones de este tipo y las encapsula en una clase especial, un aspecto . Por ejemplo, un aspecto puede alterar el comportamiento del código base (la parte de un programa que no es un aspecto) aplicando consejos (comportamiento adicional) en varios puntos de unión (puntos en un programa) especificados en una cuantificación o consulta llamada punto de corte.(que detecta si un punto de unión dado coincide). Un aspecto también puede realizar cambios estructurales compatibles con binarios en otras clases, como agregar miembros o padres.

AOP tiene varios antecedentes directos A1 y A2: [1] protocolos de reflexión y metaobjetos , programación orientada a sujetos , filtros de composición y programación adaptativa. [2]