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 de función cuando el nombre de la función comienza con 'set ' ". Esto permite comportamientos que no son fundamentales para la lógica empresarial. (como el registro) para agregarlo a un programa sin saturar el núcleo del código de la funcionalidad.

AOP incluye métodos y herramientas de programación que apoyan 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 inquietudes en entidades separadas e independientes al proporcionar abstracciones (por ejemplo, funciones, procedimientos, módulos, clases, métodos) que se pueden utilizar para implementar, abstraer y componer estas inquietudes. 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 afecta necesariamente a todas las partes registradas del sistema. De este modo, 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 usabilidad de las construcciones proporcionadas. Por ejemplo, interceptores que especifican los métodos para expresar una forma limitada de corte transversal, sin mucho soporte para la seguridad de tipos o la depuración. AspectJ tiene varias de estas expresiones y las encapsula en una clase especial, un aspecto . Por ejemplo, un aspecto puede alterar el comportamiento del código base (la parte que no es de aspecto de un programa) aplicando consejos (comportamiento adicional) en varios puntos de unión (puntos en un programa) especificados en una cuantificación o consulta llamada pointcut.(que detecta si un punto de unión determinado 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 al sujeto , filtros de composición y programación adaptativa. [2]