Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

25
Programación de Programación de Sistemas 2003: Sistemas 2003: Java Beans Java Beans Christian Lalanne A. Rodrigo Pinto A.

Transcript of Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Page 1: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Programación de Programación de Sistemas 2003: Sistemas 2003:

Java BeansJava Beans

Christian Lalanne A.

Rodrigo Pinto A.

Page 2: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Java Beans

Introducción Instalación del Kit BDK1.1 Propiedades y Características importantes

de JavaBeans Como crear tus propios Beans Ejemplos: Gauge.jar, Tcanv.jar, Juggler

Page 3: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Introducción

Programación por componentes de software Reutilizacion de codigo Posibilidad de fabricar componentes de software u ocupar

componentes creadas, para luego, ensamblarlos y crear un programa final

Proporciona una herramienta de diseño facil de usar: BeanBox

En general, estas nuevas tecnologías que permiten a los programadores construir entornos de programación visual, se conocen como ingeniería de software basado en componentes, En Java, esta tecnología es denominada JavaBeans

Page 5: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Características principales de los Beans (Introspección)

Capacidad de informar dinámicamente a las herramientas de desarrollo visual de métodos , propiedades y tipo de eventos que pueden generar o a los que pueden responder las componente de software.

La clase Introspector de java.beans proporciona un conjunto de métodos estáticos para que las herramientas obtengan información, métodos y eventos de un componente de software.

Page 6: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Características principales de los Beans (Introspección)

Esquemas de reflexión y diseño: Básicamente la clase introspector “lee” los nombres de los métodos de una clase de componentes, identifica las propiedades de un componente de software y también la generación de eventos de este componente, basándose en el paquete java.lang.reflect que ofrece la posibilidad de identificar los campos y métodos de una clase; esto, en ausencia de información explicita

Especificación Explicita: la información sobre una componente de software puede ser proporcionada (optativo) por una clase especial de información sobre componentes de software que implementa la interfaz BeanInfo.

Page 7: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Características principales de los Beans (Introspección)

Esta interfaz (BeanInfo) proporciona métodos para transportar explícitamente información sobre los métodos, propiedades y eventos de una componente de software. La clase Introspector reconoce las clases BeanInfo por su nombre. (por ejemplo, si una componente de software se ha implementado a través de la clase math, la clase BeanInfo relacionada se llamaría mathBeanInfo).

Page 8: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Propiedades de los componentes de Software (Definición)

Son las características de apariencia y comportamiento de un Bean, pueden ser modificadas durante el diseño

En general, existen 3 tipos de propiedades de los componentes de software: indexadas, limitadas y restringidas

Propiedades indexadas: es una propiedad que puede tomar un arreglo de valores

Propiedades limitadas: aquella que alerta a otros objetos cuando su valor cambia

Propiedades restringidas: el objeto notificado puede confirmar o denegar el cambio

Page 9: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Propiedades de los componentes de Software (Eventos)

Los Beans utilizan los eventos para comunicarse con otros Beans. Un Bean que requiere recibir eventos (oyente) registra su interés con un Bean que lanza eventos (fuente)

Las Herramientas de desarrollo pueden examinar un Bean para determinar que eventos puede disparar y cuales puede manejar.

Page 10: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Propiedades de los componentes de Software (Persistencia)

Permite a los Beans guardar su estado y restaurarlo posteriormente

Los Java Beans utilizan la serialización de objetos para soportar la persistencia.

Page 11: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Propiedades de los componentes de Software (Métodos)

Los métodos de un Bean no son diferentes a los métodos de Java, y pueden ser llamados desde otros Beans

Existen 2 tipos: obtención y establecimiento Los nombres de métodos de obtención

comienzan por get. Los nombres de métodos de establecimiento

comienzan por set.

Page 12: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Métodos utilizados con propiedades simples

Los metodos get...() y set...() se ocupan para obtener y setear propiedades simples de un Bean.

Ej:

Public nametype getname().

Public void setname (nametype namevalue). Una propiedad es de solo lectura o solo escritura

si falta uno de los métodos de acceso anteriores.

Page 13: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Métodos utilizados con propiedades indexadas

Un componente de software que tenga una propiedad indexada poseerá métodos que admitan lectura y escritura de elementos individuales del arreglo o del arreglo completo de propiedades.Ej:

Public widgettype getwidget(int index).Public widgettype[] getwidget().

Public void setwidget(int index, widgettype widgetvalue).Public void setwidget(widgettype[] widgetvalues).

Page 14: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Métodos utilizados con propiedades limitadas

Las propiedades limitadas requieren que se notifique a ciertos objetos cuando estas experimentan un cambio.

La notificación del cambio se realiza a través de un PropertyChangeEvent.

Los objetos que deseen ser notificados del cambio en una propiedad limitada deberán registrarse como auditores.

Page 15: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Métodos utilizados con propiedades limitadas

Así, el componente de software que este implementando la propiedad limitada suministrará métodos de esta forma:

Public void addPropertyChangeListener(PropertyChangeListener 1).

Public void removePropertyChangeListener(PropertyChangeListener 1).

Para registrar auditores en el PropertyChangeEvent de una propiedad específica se deben proporcionar los métodos siguientes.

Public void addPropertyNameListener(PropertyChangeListener 1).

Public void removePropertyNameListener(PropertyChangeListener 1).

Page 16: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Métodos utilizados con propiedades limitadas

En estos métodos, PropertyName se sustituye por el nombre de la propiedad limitada.

Los objetos que implementan la interfaz PropertyChangeListener, deben implementar el método PropertyChange(). Este método lo invoca el componente de software para todos sus auditores registrados, con el fin de informarles de un cambio en una propiedad.

Los métodos que se utilizan con propiedades simples e indexadas que veíamos anteriormente se aplican también a las propiedades limitadas

Page 17: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Métodos utilizados con propiedades restringidas

Para acceder a propiedades restringidas, se ofrecen los siguientes métodos de registro de eventos:

Public void addVetoableChangeListener(VetoableChangeListener 1).

Public void removeVetoableChangeListener (VetoableChangeListener 1).

Public void addPropertyNameListener(VetoableChangeListener 1).

Public void removePropertyNameListener(VetoableChangeListener 1).

Page 18: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Métodos utilizados con propiedades restringidas

Los objetos que implementan la interfaz VetoableChangeListener deben implementar el método vetoablechange().

Este método lo invoca el componente de software para todos sus auditores registrados con el fin de informarles del cambio de una propiedad.

Todo objeto que no apruebe el cambio en una propiedad puede arrojar un PropertyVetoException dentro del método vetoablechange() para informar al componente cuya propiedad restringida hubiera cambiado de que el cambio no se ha aprobado.

Page 19: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Métodos utilizados con propiedades restringidas

Los métodos que se utilizan con propiedades simples e indexadas que veíamos anteriormente se aplican también a las propiedades restringidas

Page 20: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Ejemplos:

Juggler SimpleBean

Page 21: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Convertir una clase en un Bean

Para convertir cualquier clase creada en un Bean, debemos seguir ciertas reglas:

Debe poderse instanciar: no se puede convertir una interfaz o una clase abstracta en un Bean.

Debe tener un constructor predeterminado o constructor por defecto ej: si la clase se llama Mybean, debe proporcionar un constructor Mybean( ).

Page 22: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Convertir una clase en un Bean

Debe ser persistente: Debe implementar la interfaz Serializable o la interfaz Externalizable, que permiten que se copie como una serie de bytes en un flujo.

Page 23: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Ejemplos:

Gauge.jar

Tcanv.jar

Page 24: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Las clases e interfaces de los paquetes Java.beans están organizadas en las categorías de: soporte de diseño, soporte de introspección y soporte de cambios en el manejo de eventos.

La especificación de estas clases (métodos disponibles, etc), se encuentran en la Documentación del proyecto disponible en http://alumnos.elo.utfsm.cl/~wayne

Page 25: Programación de Sistemas 2003: Java Beans Christian Lalanne A. Rodrigo Pinto A.

Preguntas