Sunteți pe pagina 1din 7

INSTITUTO POLITCNICO NACIONAL

ESCUELA SUPERIOR DE CMPUTO








Aplicaciones Para Comunicaciones en Red









Prctica 2. Carro de compras Cliente-Servidor















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

S-ar putea să vă placă și