320 likes | 473 Views
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
E N D
CS-434: Programación Orientada a Objetos usando JavaSemana 5 Dr. Jesús Borrego Adjunct Faculty Regis University
Temas Examen 1 Capítulo 15 Serializacion de objetos Manejo de archivos Tarea
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’
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
Razones El procesoestípicamenteutilizadopor dos razones: Para conserver el estado de un objeto a un archive Para mandar el estado de un objeto a otraaplicación
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
Interfaz Serializable ‘Marker’ Para poderserializar un objeto, Java requierequesuclaseimplementela interfazSerializable (localizada en el paquete java.io): public interface Serializable { } La interfaz no contienemétodos – el paqueteesvacio, por lo que se llama Marcador (Marker) El propósitoes de indicarquees ‘uno de ellos’ sin proveercomportamiento
Modificaciones requeridas public class User implements Serializable {…} public class Account implements Serializable {…} public class Loan implements Serializable {…} public class Book implements Serializable {…}
Notas • Solo se puedeserializarmiembros de datosque no son estáticos • A menosque se declarenmanualmente • Java prove la clave ‘transient’ para denotarmiembros de datosque no debeserserializados (para protegerdatossensitivos): private transient String sensitiveData = “_”;
Invocando serialización de objetos Cuandoclases son marcadas con la interfazSerializable, susobjetospuedenserserializados y deserializados con ObjectOutputStream y ObjectInputStreamrespectivamente Las clases se encuentran en el paquete java.io Ejemplo: Para serializar un objeto, ObjectOutputStreamprovee el siguientemétodo: void writeObject ( Object obj ); El métodorecibeunaclase Object (clase primal) para serializarcualquierobjecto
Deserializando Para deserializar el objeto, ObjectInputStream prove el método Object readObject ( ); El métodoregresa un objeto Para poderusar el objeto, necesitamosconvertir el tipo del objeto (type cast) usando la claseque se esperarecibir del proceso
Ejemplo Si un objeto User fuéserializado, la deserializaciónpuede producer un objeto User también El procesoes: ObjectInputStreamois = new ObjectInputStream ( … ); User user = ( User ) ois.readObject ( );
Actividad 1 Ejemplo de Serialización: http://www.youtube.com/watch?v=YzwiuRDgSSY (11:22 min.)
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 Ejemplos Servicio de autenticación y autorización de clientes
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
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?
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 paquetedominio para tenervisibilidad a Book El nombreiBookSvcdenota la interfaz El método add ( ) regresa el librocreado
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; } }
Patrón de diseño de Fábrica El patrón de diseño de fábricanospermiteinstanciar la capa de servicios Service Esútilquitarlasreferencias a la implementación de servicios El códigoqueusa el servicio no se da cuentaqueusó la implemetación, solo la interfaz
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
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 ); } }
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
Autenticando Usuarios 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; }
Actividad 2 Ejemplo de ArrayList en YouTube: http://www.youtube.com/watch?v=K1G1E9TWUVk (14:18 min.)
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
¿Preguntas? Email to jborrego@regis.edu