Practica #7

Anuncio
Fecha de efectividad: __________________
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
FACULTAD DE INGENIERÍA (UNIDAD MEXICALI)
DOCUMENTO DEL SISTEMA DE CALIDAD
Formato para prácticas de laboratorio
CARRERA
PLAN DE
ESTUDIO
CLAVE
ASIGNATURA
NOMBRE DE LA ASIGNATURA
Lic. En Sistemas
Computacionales
2003-1
5038
Programación Orientada a Objetos 2
PRÁCTICA
No.
LABORATORIO DE
7
NOMBRE DE LA
PRÁCTICA
1
DURACIÓN
(HORA)
Serialización
2
INTRODUCCIÓN
En esta práctica se desarrollará un programa para comunicación entre procesos mandando objetos persistentes
utilizando el protocolo TCP.
2
OBJETIVO (COMPETENCIA)
El alumno será capaz de desarrollar programas utilizando la comunicación entre procesos haciendo uso de la
serialización.
3
FUNDAMENTO
Serialización
Persistir = Hacer durar (perdurar la existencia de) los objetos los mas allá de la duración de la
máquina virtual que los aloja.
Los objetos Java residen en memoria para hacerlos durar mas que la JVM, hay que aplanarlos, salvar el
estado a una secuencia de bytes que poder recuperar luego para reconstruir el objeto en una JVM futura y/o
distante (serialización)
Un objeto se puede marcar como persistente implementando la interfaz java.io.Serializable, lo que
significa que el objeto puede aplanarse" en forma de bytes y restaurarse" mas tarde a partir de estos.
Formuló
L.S.C. Verónica
Quizan García
Revisó
Aprobó
Autorizó
Maestro
Coordinador de la Carrera
Gestión de la Calidad
Director de la Facultad
Página 1
de 6
Código GC-N4-024 .
Revisión
0
.
Fecha de efectividad: __________________
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
FACULTAD DE INGENIERÍA (UNIDAD MEXICALI)
DOCUMENTO DEL SISTEMA DE CALIDAD
Formato para prácticas de laboratorio
Primer paso: implements java.io.Serializable
Ejemplo.Aquí Serializable es sólo una Marker Interface : permite que el mecanismo de serialización de
java verifique que la clase puede hacerse persistente.
10 import java.io.Serializable;
20 import java.util.Date;
30 import java.util.Calendar;
40 public class FechaPersistente implements Serializable
50 {
60
private Date fecha;
70
80
public FechaPersistente()
90
{
100
fecha = Calendar.getInstance().getTime();
110
}
120
130
public Date obtenerFecha()
140
{
150
return fecha;
160
}
170 }
¿Qué clases pueden hacerse persistentes del API de Java?
Las que implementan la interfaz Serializable
Object NO implementa Serializable
String y array SI implementan Serializable
Thread, OutputStream, Socket NO son serializables porque no tiene sentido
Etc. (consultar el API)
Formuló
L.S.C. Verónica
Quizan García
Revisó
Aprobó
Autorizó
Maestro
Coordinador de la Carrera
Gestión de la Calidad
Director de la Facultad
Página 2
de 6
Código GC-N4-024 .
Revisión
0
.
Fecha de efectividad: __________________
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
FACULTAD DE INGENIERÍA (UNIDAD MEXICALI)
DOCUMENTO DEL SISTEMA DE CALIDAD
Formato para prácticas de laboratorio
Siguiente paso: hacer persistir el objeto con un ObjectOutputStream, que es un filter stream (una envoltura
de un stream de mas bajo nivel que maneje el protocolo de serialización por nosotros )
El stream envuelto (node stream) puede ser un Fichero (FileOutputStream) o un socket, por ejemplo.
Ejemplo: Aplanado
10 import java.io.ObjectOutputStream;
20 import java.io.FileOutputStream;
30 import java.io.IOException;
40 public class AplanarFecha
50 {
60
public static void main(String [] args)
70
{
80
String nombreFichero = "fecha.ser";
90
if(args.length > 0)
100
{
110
nombreFichero = args[0];
120
}
130
FechaPersistente fecha = new FechaPersistente();
140
FileOutputStream fos = null;
150
ObjectOutputStream out = null;
160
try
170
{
180
fos = new FileOutputStream(nombreFichero);
190
out = new ObjectOutputStream(fos);
200
out.writeObject(fecha);
210
out.close();
220
}
230
catch(IOException ex)
240
{
250
ex.printStackTrace();
260
}
270
}
280 }
Formuló
L.S.C. Verónica
Quizan García
Revisó
Aprobó
Autorizó
Maestro
Coordinador de la Carrera
Gestión de la Calidad
Director de la Facultad
Página 3
de 6
Código GC-N4-024 .
Revisión
0
.
Fecha de efectividad: __________________
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
FACULTAD DE INGENIERÍA (UNIDAD MEXICALI)
DOCUMENTO DEL SISTEMA DE CALIDAD
Formato para prácticas de laboratorio
Ejemplo: Restaurado
10 import java.io.ObjectInputStream;
20 import java.io.FileInputStream;
30 import java.io.IOException;
40 import java.util.Calendar;
50 public class RestaurarFecha
60 {
70
public static void main(String [] args)
80
{
90
String nombreFichero = "fecha.ser";
100
if(args.length > 0)
110
{
120
nombreFichero = args[0];
130
}
140
FechaPersistente fecha = null;
150
FileInputStream fis = null;
160
ObjectInputStream in = null;
170
try
180
{
190
fis = new FileInputStream(nombreFichero);
200
in = new ObjectInputStream(fis);
210
fecha = (FechaPersistente)in.readObject();
220
in.close();
230
}
240
catch(IOException ex)
250
{
260
ex.printStackTrace();
270
}
280
catch(ClassNotFoundException ex)
290
{
300
ex.printStackTrace();
310
}
320
// Imprimir fecha restaurada
330
System.out.println("Fecha restaurada: " + fecha.obtenerFecha());
350
// Imprimir fecha actual
360
System.out.println("Fecha actual: " + Calendar.getInstance().getTime());
370 }
380}
Como readObject() puede leer cualquier objeto serializable, hace falta un downcasting al tipo adecuado,
fecha persistente en este caso.
Formuló
L.S.C. Verónica
Quizan García
Revisó
Aprobó
Autorizó
Maestro
Coordinador de la Carrera
Gestión de la Calidad
Director de la Facultad
Página 4
de 6
Código GC-N4-024 .
Revisión
0
.
Fecha de efectividad: __________________
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
FACULTAD DE INGENIERÍA (UNIDAD MEXICALI)
DOCUMENTO DEL SISTEMA DE CALIDAD
Formato para prácticas de laboratorio
4
PROCEDIMIENTO (DESCRIPCIÓN)
EQUIPO NECESARIO
A
MATERIAL DE APOYO
Computadora con sistema operativo Linux
B
Practica impresa
DESARROLLO DE LA PRÁCTICA
Desarrolle las clases pertinentes en el siguiente planteamiento
Se requiere elaborar y serializar un listado de objetos utilizando el protocolo TCP para envío de los objetos
persistentes mediante el siguiente menú.
Menú principal
• 1.
• 2.
• 3.
• 4.
• 5.
• 6.
Alta de un registro.
Baja de un registro.
Listado de datos.
Serializar.
Deserializar.
Salir.
Caso 1. Captura de sólo un registro en un arreglo (ya sea de objetos o vectores simples)
Valide el tamaño máximo de los arreglos.
Caso 3. Listado de los datos en los arreglos de forma tabular
Ejemplo:
Clave
100
200
300
Nombre
Claudia Ramirez
Miguel Diaz
Maria Lopez
Grupo
A
B
A
Caso 4. Pida el host y puerto que correspondan al receptor.
Envíe él o los objetos guardados en el arreglo.
Caso 5. Pida el puerto en el que esperará por una conexión, y el tiempo máximo de espera por una
conexión en milisegundos para evitar el bloqueo indefinido de su aplicación.
Al aceptar la conexión se inicializarán los arreglos y se llenarán con los objetos recibidos.
Formuló
L.S.C. Verónica
Quizan García
Revisó
Aprobó
Autorizó
Maestro
Coordinador de la Carrera
Gestión de la Calidad
Director de la Facultad
Página 5
de 6
Código GC-N4-024 .
Revisión
0
.
Fecha de efectividad: __________________
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA
FACULTAD DE INGENIERÍA (UNIDAD MEXICALI)
DOCUMENTO DEL SISTEMA DE CALIDAD
Formato para prácticas de laboratorio
Ejecución Corra dos veces su aplicación una para el emisor y otra para el receptor, de esta forma solo
habrá un programa que podrá tomar el rol que el usuario desee.
Los datos a serializar según sea el día de laboratorio son:
Lunes
Clave
Entero
Descripción Cadena
Peso
Flotante
Martes
Cantidad
Moneda
Tipo de cambio
Entero
Cadena
Flotante
Miércoles
Matricula
Nombre
Sexo
Entero
Cadena
Caracter
En existencia
Porcentaje
Ingrediente
Booleano
Flotante
Cadena
Jueves
Viernes
Evento
Lugar
Fecha
Cadena
Entero
Fecha
C
5
CÁLCULOS Y REPORTE
RESULTADOS Y CONCLUSIONES
El alumno deberá desarrollar un programa utilizando serialización, sockets y estructuras de java.
6
ANEXOS
http://java.sun.com
Formuló
L.S.C. Verónica
Quizan García
Revisó
Aprobó
Autorizó
Maestro
Coordinador de la Carrera
Gestión de la Calidad
Director de la Facultad
Página 6
de 6
Código GC-N4-024 .
Revisión
0
.
Descargar