Saltar la navegación

2.3.- Propiedades compartidas y restringidas.

Caso práctico

Juan continúa comentando sus problemas de propiedades a Ada.

Imagen de Juan, protagonista de los casos prácticos.
Ministerio de Educación y Formación Profesional (Elaboración propia)

- ¿Y qué me recomiendas si quiero que me muestren diferentes páginas según el elemento seleccionado?

Tengo un componente para el menú y otro para el contenido que se llama panel.

-Puedes usar una propiedad compartida entre ambos que haga que el contenido cambie cuando se modifique el menú.

Los objetos de una clase que tiene una propiedad compartida o ligada notifican a otros objetos oyentes interesados, cuando el valor de dicha propiedad cambia, permitiendo a estos objetos realizar alguna acción. Cuando la propiedad cambia, se crea un objeto (de una clase que hereda de ObjectEvent) que contiene información acerca de la propiedad (su nombre, el valor previo y el nuevo valor), y lo pasa a los otros objetos oyentes interesados en el cambio.
Imagen de un candado abierto.
Intef. Félix Vallés Calvo

La notificación del cambio se realiza a través de la generación de un PropertyChangeEvent. Los objetos que deseen ser notificados del cambio de una propiedad limitada deberán registrarse cómo auditores. Así, el componente de software que esté implementando la propiedad limitada suministrará métodos de esta forma:

public void addPropertyChangeListener (PropertyChangeListener l)
            public void removePropertyChangeListener (PropertyChangeListener l)

Los métodos precedentes del registro de auditores no identifican propiedades limitadas específicas. Para registrar auditores en el PropertyChangeEvent de una propiedad específica, se deben proporcionar los métodos siguientes:

public void addPropertyNameListener (PropertyChangeListener l)
            public void removePropertyNameListener (PropertyChangeListener l)

En los métodos precedentes, 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 de una propiedad.

Una propiedad restringida es similar a una propiedad ligada salvo que los objetos oyentes que se les notifica el cambio del valor de la propiedad tienen la opción de vetar cualquier cambio en el valor de dicha propiedad.

Los métodos que se utilizan con propiedades simples e indexadas que veíamos anteriormente se aplican también a las propiedades restringidas. Además, se ofrecen los siguientes métodos de registro de eventos:

public void addPropertyVetoableListener (VetoableChangeListener l)
            public void removePropertyVetoableListener (VetoableChangeListener l)
            public void addPropertyNameListener (VetoableChangeListener l)
            public void removePropertyNameListener (VetoableChangeListener l)

Los objetos que implementa 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 en una propiedad.

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

Autoevaluación

Pregunta

Supongamos que Juan está implementando su aplicación de interfaz gráfica con un componente Tmenu que contiene las opciones del programa y un componente panel que usa para mostrar una página asociada a la opción seleccionada, el menú tiene una propiedad que se denomina OpcionActiva que cambia cada vez que el usuario hace clic sobre una opción concreta, ¿qué tipo de propiedad debe usar para implementar OpcionActiva?

Respuestas

Propiedad compartida.

Restringida.

Retroalimentación