CS-434: Programación Orientada a Objetos usando Java Semana 5

Post on 31-Dec-2015

52 views 0 download

description

CS-434: Programación Orientada a Objetos usando Java Semana 5. Dr. Jesús Borrego Adjunct Faculty Regis University. Temas. Examen 1 Capítulo 15 Serializacion de objetos Manejo de archivos Tarea. Exámen 1. Serialización. Corresponde al movimiento del estado de un objeto a su destino - PowerPoint PPT Presentation

Transcript of CS-434: Programación Orientada a Objetos usando Java Semana 5

scis.regis.edu ● scis@regis.edu

CS-434: Programación Orientada a Objetos usando

JavaSemana 5

Dr. Jesús BorregoAdjunct FacultyRegis University

1

Temas

•Examen 1•Capítulo 15•Serializacion de objetos•Manejo de archivos•Tarea

2

Exámen 1

3

Serialización

•Corresponde al movimiento del estado de un objeto a su destino

•Estado: los miembros de datos pero no los métodos

•Cuando el objeto es serializado, el valor de los miembros de los datos se obtienen del objeto y se envían a su destino

•El proceso también se llama ‘Marshaling’

4

Serializacion - 2

•Cuando el objeto es serializado (marshaled, deflated) puede ser recreado bajo un proceso llamado deserializado (unmarshaling, inflating)

•El objeto deserializado es una copia exacta del objeto original desde cuando salió al ser serialziado

5

6

Razones

•El proceso es típicamente utilizado por dos razones:

1.Para conserver el estado de un objeto a un archive

2.Para mandar el estado de un objeto a otra aplicación

7

8

Ejemplo

JohnDoe pide prestado 2 libros con su cuenta general y uno con su cuenta de negocios

¿Como serializar la transacción?

•Usamos la interfaz Serializable•Serializamos/Deserializamos la gráfica del

objeto con ObjectOutputStream/ObjectInputStream

•Opcionalmente, podemos usar una fábrica (Factory) para instanciar el servicio

9

Interfaz Serializable ‘Marker’

•Para poder serializar un objeto, Java requiere que su clase implemente la interfaz Serializable (localizada en el paquete java.io):

public interface Serializable { }•La interfaz no contiene métodos – el paquete

es vacio, por lo que se llama Marcador (Marker)

•El propósito es de indicar que es ‘uno de ellos’ sin proveer comportamiento

10

Ejemplo

11

Modificaciones requeridas

public class User implements Serializable {…}public class Account implements Serializable {…}public class Loan implements Serializable {…}public class Book implements Serializable {…}

12

Notas

•Solo se puede serializar miembros de datos que no son estáticos▫A menos que se declaren manualmente

•Java prove la clave ‘transient’ para denotar miembros de datos que no debe ser serializados (para proteger datos sensitivos):

private transient String sensitiveData = “_”;

13

Invocando serialización de objetos

•Cuando clases son marcadas con la interfaz Serializable, sus objetos pueden ser serializados y deserializados con ObjectOutputStream y ObjectInputStream respectivamente

•Las clases se encuentran en el paquete java.io•Ejemplo: Para serializar un objeto,

ObjectOutputStream provee el siguiente método:

void writeObject ( Object obj );•El método recibe una clase Object (clase

primal) para serializar cualquier objecto14

Deserializando

•Para deserializar el objeto, ObjectInputStream prove el método

Object readObject ( );

•El método regresa un objeto•Para poder usar el objeto, necesitamos

convertir el tipo del objeto (type cast) usando la clase que se espera recibir del proceso

15

Ejemplo

•Si un objeto User fué serializado, la deserialización puede producer un objeto User también

•El proceso es:

ObjectInputStream ois = new ObjectInputStream ( … );User user = ( User ) ois.readObject ( );

16

Actividad 1

•Ejemplo de Serialización: http://www.youtube.com/watch?v=YzwiuRDgSSY (11:22 min.)

17

Diseño de Servicios de Aplicación•Los Servicios con piezas de funcionalidad

reusables que necesita la lógica de negocios de la aplicación

•Los servicios varían de una aplicación a la otra y aque las reglas del negocio también varían

•EjemplosServicio de autenticación y

autorización de clientes

18

Ejemplos de Servicios

•Servicio de autenticación y autorización de clients

•Servicio de mensajes para mandarlos a usuarios

•Servicio de clientes para el manejo de clients

•Servicio de pago para recibir pagos de clients

•Servicio de compras para la gestión de compras

19

Conceptos involucrados

•El movimiento de objetos dentro y fuera de la aplicación son definidos en la capa de dominio de la aplicación

•Escondiendo decisions de una tecnología particular (serialización, lógica de base de datos, comunicación entre procesos)

•¿Que forma tiene el servicio?

20

Interfaz Separada

21

Ejemplo de libros •Para añadir un libro a la biblioteca:package services;import domain.*;

public interface iBookSvc { public Bood add (Book book ) throws Exception;}

•Guardamos el servicio en el paquete services• Importamos el paquete dominio para tener

visibilidad a Book•El nombre iBookSvc denota la interfaz•El método add ( ) regresa el libro creado

22

Implementación del Servicio

package services;import java.io;import domain.*;

public class BookSvcSerializedIOImpl implements IBookSvc { public Book add (Book book ) throws Exception { FileOutputStream fos = new FileOutputStream (“somefile”); ObjectOutputStream oos = new ObjectOutputStream ( fos ); oos.writeObject ( book ); oos.flush ( ); oos.close ( ); return book; }}

23

Patrón de diseño de Fábrica

•El patrón de diseño de fábrica nos permite instanciar la capa de servicios Service

•Es útil quitar las referencias a la implementación de servicios

•El código que usa el servicio no se da cuenta que usó la implemetación, solo la interfaz

24

Capa de Negocios

•La capa de negocios (Business Layer) se implementa usando servicios de la capa de servicios

•Para agregar libros a la biblioteca, podemos usar BookMgr con método addBook

25

package business;

import services.*;import domain.*;

public class BookMgr { public Book addBook ( Book book ) throws Exception { Factory factory = new Factory (); IBookSvc bookSvc = factory.getBookSvc(); return bookSvc.add ( Book ); }}

26

Funciones de BookMgr

•Declarar que lanza la excepción•Instanciar Factory para tener acceso a

IBookSvc•Invocar iBookSvc para añadir in libro a la

biblioteca•Regresa los resultados a quien lo invoca•No tiene visibilidad a la implementación

del servicio

27

Autenticando Usuarios

28

package business;

import services.*;import domain.*;

public class AuthenticationMgr{ public Boolean authenticate ( Login login ) { //código se incluye }}

AuthenticationMgr.authenticate

public Boolean authenticate ( Login login ) { User user = null; try { Factory factory = new Factory(); IUserSvc usersvc = factory.getUserSvc(); user = userSvc.findUser (login.getUsername()); } catch ( Exception s ) { //excepción } if ( user = null ) return falsel return true;}

29

Actividad 2

•Ejemplo de ArrayList en YouTube: http://www.youtube.com/watch?v=K1G1E9TWUVk (14:18 min.)

30

Tarea 5

▫Implementar ArrayList en el GUI para agregar los libros y mostrarlos en la pantalla

▫ArrayList debe incorporar Book▫Entregar a WorldClass antes de la semana

6 – el proyecto NetBeans y el document con captura de pantallas

31

¿Preguntas?

•Email to jborrego@regis.edu

32