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

32
scis.regis.edu [email protected] CS-434: Programación Orientada a Objetos usando Java Semana 5 Dr. Jesús Borrego Adjunct Faculty Regis University 1

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

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

scis.regis.edu ● [email protected]

CS-434: Programación Orientada a Objetos usando

JavaSemana 5

Dr. Jesús BorregoAdjunct FacultyRegis University

1

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

Temas

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

2

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

Exámen 1

3

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

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

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

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

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

6

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

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

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

8

Ejemplo

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

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

¿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

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

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

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

Ejemplo

11

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

Modificaciones requeridas

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

12

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

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

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

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

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

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

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

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

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

Actividad 1

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

17

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

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

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

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

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

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

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

Interfaz Separada

21

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

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

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

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

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

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

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

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

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

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

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

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

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

Autenticando Usuarios

28

package business;

import services.*;import domain.*;

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

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

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

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

Actividad 2

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

30

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

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

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

¿Preguntas?

•Email to [email protected]

32