Por: Hernndez Badillo Rodrigo Prez Prez Jos Ricardo
Profesor: M. en C. Moreno Cervantes Axel Ernesto
Grupo: 3CM2 Introduccin Serializacin La serializacin de un objeto consiste en obtener una secuencia de bytes que represente el estado de dicho objeto. Esta secuencia puede utilizarse de varias maneras (puede enviarse a travs de la red, guardarse en un fichero para su uso posterior, utilizarse para recomponer el objeto original, etc.) Estado de un Objeto El estado de un objeto viene dado, bsicamente, por el estado de sus campos. As, serializar un objeto consiste, bsicamente, en guardar el estado de sus campos. Si el objeto a serializar tiene campos que a su vez son objetos, habr que serializarlos primero. ste es un proceso recursivo que implica la serializacin de todo un grafo (en realidad, un rbol) de objetos. Adems, tambin se almacena informacin relativa a dicho rbol, para poder llevar a cabo la reconstruccin del objeto serializado. Objetos Serializables e Interfaces Serializables Un objeto serializable es un objeto que se puede convertir en una secuencia de bytes. Para que un objeto sea serializable, debe implementar la interfaz java.io.Serializable. Esta interfaz no define ningn mtodo. Simplemente se usa para 'marcar' aquellas clases cuyas instancias pueden ser convertidas a secuencias de bytes (y posteriormente reconstrudas). Objetos tan comunes como String, Vector o ArrayList implementan Serializable, de modo que pueden ser serializados y reconstrudos ms tarde. El primer paso para hacer que la serializacin funcione es permitir que sus objetos usen el mecanismo. Cada objeto que usted quiera que sea serializable debe implementar una interfaz llamada java.io.Serializable: Import java.io.Serializable; public class Person implements Serializable{ //etc }
Desarrollo Creacin de la clase Servidor.
Creamos nuestro servidor con el puerto 1234 el cual abrir la comunicacin con el cliente y recibir y enviara peticiones. Dentro de servidor tenemos un array de Objetos Producto, cada uno de estos productos tienes sus caractersticas que se diferencian de los dems.
Dentro de un ciclo se estar esperando la conexin del cliente, el servidor esperara con un ObjectInputStream un objeto Serializable, en este caso utilizamos un ArrayList de Enteros que guardara los ID de los artculos comprados, con esta informacin se modificara el stock de la tienda gracias a el mtodo modificaExistencia, el cual restara del stock el nmero de elementos comprados por su id.
Despus de procesar la resta de elementos procedemos a regresar un ArrayList de productos el cual contiene cada uno de los objetos comprados por el cliente gracias al mtodo que creamos llamado generaReporte.
Servidor.java
Creacin de la clase Cliente.
La clase cliente se encarga de agregar un elemento a un carro de compras representado con un JTable, cada uno de estos se podr borrar si es que es necesario, finalmente al generarse la compra con el botn ConfirmarCompra se toman los id de los elementos comprados de la Jtable, estos son enviados por un ArrayList hacia el servidor el cual se encargara de procesar las compras, el botn Generar Reporte se encargara de recibir un objeto de a travs de un ObjectInputStream y los resultados se generaran en un nuevo Frame llamado Tiquet.java
Capturas de pantalla.
Ejecucin del Servidor
Ejecucin del Cliente
Compra de Productos
Borramos un elemento
Confirmamos la compra
Se activa el botn Generar Reporte y generamos el Tiquet de compra.
Preguntas. 1.- Qu es serializacin? La serializacin de un objeto consiste en obtener una secuencia de bytes que represente el estado de dicho objeto.
2.- En qu difiere del marshalling? Marshalling significa crear un documento XML de un rbol de contenido (En nuestro caso el rbol del contenido sera un Objeto Java).
3.- Por qu es importante la serializacin? Al convertir un objeto en una secuencia de bytes, es posible enviarlos a travs de un socket y, reconstruirlos desde el otro lado de la red. Conclusiones.
En esta prctica observamos el comportamiento de los flujos de entrada y de salida a travs de la comunicacin de sockets y el envi de objetos del Cliente al Servidor y viceversa, estos objetos que se estn enviando y recibiendo deben de ser serializables, en nuestro caso para el intercambio de informacin hicimos uso de ArrayList los cuales son estructuras de datos fciles de utilizar los objetos de estos fciles de manipular.
Fuentes. http://chuwiki.chuidiang.org/index.php?title=Serializacin_de_objetos_en_java http://www2.uah.es/jcaceres/cursos/java/archivos/capsulas/capsula_serializable.pd f