2.4.Despliegue con repositorio
Esta es la tercera categoría. Se vuelve a usar un repositorio, pero de una manera diferente a la utilizada en la anterior categoría. El único ejemplo que se propondrá será JavaBeans.
Composición y depósito de componentes
Al igual que con el diseño con repositorio, en este modelo los componentes base vuelven a depositarse en un repositorio (y, de nuevo, no tienen sentido fuera de él). Sin embargo, ahora hay una diferencia: la composición no puede tener lugar durante la fase de diseño. Esta tendrá lugar durante la fase de despliegue, a lo largo de la cual se podrá acceder al repositorio para obtener los componentes que serán usados en nuevas composiciones.
Un JavaBeans es una clase escrita en lenguaje Java y, como cualquier clase, consta de métodos y propiedades. Esta clase cuenta con la participación de eventos. De manera formal se puede decir que esta clase Java debe seguir las siguientes normas:
Debe implementar el interfaz serializable. Esta interfaz obliga a implementar un método que hará que la clase sea persistente. En otras palabras, se podrá salvar el estado actual del objeto de la clase y restaurarlo posteriormente.
Presencia de un constructor sin argumentos.
Métodos setters (de modificación) y getters (de acceso) para cada una de las propiedades de la clase.
Ejemplo básico de bean
En el código se muestra un bean básico. Como se observa, tiene su constructor sin parámetros y los métodos getters y setters para cada una de las dos propiedades de la clase. El método paint deriva de la clase Canvas, y en su implementación indica lo que hay que hacer cada vez que se llama al método repaint (básicamente, lo que hace es repintar según el estado actual del objeto determinado por el mensaje).
Los JavaBeans se depositan en el ToolBox del BDK (Beans Development Kit), que es el repositorio. Para proceder a la ejecución o composición de JavaBeans estos deben ser llevados a un contenedor como BeanBox.
Recuerde
El Toolbox es el repositorio donde se almacenan los JavaBeans. La instanciación y composición tiene lugar dentro del BeanBox.
La composición se lleva a cabo a través de eventos, de manera indirecta, con la participación de una clase adaptadora de eventos (EventAdaptor). BeanBox se encarga de manejar esta clase de una forma automática, llevando a cabo el enrutado y gestionando la comunicación entre eventos. En la siguiente imagen se muestra un ejemplo:
En la imagen se puede apreciar que hay un contenedor BeanBox con dos componentes: Bean A y Bean B. El primer bean tiene un método llamado
pulsarBoton que, como su nombre puede sugerir, se dispara al pulsar un botón asociado al bean. Este evento provoca que se muestre un mensaje de texto a través del segundo bean. La comunicación resultante entre ambos beans se lleva a cabo a través de la clase EventAdaptor que, como se sabe, es gestionada de manera automática por BeanBox.
Actividades
5.Establezca las diferencias entre un Enterprise Java Beans (EJB) y un JavaBean.
Aplicación práctica sobre JavaBean
Definir un JavaBean para representar un artículo de una revista online. El bean, aparte de los métodos getters y setters, consta de un método “Imprimir” que retorna una cadena con toda la información anterior. La información que se desea mantener es “título”, “cuerpo” y “autor”. No olvidar implementar Serializable, usar el constructor por defecto y definir los getters y setters.
Solución (Propuesta)
Lo más importante es el uso de la interfaz Serializable plasmada a través de implements en la definición de la clase. A continuación se definen tres variables para cada uno de los datos que se desean almacenar, teniendo cada uno su correspondiente getter y setter.
También se ha creado el constructor por defecto para casar con la definición de JavaBean. El último requerimiento se aprecia en el método imprimir(), donde se usa una cadena llamada información para recoger los datos solicitados y, posteriormente, devolverlos.
2.5.Diseño con repositorio
La última categoría permite el diseño dentro del repositorio. El ejemplo abarcará la tecnología Koala.
En este diseño la composición se puede dar dentro del repositorio, permitiendo que los componentes resultantes de una composición estén en condiciones de poder ser almacenados y retirados del repositorio.
Esta es la diferencia principal frente a la segunda categoría: que los componentes recién compuestos no pueden ser almacenados (y, por extensión, tampoco retirados) dentro del repositorio.
Respecto a la fase de ejecución hay que decir que no permite composición. La composición de los componentes durante esta fase coincidirá con la realizada durante el diseño.
Este diseño usa tres conectores especiales: Binding, Glue Code y Switch, los cuales serán detallados en el siguiente punto.
A rasgos generales, un componente de Koala es una unidad de diseño que consta de una especificación y una implementación. En el aspecto que interesa para llevar a cabo la composición, el componente puede presentar múltiples interfaces, cada una de ellas representada por un rectángulo conteniendo un triángulo en su interior.
A continuación se detallan los tres tipos de conectores previamente mencionados:
Conector “Binding”: es usado para conectar la interfaz requerida de un componente con la interfaz proporcionada por otro componente. Ambas interfaces tienen que ser del mismo tipo.
Читать дальше