Ayudanos contestando la siguiente encuesta acerca de Videojuegos!
Ir a la encuesta
>

Interfaz Serializable

 

Archivos necesarios:

Como pudimos observar en el trial de archivos binarios es muy conveniente guardar datos en archivos binarios porque así no tenemos que preocuparnos por la interpretación, pero cuando hacemos un programa orientado a objetos es muy difícil manejar objetos con muchas propiedades. La clase serializable nos permite guardar clases completas mediante métodos sencillos. Para saber más porfavor descarga la presentación.

Guardar Presentación
Interfaz Serializable

Además de los ejemplos y ejercicios de la presentación se debe de entregar el siguiente programa terminado:

La primera clase es el mismo programa que utilizamos en el trial anterior. El segundo archivo es la clase con la que representamos los registros de la agenda.

Main.java
Main.java

Persona
Persona.java

 

Instrucciones del ejercicio:

Una vez que hayas bajado el programa podrás compilarlo y correrlo, El programa es igual que el que utilizamos en el trial de archivos binarios pero ahora incluye una clase más que nos permite representar personas. Primero vamos a analizar como funciona la clase Persona y qué métodos y propiedades son las que tiene una Persona.

Persona

Clase Persona

Métodos:

  • Persona()
  • Persona(String n, int e, double p, boolean c)
  • String getNombre()
  • int getEdad()
  • double getPeso()
  • boolean isCasada()
  • void setNombre(String n)
  • void setEdad(int e)
  • void setPeso(double p)
  • void setCasada(boolean c)

Propiedades:

  • String nombre
  • int edad
  • double peso
  • boolean casada

Como puedes observar la clase Persona ya tiene dos métodos para crear nuevos objetos y ya tiene todos los accessors y mutators que necesita para accesar y modificar sus propiedades.

El ejercicio consta en hacer que la clase persona implemente Serializable y utilice los métodos writeObject() y readObject() para poder guardar y leer datos.

Es importante que no se te olviden los cuatro pasos que ya vimos para poder implementar Serializable. Observa la imágen de la derecha para recordarlos. Cuatro Pasos
  1. Primero tenemos que importar java.io.* en la clase que va a implementar Serializable
  2. Después tenemos que implementar Serializable en donde declaramos la clase
  3. Después tenemos que escribir el método writeObject()
  4. Por último tenemos que escribir el método readObject()

Si no sabes qué guardar en el archivo recuerda que lo que necesitas guardar son las propiedades del objeto (todas las variables de este). Si no recuerdas que propiedades tiene la clase Persona puedes consultarlas en esta misma página donde analizamos la clase Persona.

 

Un (enorme) paso más allá:

Ya vimos cómo utilizar la clase Serializable para guardar clases, pero ahora veamos una implementación para poder manejar muchos objetos en una misma clase. No es necesario utilizar la clase Serializable para manejar los archivos de esta manera, pero como podremos ver reduce mucho la cantidad de código que necesitamos.
Agenda
Agenda.java

La clase Agenda es una extensión de la clase Main que utilizamos arriba. Esta nueva clase tiene los mismos botones pero incluye también un par de flechas para movernos entre registros. Por el momento la interfaz no es amigable ya que está fuera del alcance del proyecto actual. Ahora vamos a intentar comprender cómo funciona el código que hace servir a la agenda.

Cuando escribimos datos a un archivo binario (no importa si utilizamos Serializable o no) se guardan uno después de otro después de otro. Es decir que si guardamos primero un Integer y luego un String físicamente en el archivo estaría primero la representación del Integer y luego la del String. Es lo mismo con cualquier otro tipo de dato e incluso si guardamos clases enteras. Sabiendo esto podemos guardar muchos datos en un mismo archivo y acceder a cada uno de ellos mediante su índice, por ejemplo, para acceder al tercer registro en la imágen de la izquierda deberíamos pasar los primeros dos registros (porque el que buscamos es el tercero) y desplegar los datos del tercero.

Pero como sabemos en Java no hay ningún metodo que nos permita brincar al tercer registro. Para saber como resolver esto hay que retomar el ejemplo anterior

Como podemos ver en la imágen para poder leer el String primero tendríamos que leer el Integer, aunque no fueramos a utilizarlo para nada. Registros

Por lo tanto para cuando queremos guardar muchos datos del mismo tipo en un archivo debemos de utilizar un número índice que nos indique en cual de los registros nos encontramos y después leer todos los anteriores aunque no los vayamos a utilizar para nada.

Para hacer esto podemos utilizar un ciclo que llegue de 0 (los archivos siempre empiezan de 0) a n-1 donde n es el número de registro que queremos leer. De esta manera si quisieramos leer el tercer registro leeriamos los dos primeros y estaríamos posicionados en el tercero, listos para utilizarlo.

Para entender mejor como funciona esto puedes utilizar la clase Agenda con la clase Persona que habías terminado. Para hacer esto tienes que crear un nuevo proyecto y añadir estas dos clases. La clase que debes correr es la clase Agenda.

RegresarRegresar

         
Ayudanos contestando la siguiente encuesta acerca de Videojuegos!
Ir a la encuesta