AOP frente a programación orientada a objetos
AOP (programación orientada a aspectos) y OOP (programación orientada a objetos) son dos paradigmas de programación. Un paradigma de programación es un estilo fundamental de programación de computadoras. Los paradigmas de programación difieren en cómo se representa cada elemento de los programas y cómo se define cada paso para resolver problemas. Como sugiere el nombre, OOP se enfoca en representar problemas usando objetos del mundo real y su comportamiento, mientras que AOP se ocupa de desglosar los programas en preocupaciones transversales separadas.
¿Qué es AOP?
AOP es un paradigma de programación, que se ocupa de dividir un programa en áreas cohesivas de funcionalidad (llamadas preocupaciones) que atraviesan múltiples áreas, para aumentar la modularidad. Muchos otros paradigmas de programación brindan soporte para abstracciones (como clases, métodos, etc.) para agrupar y encapsular preocupaciones en entidades únicas. Pero las preocupaciones (como "Registrar") son ejemplos de preocupaciones transversales, porque cada parte registrada del sistema se ve afectada por la estrategia utilizada para el registro. El enfoque principal de todas las implementaciones de AOP es tener expresiones transversales adecuadas para capturar todas las preocupaciones en una sola ubicación.
¿Qué es la programación orientada a objetos?
En la programación orientada a objetos, la atención se centra en pensar en el problema a resolver en términos de elementos del mundo real y representar el problema en términos de objetos y su comportamiento. Las clases representan las representaciones abstractas de objetos del mundo real. Las clases son como planos o plantillas, que reúnen elementos similares o cosas que se pueden agrupar. Las clases tienen propiedades llamadas atributos. Los atributos se implementan como variables globales y de instancia. Los métodos en las clases representan o definen el comportamiento de estas clases. Los métodos y atributos de las clases se denominan miembros de la clase. Una instancia de una clase se llama objeto. Por lo tanto, un objeto es una estructura de datos que se parece mucho a algún objeto del mundo real.
Hay varios conceptos importantes de programación orientada a objetos, como la abstracción de datos, la encapsulación, el polimorfismo, la mensajería, la modularidad y la herencia. Por lo general, la encapsulación se logra haciendo que los atributos sean privados, mientras se crean métodos públicos que se pueden usar para acceder a esos atributos. La herencia permite al usuario extender clases (llamadas subclases) de otras clases (llamadas superclases). El polimorfismo permite al programador sustituir un objeto de una clase en lugar de un objeto de su superclase. Por lo general, los sustantivos que se encuentran en la definición del problema se convierten directamente en clases en el programa. Y de manera similar, los verbos se convierten en métodos. Algunos de los lenguajes OOP más populares son Java y C.
¿Cuál es la diferencia entre AOP y OOP?
La diferencia clave entre OOP y AOP es que el enfoque de OOP es dividir la tarea de programación en objetos, que encapsulan datos y métodos, mientras que el enfoque de AOP es dividir el programa en preocupaciones transversales. De hecho, AOP no es un competidor de OOP, porque surgió del paradigma OOP. AOP extiende OOP al abordar algunos de sus problemas. AOP presenta formas ordenadas de implementar preocupaciones transversales (que podrían haber estado dispersas en varios lugares en la implementación de OOP correspondiente) en un solo lugar. Por lo tanto, AOP hace que el programa sea más limpio y tenga un acoplamiento más flexible.