Saltar la navegación

6.- Persistencia del componente.

Caso práctico

Ada continúa hablando sobre los componentes...

-Fijaos en editor de texto que utilizáis a diario, o en el IDE con el que desarrolláis vuestros programas, cada uno lo utiliza de una forma, a María le gusta dejar el máximo espacio para poder escribir sus programas, sin embargo, Juan necesita tener cuantos más paneles y barras de herramientas mejor, y cada mañana, cuando encendéis el equipo, la configuración que habéis establecido continúa ahí, y podéis continuar vuestro trabajo en lugar de tener que empezar cambiar, añadir y quitar cosas, con los componentes pasa algo parecido.

Imagen que muestra una captura de pantalla de la herramienta QT Designer con sus menús, y paneles a izquierda y derecha del lienzo, formado por un formulario en blanco preparado para ser diseñado.

Es una parte de la interfaz gráfica del sistema Microsoft Windows, la cual permite a los usuarios ver ajustes y controles básicos del sistema

Es un componente de la interfaz gráfica de un programa y es mostrado en pantalla a modo de fila, columna, o bloque, que contiene iconos o botones que, al ser presionados, activan ciertas funciones de una aplicación.

A veces, necesitamos almacenar el estado de una clase para que perdure a través del tiempo. A esta característica se le llama persistencia. Para implementar esto, es necesario que pueda ser almacenada en un archivo y recuperado posteriormente.

El mecanismo que implementa la persistencia se llama serialización.

Al proceso de almacenar el estado de una clase en un archivo se le llama serializar.

Imagen que muestra un dibujo de una una flecha azul que apunta hacia un rectángulo en su parte inferior.

Al de recuperarlo después deserializar.

Imagen que muestra un dibujo de un documento saliendo de una carpeta.

Todos los componentes deben persistir. Para ello, siempre desde el punto de vista Java, deben implementar los interfaces java.io.Serializable o java.io.Externalizable que te ofrecen la posibilidad de serialización automática o de programarla según necesidad:

Serialización Automática: el componente implementa la interfaz Serializable que proporciona serialización automática mediante la utilización de las herramientas de Java Object Serialization. Para poder usar la interfaz Serializable debemos tener en cuenta lo siguiente:

  • Las clases que implementan Serializable deben tener un constructor sin argumentos que será llamado cuando un objeto sea "reconstituido" desde un fichero .ser.
  • Todos los campos excepto static y transient son serializados. Utilizaremos el modificador transient para especificar los campos que no queremos serializar, y para especificar las clases que no son serializables (por ejemplo Image no lo es).
  • Se puede programar una serialización propia si es necesario implementando los siguientes métodos (las firmas deben ser exactas):
private void writeObject(java.io.ObjectOutputStream out) throws IOException;
private void readObject(java.io.ObjectInputStream in) throws IOExcept;

Serialización programada: el componente implementa la interfaz Externalizable, y sus dos métodos para guardar el componente con un formato específico. Características:

  • Precisa de la implementación de los métodos readExternal () y writeExternal ().
  • Las clases Externalizable también deben tener un constructor sin argumentos.

Los componentes que implementarás en esta unidad emplearán la serialización por defecto por lo que debes tener en cuenta lo siguiente:

  • La clase debe implementar la interfaz Serializable.
  • Es obligatorio que exista un constructor sin argumentos.