Sé que hay muchos documentos que describen estos tres paradigmas, pero estoy buscando una explicación esquemática.
Aquí hay algunas descripciones muy buenas de la programación orientada a aspectos, así que hago esta pregunta con la esperanza de obtener el tipo de respuesta de alta calidad que las personas en Stack Overflow están acostumbradas a entregar.
paradigms
aspect-oriented
role
Adam Lear
fuente
fuente
Respuestas:
Uno puede responder esto escribiendo un libro sobre esto. Sin embargo, aquí hay una comparación básica
1. Programación orientada a temas
La programación orientada al sujeto es una desviación radical del objeto orientado de la siguiente manera. En OO, los objetos se definen en términos de intrínsecos (es decir, basados en un modelo que lo describe independientemente). y en base a esto se derivan sus atributos (propiedades) y métodos (comportamiento). La aplicación solo hace usode estas propiedades y comportamiento. Contrariamente a esto, en la programación orientada al sujeto, no existe ningún objeto (y modelado) en tal aislamiento. En el proceso, pero los diversos "sujetos" de los objetos proporcionan comportamientos de los objetos que están más allá del alcance y control del autor del objeto original. Piense en ello como una forma de extender varios "comportamientos definibles independientemente". "en el objeto. Creo que esto estaría más allá de definir plantillas de herencia en comparación con lo que se está discutiendo aquí.
El origen indiscutible de los términos (y concepto) proviene del documento " Programación orientada a temas: una crítica de objetos puros , William Harrison y Harold Ossher". Aquí hay otro buen artículo . Aunque personalmente creo que este es un marco teórico. No sé si hay algún idioma / implementación
Vea esto , esto y esto para más información.
2. Programación orientada a aspectos
La programación orientada a aspectos se originó a partir del concepto de " separación de oncerns ". Básicamente, extiende la programación orientada a procedimientos u objetos para asuntos que son transversales. Sobre simplificar uno puede decir que el software tiene requisitos funcionales y no funcionales . Estos requisitos transversales incluyen ejemplos como el registro, el manejo de excepciones, la sincronización de subprocesos, la administración de memoria, la optimización, etc. Estos ASPECTOS transversales deben expresarse e implementarse por separado e independientemente de cualquier otra parte funcional.
Un trabajo integral en esta área es de IBM ; básicamente cada una de esas preocupaciones olos aspectos pueden ser independientes entre sí formando un "espacio de preocupación" multidimensional. , (lee esto ).
Algunas de las buenas implementaciones prácticas de Aspect Oriented son AspectJ y AspectC ++ y muchas más . Mira esto .
3. Programación orientada a roles
A medida que evolucionamos hacia los agentes, muchas veces es necesario definir "roles" y objetivos donde las actividades exactas que el agente termina realizando dependen del entorno en el que se encuentre. Esto es análogo al entendimiento conceptual humano.
El objetivo principal es desacoplar el objetivo de la tarea de su capacidad de cooperación mediante la definición de una construcción explícita llamada procesos de cooperación . Un rol se modela como un conjunto de capacidades y un comportamiento esperado. sin embargo, estos enfoques también permiten modelar el entorno de ejecución y cómo el agente / objeto puede percibir el entorno también. Mira esto .
Hay varios marcos propuestos en la investigación para el modelado basado en roles y las implementaciones. Algunos de ellos son CUERDA , CEREBRO , ALAADIN y más .
fuente