stringtranslate.com

Filtros de composición

El modelo de filtros de composición denota una extensión modular del modelo de objetos convencional . Proporciona una solución para una amplia gama de problemas en la construcción de aplicaciones grandes y complejas. En particular, una implementación de filtros de composición proporciona una capa de abstracción para sistemas de paso de mensajes.

Los filtros de composición funcionan modificando el comportamiento de un objeto mediante la manipulación de los mensajes entrantes y salientes. Esto se hace con la ayuda de filtros de entrada y salida que están controlados por condiciones.

Historia y motivación

En la computación concurrente y distribuida , existen muchos problemas, como la dispersión y la confusión de código, que eran difíciles de manejar utilizando los modelos tradicionales orientados a objetos . Surgió la necesidad de desarrollar un nuevo modelo de desarrollo de software que abordara estas preocupaciones y esto dio como resultado la formación del paradigma de desarrollo de software orientado a aspectos . Varios modelos en este paradigma se desarrollaron simultáneamente, y uno de ellos es el Modelo de Objetos de Filtros de Composición. Los creadores de este modelo fueron Mehmet Aksit y varios estudiantes de doctorado (Lodewijk Bergmans, Jan Bosch, Bedir Tekinerdogan) y muchos estudiantes de maestría del Grupo TRESE en la Universidad de Twente en los Países Bajos. Se basó en el lenguaje Sina [1] [2] que fue desarrollado por Mehmet Aksit en su tesis doctoral. Se han realizado muchos avances en el modelo desde entonces. [3] [4]

Diseño

El diseño del modelo de filtros de composición es una extensión del diseño del modelo de objetos del núcleo . El diseño consta de dos partes principales: el núcleo (parte de implementación) y la capa externa (parte de interfaz). Las extensiones se realizan en la parte de interfaz para producir el modelo de filtros de composición a partir del modelo de objetos del núcleo tradicional. [5]

Parte de implementación

La parte de implementación o núcleo consta de una única capa con tres tipos de componentes:

  1. Variables de instancia
  2. Métodos
  3. Condiciones

También consta de un límite de encapsulación que separa las capas de implementación y de interfaz.

Variables de instancia

Las variables de instancia son los únicos componentes del núcleo que están completamente encapsulados. No es posible acceder a estas variables desde fuera del límite. En este modelo, las variables de instancia pueden ser de cualquier tipo. Los tipos de datos primitivos, como números enteros, caracteres y tipos de datos definidos por el usuario, como clases y enumeraciones, se consideran variables de instancia.

Métodos

El comportamiento de un objeto se implementa a través de sus métodos. El método consta de dos partes: el cuerpo del método y la declaración del método. Las acciones que se espera que realice un objeto al ser invocado se definen en el cuerpo del método. La declaración del método consta del nombre del método, el nombre y el tipo de los parámetros y el tipo de retorno. Los métodos no están completamente encapsulados en el núcleo y se pueden utilizar en la parte de la interfaz.

Método inicial

El método inicial es un método especial cuya función es similar a la de los constructores en otros modelos orientados a objetos.

Condiciones

Un método que tiene un tipo de retorno booleano y una lista de parámetros vacía se denomina condición. Las condiciones se pueden utilizar para proporcionar información sobre el estado actual de un objeto. De manera similar a los métodos, las condiciones también se pueden utilizar en la parte de interfaz y la mayor parte del uso de las condiciones se produce fuera de la parte de implementación.

Parte de la interfaz

La parte de interfaz del modelo de objetos de filtros de composición consta de dos componentes principales: los filtros de entrada y de salida. También contiene dos componentes de apoyo: los internos y los externos. Además, desde la parte de interfaz también se puede acceder a los métodos y condiciones de la parte de implementación.

Filtros

Los filtros de entrada y salida tienen un diseño similar, pero varían en funcionalidad. Los filtros de entrada se encargan de procesar los mensajes que se envían al objeto, mientras que los filtros de salida lo hacen con los mensajes que envía el objeto. La función principal de los filtros es manipular los mensajes que llegan y pasarlos a la siguiente capa. Los filtros están diseñados en capas, un mensaje tiene que pasar por una capa para llegar a la siguiente. Cada capa puede constar de diferentes filtros. Cada filtro especifica un patrón particular. El patrón define una sintaxis a la que debe ajustarse un mensaje entrante o saliente. Cuando llega un mensaje, existen dos posibilidades: el mensaje es rechazado por el filtro o es manipulado por el filtro. La forma en que se rechaza o manipula un mensaje depende del tipo de filtro.

Diseño de filtros

Un filtro se diseña utilizando un conjunto de elementos de filtro. Este conjunto está ordenado, ya que cada mensaje se aplica de izquierda a derecha. Esto continúa hasta que se produce una coincidencia.

Cada elemento filtrante consta de tres componentes: una pieza de condición, una pieza de adaptación y una pieza de sustitución.

Internos

Los elementos internos son objetos anidados que hacen referencia a los filtros de entrada. Están completamente encapsulados en la parte de interfaz. Se crean automáticamente durante la creación de un objeto.

Exterioridad

Los objetos externos son objetos anidados que hacen referencia a los filtros de salida. Se utilizan para declarar objetos que se encuentran fuera del modelo de filtros de composición, pero que aún se encuentran dentro de su alcance. Un ejemplo de estos objetos son las variables globales.

Lenguaje de programación SINA

El lenguaje de programación SINA es un lenguaje de programación orientado a objetos que fue diseñado para implementar las características del modelo de objetos de filtros de composición. Cada programa SINA es una colección de clases, cada una de las cuales puede separarse en la implementación y la interfaz. La primera implementación de SINA fue para Smalltalk y se ejecutó solo en ese entorno. [6]

Aplicaciones

Tipos de comunicación abstracta

Un objeto de tipo de comunicación abstracta abstrae la comunicación y las interacciones entre objetos. Los objetivos de un ACT son mejorar la reutilización en toda la aplicación, ocultar los detalles de implementación en módulos separados y reducir la complejidad del modelado de arquitecturas de comunicaciones en capas.

Los expertos [ ¿quiénes? ] creen que los modelos convencionales orientados a objetos son de un nivel demasiado bajo porque la semántica de la comunicación entre dos objetos no se puede extender fácilmente a otros objetos. Por lo tanto, existía la necesidad de un mecanismo de lenguaje de alto nivel que se pueda utilizar para modelar arquitecturas de sistemas en capas en las que cada sistema de una capa intercambia datos con sus capas adyacentes. Los mecanismos como la herencia solo proporcionan abstracción a nivel de objeto, pero fallan en la abstracción de la comunicación entre objetos.

El modelo de filtros de composición se aplicó a las comunicaciones abstractas entre objetos. El módulo de objetos se amplió con la introducción de filtros de entrada y salida que determinan qué se debe hacer con los mensajes recibidos y enviados.

Las ventajas notables del ACT incluyen:

Modelo de integración de bases de datos

Los filtros de composición se pueden utilizar para incorporar características de la base de datos, como estructuras de datos dinámicas persistentes, uso compartido de datos, transacciones, vistas múltiples y acceso asociativo en un lenguaje orientado a objetos . Los mecanismos básicos orientados a objetos, como la herencia y la delegación, también son proporcionados por los filtros de composición. En el modelo de integración de bases de datos, las operaciones de base de datos, como unión, intersección, exclusión y selección, se desarrollan utilizando filtros de composición sin desintegrar los mecanismos orientados a objetos, como la abstracción de datos , la encapsulación , el paso de mensajes y la herencia . [8]

Otras implementaciones

Existen muchas implementaciones de filtros de composición (incluidas las implementaciones de SmallTalk y Java ). La ventaja de las implementaciones existentes es que no hay diferencia entre el modelo conceptual y el de implementación, lo que facilita la comprensión de la implementación de ciertas características. Sin embargo, el inconveniente es que estas implementaciones son lentas y tienen mucha sobrecarga. Una implementación en Java, concretamente ComposeJ, abordó este problema utilizando un enfoque de modificación de código fuente orientado al tiempo de compilación. [9]

Véase también

Referencias

  1. ^ Aksit, Mehmet (23 de marzo de 1989). "Sobre el diseño del lenguaje orientado a objetos Sina". Información de investigación de la Universidad de Twente .
  2. ^ Aksit, Mehmet. "Mecanismos de abstracción de datos en Sina/st". ACM Press. ISSN 0362-1340.
  3. ^ Aksit, Mehmet (1992). "Un modelo de integración de lenguaje y base de datos orientado a objetos: el enfoque de filtros de composición". ECOOP '92 Conferencia Europea sobre Programación Orientada a Objetos. Apuntes de conferencias en Ciencias de la Computación. Vol. 615. Springer Verlag, Berlín. págs. 372–395. doi :10.1007/BFb0053047. ISBN 3-540-55668-0.
  4. ^ Aksit, Mehmet (1992). "Obstáculos en el desarrollo de software orientado a objetos" (PDF) . ACM SIGPLAN Notices . 27 (10): 341–358. doi :10.1145/141937.141965.
  5. ^ "El modelo de objetos de filtros de composición". trese.cs.utwente.nl . Consultado el 18 de abril de 2019 .
  6. ^ Ziring, Neal. "Diccionario de lenguajes de programación". cgibin.erols.com . Consultado el 6 de febrero de 2016 .
  7. ^ Mehmet Aksit, Ken Wakita, Jan Bosch, Lodewijk Bergmans y Akinori Yonezawa, "Abstracción de interacciones de objetos mediante filtros de composición", Universidad de Twente, Universidad de Tokio e Instituto Tecnológico de Tokio
  8. ^ Mehmet Aksit, Lodewijk Bergmans y Sinan Vural, "Un modelo de integración de lenguaje y base de datos orientado a objetos: el enfoque de filtros de composición", Departamento de Ciencias de la Computación, Universidad de Twente
  9. ^ Johannes Cornelis Wichman, "ComposeJ: el desarrollo de un preprocesador para facilitar los filtros de composición en el lenguaje Java", Universidad de Twente

Enlaces externos