Persistencia. Persistencia significa trascender en el tiempo y/o en el espacio Un ambiente orientado a objetos debe permitir que los objetos se persistan,

Slides:



Advertisements
Presentaciones similares
IMPLEMENTACION CONTIGUA Y NO CONTIGUA
Advertisements

Curso de java básico (scjp)
Archivos Binarios Usando Serializable. Introducción Utilizar archivos binarios nos ayuda a guardar y leer más fácilmente los datos de archivos. Pero como.
Archivos Binarios. Introducción En clase ya vimos el uso de archivos de texto en Java, pero el uso de archivos es mucho más poderoso que eso, al utilizar.
Curso de Java Capitulo 7: Continuación Poo Profesor:
Lenguaje de programación Java
Unidad 1. Manejo de ficheros
Arquitectura CLARO-TECNOTREE
Orientación a Objetos con Java SE
Capitulo 4 Excepciones.
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
RMI (Remote Method Invocation)
Diseño y programación de
Encapsulamiento y Abstracción
Objetos y Clases en Java
Programación Orientada a Objetos en Java
Detalle clase Documento
PROGRAMACIÓN ORIENTADA A OBJETOS
Marzo 2007 Lenguajes Visuales Clase III.
Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Modificadores.
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Práctica III: Java RMI con Serialización y Activation Framework
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA CINCO CONSOLE.
Igor Santos Grueiro. Ahora tenemos datos y datos …
1 Streams en Java Agustín J. González ELO Generalidades Un Stream es simplemente una fuente o destino de bytes. Los streams más comunes son los.
SCJP Sun Certified Programmer for Java 6
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
El lenguaje de programación Java
1 Programación Interactiva Archivos Escuela de Ingeniería de Sistemas y Computación Facultad de Ingeniería Universidad del Valle.
7. Interfaces Herencia múltiple Interfaces Comparable y Comparator
1 Persistencia en Java Agustín J. González ELO-329.
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
Programación I :: Prof. Yeniffer Peña Programación I Interface Gráfica de Usuario Presentación.
Programación Orientada a Objetos
Entrada / Salida. Java adopta de Unix el concepto de stream Un stream es un flujo de datos (secuencia de bytes) que va de una fuente a un destino. Desde.
Streams. / En casi todo programa se necesita traer o enviar información a una fuente externa. / Dicha información puede estar en un archivo en el disco.
Un programa no es nada mas que una serie de instrucciones dadas al ordenador en un lenguaje entendido por el, para decirle exactamente lo que queremos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
1 Objetos y Clases en Java ELO-329: Diseño y Programación Orientados a Objetos.
Herramientas de polimorfismo y herencia en C++
1 Unidad IV Archivos en Java y C++ M.C. Juan Carlos Olivares Rojas.
Unidad 2 REUTILIZACIÓN DE CLASES Programación Orientada a Objetos M.S.C. Ivette Hernández Dávila.
PAQUETES Un paquete es un conjunto de clases, interfaces y subpaquetes relacionados. El paquete define un ámbito de visibilidad: los miembros que no tienen.
Java.
1 Streams y Persistencia en Java Agustín J. González ELO-329.
Interfaces ELO329: Diseño y Programación Orientados a Objetos.
Agustín J. González ELO-329
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Manejo de Ficheros en JAVA
Arreglos de Objetos.
Presentado por: PABLO ANDRES DIAZ SAIN HASSAM CAICEDO
Detalles Generales sobre Java
INGENIERIA EN SISTEMAS COMPUTACIONALES ASIGNATURA: PROGRAMACION ORIENTADA A OBJETOS ALUMNO: JAVIER MARTINEZ MARTINEZ.
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
Instituto Tecnológico Superior de Libres Ingeniería en Sistemas Computacionales Segundo semestre Materia: Programación Orientada a Objetos Asesora: Ing.
Programación Orientada a Objetos: CLASES Y OBJETOS
Clases “ Es una Abstracción de un elemento del mundo real ”
INSTITUTO TECNOLOGICO SUPERIOR DE LIBRES ORGANISMO PÚBLICO DESCENTRALIZADO DEL GOBIERNO DEL ESTADO DE PUEBLA MAGALY SALAZAR GARCIA ALUMNA: ANGELINA LEAL.
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Representación externa de datos y Serialización Marisol García Valls Arquitecturas Distribuidas 2º Ingeniero de Telecomunicación (Telemática) Departamento.
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
Programación I :: Prof. Yeniffer Peña Programación I Interface Gráfica de Usuario Presentación.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
Flujos de datos Un flujo es un canal por donde fluyen los datos.
Transcripción de la presentación:

Persistencia

Persistencia significa trascender en el tiempo y/o en el espacio Un ambiente orientado a objetos debe permitir que los objetos se persistan, para mantener su existencia más allá de la vida de la aplicación.

Persistencia Tipos de Persistencia –Nativa Provista por la plataforma –EJ: Java, Smalltalk,.NET –No Nativa A través de una biblioteca externa Programada a mano

Serialización Proceso que consiste en convertir la representación de un objeto en un stream (flujo o secuencia) de bytes. Reconstituir un objeto a partir de un stream de bytes se denomina deserialización. … serialización … deserialización

Persistencia y Serialización Para persistir debo primero serializar Serializar no implica necesariamente persistir Otras acciones luego de serializar: –Enviar por red –Mantener en memoria –Enviar a una impresora, etc

Serialización en Java Para definir una clase serializada, debe implementarse la interfaz Serializable. No tiene métodos Sirve para avisarle a la máquina virtual que la clase puede serializarse (marker interface). Todas las subclases de una clase serializable son serializables también Por defecto, se serializan todos los atributos de un objeto que no posean el modificador transient (transitorio). Si un objeto serializable tiene referencias a otro objeto serializable también lo serializa Si algún objeto del “arbol de objetos” a serializar no es serializable se lanza la excepción NonSerializableException Los objetos serializables deben tener un constructor sin parámetros para poder ser deserializados correctamente

Serialización en Java Import java.io.Serializable; class Vector implements Serializable { private static long serialVersionUID = 1L; private double x; private double y; private double z; private static final double NORMA_INVALIDA = -1.0; transient private double norma = NORMA_INVALIDA;... Atributo de clase. No se serializa Atributo transitorio No se serializa Marca Serializable Versión de la clase

Persistencia en Java Paquete java.io –De objeto a archivo UnaClase objeto = new UnaClase(); OutputStream fos = new FileOutputStream(“objeto.dat”); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(objeto); –De archivo a objeto InputStream fis = new FileInputStream(“objeto.dat”); ObjectInputStream ois = new ObjectInputStream(fis); UnaClase objeto = (UnaClase)ois.readObject(); objeto->stream (ObjectOutputStream) stream->archivo (FileOutputStream) archivo->stream (FileInputStream) stream ->objeto (ObjectInputStream)

Persistencia en Java Persistencia Nativa –Ventajas – Es nativa del lenguaje (casi no hay que programar) – Resuelve referencias circulares –Desventajas – No es portable a otros lenguajes de manera sencilla – No es óptima en cuanto a tamaño (tiene overhead alto) – La información en el archivo es binaria No es extensible ni reparable

Serialización Nativa en SmallTalk Objeto a Archivo objeto := MiClase new. rr := ReferenceStream fileNamed: 'objeto.bin'. rr nextPut: objeto; close. Archivo a Objeto rr := ReferenceStream fileNamed: 'objeto.bin'. objeto := rr next. rr close.

Ej: Serialización no nativa Persistencia en Texto (XML) Disco duracion autor Pista duracion titulo * Disco disco = new Disco(50, “Queen”); disco.addPista(new Pista(4,”the show must go on”); disco.addPista(new Pista(3, “inuendo”); instancias Stream de texto

Persistencia no nativa Responsabilidad: cada clase conoce como serializarse Cada clase serializable tendrá –Un método serializar que devolverá un nodo XML –Un constructor sobrecargado que recibirá un nodo XML

Persistencia no nativa public class Disco{ private int duracion; private string autor; private List pistas = new ArrayList(); public Disco(XMLNode nodo){ duracion=Integer.ParseInt(nodo.getAttribute("duracion")); autor=nodo.getAttribute("autor"); List nodosPistas = nodo.getChildrens("pista"); for(XMLNode nodoPista : nodosPistas){ pistas.add(new Pista(nodoPista); } public XMLNode serializar(){ XMLNode nodo = CrearNodo(); nodo.setAttribute("autor",this.autor); nodo.setAttribute("duracion",this.duracion); for(Pista pista : this.pistas){ nodo.addChildren(pista.serializar()); } Deserialización Serialización La clase pista es similar

Persistencia no nativa Escritura a archivo XmlDocument doc = CreateDocFromNode(disco.serializar()); XmlHelper.SaveXMLDocToFile(doc,"disco.xml"); Lectura desde archivo XmlDocument doc = XmlHelper.ReadFromFile(“disco.xml”); Disco disco = new Disco(doc.getRootNode);

Persistencia No Nativa Queda en manos del programador –Cuestiones de diseño Responsabilidad –Cada clase sabe como persistirse –Existe un gestor externo que sabe como persistir las clases Formato –Binario, texto plano, texto jerárquico (XML) Identidad de los objetos –Referencias circulares, duplicación de objetos, etc –Mayor versatilidad pero… –Mayor complejidad