¿Cuáles son las diferencias entre la programación orientada a aspectos, orientada a temas y orientada a roles?

13

Sé que hay muchos artículos que describen estos tres paradigmas, pero estoy buscando una explicación esquemática.

Hay algunas descripciones muy buenas de programación orientada a aspectos aquí, por lo que formulo esta pregunta con la esperanza de obtener el tipo de respuesta de alta calidad que las personas de Stack Overflow están acostumbradas a entregar.

    
pregunta Adam Lear 19.11.2011 - 08:24

1 respuesta

9

Uno puede responder esto escribiendo un libro sobre esto. Sin embargo, aquí hay una comparación básica

1. Programación orientada al tema

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ínseco (es decir, se basan en un modelo que lo describe de manera independiente). y en base a esto se derivan sus atributos (propiedades) y métodos (comportamiento). La aplicación solo hace el uso de estas propiedades y comportamiento. Contrariamente a esto, en la programación orientada al sujeto, ningún objeto existe (y se modela) en tal aislamiento. En el proceso, los comportamientos de los objetos son proporcionados por los otros "sujetos" de los objetos que están más allá del alcance y el control del autor del objeto original. Piense en ello como una forma de extender varios "comportamientos definibles independientemente. "en el objeto. Creo que esto sería mucho más que 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 al Sujeto: Una Crítica de los Objetos Puros , William Harrison y Harold Ossher". Aquí hay otro buen paper . Aunque personalmente creo que este es un marco teórico. No sé si hay algún idioma / implementación

Consulte this , < a href="http://www.research.ibm.com/designpatterns/pubs/ph-feb98.pdf"> this y esto para más información.

2. Programación Orientada a Aspectos

La orientación orientada a aspectos se ha originado desde concepto de " Separación de oncerns ". Básicamente, se extiende la programación orientada a objetos u orientada a objetos para las preocupaciones que son transversales. Sobre la simplificación, se puede decir que el software tiene requisitos funcionales y no funcionales . Estos requisitos transversales incluyen ejemplos como registro, manejo de excepciones, sincronización de subprocesos, administración de memoria, 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 uno de tales preocupaciones o aspectos pueden ser independientes entre sí, formando un "espacio de preocupación" multidimensional. , (lea esto ).

Algunas de las buenas implementaciones prácticas de Aspect Oriented son AspectJ y AspectC ++ y muchos más . Consulte esto .

3. Programación orientada a roles
A medida que evolucionamos hacia agentes, muchas veces es necesario definir "roles" y objetivos en los que las actividades exactas que el agente termina desempeñando dependen del entorno en el que se encuentra. Esto es análogo a la comprensión conceptual humana.

El objetivo principal es separar el objetivo de la tarea de su capacidad de cooperación definiendo la 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 también puede percibir el entorno. Consulte esto .

Hay varios marcos propuestos en la investigación para el modelado y las implementaciones basadas en roles. Algunos de ellos son ROPE , BRAIN , ALAADIN y más .

    
respondido por el Dipan Mehta 21.11.2011 - 03:23

Lea otras preguntas en las etiquetas