Programación orientada a materias


En informática , la programación orientada a sujetos es un paradigma de software orientado a objetos en el que el estado (campos) y el comportamiento (métodos) de los objetos no se consideran intrínsecos a los objetos en sí, sino que son proporcionados por diversas percepciones subjetivas ("sujetos"). de los objetos. El término y los conceptos se publicaron por primera vez en septiembre de 1993 en un documento de conferencia [1] que luego fue reconocido como uno de los tres documentos más influyentes que se presentaron en la conferencia entre 1986 y 1996. [2] Como se ilustra en ese documento, Se hace una analogía con el contraste entre las visiones filosóficas de Platón y Kant.con respecto a las características de los objetos "reales", pero aplicados a los de software. Por ejemplo, si bien todos podemos percibir que un árbol tiene una altura, peso, masa foliar, etc. medibles, desde el punto de vista de un pájaro, un árbol también puede tener medidas de valor relativo para la alimentación o con fines de anidación, o desde el punto de vista de un tasador de impuestos, puede tener un determinado valor imponible en un año determinado. Ni la información de estado adicional del ave ni la del tasador de impuestos necesitan verse como intrínsecos al árbol, sino que se suman a las percepciones del ave y del tasador de impuestos, y según el análisis de Kant, lo mismo puede ser cierto incluso de las características que pensamos. como intrínseco.

La programación orientada a materias aboga por la organización de las clases que describen objetos en "materias", que pueden componerse para formar materias más amplias. En los puntos de acceso a campos o métodos , se pueden componer contribuciones de varios sujetos. Estos puntos se caracterizaron como los puntos de unión [3] de los sujetos. Por ejemplo, si se tala un árbol, los métodos involucrados pueden necesitar unir el comportamiento del ave y los sujetos del tasador de impuestos con el del propio árbol. Por lo tanto, es fundamentalmente una visión de la naturaleza compositiva del desarrollo de software, en contraposición a la naturaleza algorítmica (procedimental) o de ocultación de representación (objeto).

La introducción de la programación orientada a aspectos en 1997 [4] planteó preguntas sobre su relación con la programación orientada a materias y sobre la diferencia entre materias y aspectos. Estas preguntas estuvieron sin respuesta durante algún tiempo, pero se abordaron en la patente sobre programación orientada a aspectos presentada en 1999 [5] en la que dos puntos emergen como diferencias características del arte anterior:

En la visión orientada al sujeto, el corte transversal puede colocarse por separado del aspecto (sujeto) y el comportamiento no es forzado por el aspecto, sino regido por reglas de composición. En retrospectiva [6] también es posible distinguir la programación orientada a aspectos por su introducción y explotación del concepto de un punto de acceso similar a una consulta para imponer externamente los puntos de unión utilizados por los aspectos de manera general.

En la presentación de la programación orientada al sujeto, los puntos de unión se restringieron deliberadamente al acceso al campo y a la llamada al método con el argumento de que esos eran los puntos en los que se diseñaron marcos bien diseñados para admitir una extensión funcional. El uso de cortes de puntos impuestos externamente es una capacidad lingüística importante, pero sigue siendo una de las características más controvertidas de la programación orientada a aspectos. [7]

Para el cambio de milenio, estaba claro que varios grupos de investigación estaban siguiendo diferentes tecnologías que empleaban la composición o la unión de estado y función empaquetados por separado para formar objetos. [8] Para distinguir el campo de interés común de la programación orientada a aspectos con sus definiciones de patentes particulares y para enfatizar que la tecnología de composición se ocupa de algo más que la fase de codificación del desarrollo de software, estas tecnologías se organizaron juntas bajo el término Orientado a aspectos Desarrollo de software , [9] y se inició una organización y un ciclo de conferencias internacionales sobre el tema. Como programación orientada a aspectos, programación orientada a materias, filtros de composición, programación orientada a funciones y los métodos adaptativos se consideran enfoques de desarrollo de software orientados a aspectos.