Definición de JavaBean Un JavaBean o bean es un componente hecho en software que se puede reutilizar y que puede ser manipulado visualmente por una herramienta de programación en lenguaje Java. Aunque los beans individuales pueden variar ampliamente en funcionalidad desde los más simples a los más complejos, todos ellos comparten las siguientes características: • • • • • Introspection: Permite a la IDE analizar cómo trabaja el bean Customization: El programador puede alterar la apariencia y la conducta del bean. Events: Informa a la IDE los sucesos que pueden ser generados en respuesta a las acciones del usuario o del sistema, y también los sucesos que puede manejar. Properties: Permite cambiar los valores de las propiedades del bean para personalizarlo (customization). Persistence: Se puede guardar el estado de los beans que han sido personalizados por el programador. En general, un bean es una clase que obedece ciertas reglas: • • • Un bean debe tener un constructor por defecto (sin argumentos) Un bean debe tener persistencia, es decir, implementar el interface Serializable. Un bean debe tener introspección (instrospection). Los IDE reconocen ciertas pautas de diseño, nombres de las métodos y definiciones de las clases, que permiten a la herramienta de programación mirar dentro del bean y conocer sus propiedades y su conducta. Propiedades Una propiedad es un atributo del JavaBean que afecta a su apariencia o a su conducta. Por ejemplo, un botón puede tener las siguientes propiedades: tamaño, posición, título, color de fondo, color de texto, si está o no habilitado, etc. Las propiedades de un bean pueden examinarse y modificarse mediante métodos que acceden a dicha propiedad, y pueden ser de dos tipos: • • getter method: lee el valor de la propiedad setter method: cambia el valor de la propiedad. Las especificaciones JavaBeans definen un conjunto de convenciones (design patterns) que el IDE usa para inferir qué métodos corresponden a propiedades. public void setNombrePropiedad(TipoPropiedad valor) public TipoPropiedad getNombrePropiedad( ) Propiedades simples Una propiedad simple representa un único valor. Ejemplo: private String nombre; //métodos set y get de la propiedad denominada nombre public void setNombre(String nombre){ this.nombre=nombre; } public String getNombre(){ return this.nombre; } En el caso de que dicha propiedad sea booleana se escribe: private boolean conectado=false; //métodos set y get de la propiedad denominada conectado public void setConectado(boolean nuevoValor){ this.conectado=nuevoValor; } public boolean isConectado(){ return this.conectado; } Propiedades indexadas Una propiedad indexada representa un array de valores. private int[] numeros={1,2,3,4}; //métodos set y get de la propiedad denominada numeros, //para el array completo public void setNumeros(int[] numeros){ this.numeros=numeros; } public int[] getNumeros(){ return this.numeros; } //métodos get y set para un elemento de array public void setNumeros(int indice, int nuevoValor){ this.numeros[indice]=nuevoValor; } public int getNumeros(int indice){ return this.numeros[indice]; } Propiedades ligadas (bound) Una propiedad para la cual un cambio en su valor, resulta en una notificación a otros objetos. Propiedades restringidas (constrained) Una propiedad para la cual un ambio en su valor resulta en una validación por otro objeto. El otro objeto puede rechazar el cambio si no es apropiado. Recursos web http://java.sun.com/developer/onlineTraining/Beans/Beans1/ http://java.sun.com/docs/books/tutorial/javabeans/ http://java.sun.com/javase/technologies/desktop/javabeans/docs/spec.html