3.3 Parsers SAX con JAXP

Tamaño: px
Comenzar la demostración a partir de la página:

Download "3.3 Parsers SAX con JAXP"

Transcripción

1 3.3 Parsers SAX con JAXP

2 Introducción (1) Un parser XML permite comprobar que el documento está bien formado y acceder a los datos Si además el parser es validante, permite validar el documento (usando su DTD o similar) Dos tipos de parsers SAX Simple API for XML Es un pequeño framework basado en eventos El programador proporciona uno o varios objetos callback a los que el parser llamará cada vez que ocurra un evento de interés (apertura de un tag, cierre de un tag, un error, etc.) DOM Document Object Model Construye una representación (un árbol) en memoria del documento El programador puede acceder a los datos del documento recorriendo el árbol

3 Introducción (2) Las APIs de SAX y DOM están estandarizadas y existen un gran número de implementaciones para distintos lenguajes (C++, Java, etc.) Ej.: Apache Software Foundation proporciona Crimson (SAX y DOM sólo para Java), Xerces (SAX y DOM) y Xalan (XSL) En el caso de Java, familia de paquete org.xml.sax y org.w3c.dom (básicamente contienen interfaces y clases abstractas) Lo que no está estandarizado es cómo crear instancias de los parsers Qué es JAXP? Java API for XML Processing Formará parte de J2SE 1.4 Familia de paquetes java.xml.{parsers, transform

4 Qué es JAXP? (cont) Introducción (y 3) Define un API para trabajar con parsers SAX, DOM y transformaciones XSL Proporciona factorías para crear instancias de parses y transformadores XSL de manera portable Existen un gran número de implementaciones que proporcionan adaptadores para JAXP Ej.: Crimson, Xerces y Xalan Sun proporciona una implementación de JAXP para versiones anteriores a J2SE 1.4 Incluye las APIs org.xml.sax, org.w3c.dom y javax.xml.{parsers, transform Incluye Crimson y Xalan como implementaciones por defecto Se pueden usar otras implementaciones vía configuración

5 Continuación del ejemplo Objetivo Construir una sencilla aplicación de administración que permita insertar información sobre películas en la BD Para que el ejemplo sea sencillo La fachada de administración no insertará los datos en la BD, sino que los imprimirá en System.out La aplicación de administración será un simple comando que se ejecuta desde una shell, y que recibe como parámetro la URI del documento XML con los datos de las películas En este apartado Construiremos la infraestructura básica de la aplicación La estrategia de parsing será redefinible Proporcionaremos una implementación con SAX Y en el siguiente apartado, una implementación DOM

6 Estrategia de inserción en la BD (1) Estrategia 1: cada vez que tengamos los datos completos de una película (evento </movie>), la insertamos en la BD Demasiadas transacciones (e invocaciones remotas en una arquitectura en 3 capas) en caso de haya un elevado número de películas Estrategia 2: cada vez que tengamos los datos completos de una película (evento </movie>), la insertamos en una lista, y cuando se termine de parsear el fichero (evento </movies>), insertamos todas las películas de la lista en la BD Si hay muchas películas, problemas de memoria en el cliente y transacción demasiado grande (y gran cantidad de datos transferidos en la invocación remota en una arquitectura en 3 capas)

7 Estrategia de inserción en la BD (y 2) Los problemas de las dos anteriores estrategias son especialmente ciertos en aplicaciones en los que muchos threads parsean documento XML (no es el caso del ejemplo) Estrategia 3: Idem 2, pero cada vez que la lista tiene k elementos, vaciamos la lista a la BD Cuando se termine de parsear el fichero, vaciamos la lista si tenía algún elemento Solución eficiente Es la que usaremos k será configurable Si ocurre un error durante este proceso (error de parsing, inserción en la BD, etc.), abortaremos la ejecución, informando de cuál fue la última película insertada satisfactoriamente En una aplicación real podría ser conveniente continuar y registrar en un log los problemas que ha habido

8 Estructura de paquetes es.udc.fbellas.j2ee.util.xml es.udc.fbellas.j2ee.xmltutorial.movies controller moviesadder model dom sax movie vo moviesadminfacade delegate shell

9 es.udc.fbellas.j2ee.xmltutorial.movies.model.movie.vo MovieVO - movieidentifier : Long - title : String - runtime : int - releasedate : Calendar - directornames : List - actornames : List - genres : List - synopsis : String <<Interface>> Serializable (from io) + MovieVO(...) + getmovieidentifier() : Long + gettitle() : String + settitle(title : String) : void + getruntime() : int + setruntime(runtime : int) : void + getreleasedate() : Calendar + setreleasedate(releasedate : Calendar) : void + getdirectornames() : List + setdirectornames(directornames : List) : void + getactornames() : List + setactornames(actornames : List) : void + getgenres() : List + setgenres(genres : List) : void + getsynopsis() : String + setsynopsis(synopsis : String) : void + tostring() : String

10 es.udc.fbellas.j2ee.xmltutorial.movies.model.moviesadminfacade.delegate MoviesAdministrationFacadeDelegate + MoviesAdministrationFacadeDelegate() + addmovies(listofmovies : List) : void

11 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder MoviesAdderFactory - MoviesAdderFactory() <<static>> + getmoviesadder() : MoviesAdder <<instantiate>> <<Interface>> MoviesAdder + setmoviesblocksize(moviesblocksize : int) : void + addmovies(xmldocumenturi : String) : void <<use>> ConfigurationParametersManager (from configuration)

12 es.udc.fbellas.j2ee.xmltutorial.movies.shell AddMovies <<static>> + main(args : String[]) : void <<use>> <<use>> MoviesAdderFactory (from moviesadder) <<Interface>> MoviesAdder (from moviesadder)

13 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax Visión global <<Interface>> MoviesAdder (from moviesadder) DefaultErrorHandler (from xml) <<instantiate>> SAXMoviesAdder - moviesblocksize : int + SAXMoviesAdder() <<instantiate>> MoviesContentHandler

14 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax.saxmoviesadder (1) package es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder. sax; import javax.xml.parsers.saxparserfactory; import javax.xml.parsers.saxparser; import org.xml.sax.xmlreader; import org.xml.sax.saxexception; import es.udc.fbellas.j2ee.util.xml.defaulterrorhandler; import es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder. MoviesAdder; import es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder. MoviesAdderException; public class SAXMoviesAdder implements MoviesAdder { private int moviesblocksize; public void setmoviesblocksize(int moviesblocksize) { this.moviesblocksize = moviesblocksize;

15 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax.saxmoviesadder (2) public void addmovies(string xmldocumenturi) throws MoviesAdderException { ElementHandlerContext context = new ElementHandlerContext(moviesBlockSize); try { /* Get a SAX parser factory. */ SAXParserFactory saxparserfactory = SAXParserFactory.newInstance(); /* Enable validation. */ saxparserfactory.setvalidating(true); /* * Create a SAX parser instance and use it to parse the * document. */ SAXParser saxparser = saxparserfactory.newsaxparser(); XMLReader xmlreader = saxparser.getxmlreader(); xmlreader.seterrorhandler(new DefaultErrorHandler()); xmlreader.setcontenthandler(new MoviesContentHandler(context)); xmlreader.parse(xmldocumenturi);

16 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax.saxmoviesadder (y 3) catch (SAXException e) { Exception encapsulatedexception = e.getexception(); if (encapsulatedexception!= null) { // InternalErrorException or // model exception throw new MoviesAdderException( context.getlastinsertedmovietitle(), encapsulatedexception); else { // Parsing exception throw new MoviesAdderException( context.getlastinsertedmovietitle(), e); catch (Exception e) { // ParserConfigurationException or // IOException throw new MoviesAdderException( context.getlastinsertedmovietitle(), e);

17 Comentarios (1) javax.xml.parsers.saxparserfactory <<instantiate>> javax.xml.parsers.saxparser <<instantiate>> <<interface>> org.xml.sax.xmlreader <<use>> <<use>> <<interface>> org.xml.sax.errorhandler <<interface>> org.xml.sax.contenthandler

18 Comentarios (2) javax.xml.parsers.saxparserfactory Factoría abstracta El programador obtiene una factoría concreta con el método estático newinstance La documentación JavaDoc documenta varias formas de especificar el nombre de la clase concreta de la factoría Ej.: Definir la propiedad javax.xml.parsers.saxparserfactory=<nombreclase Concreta> en el fichero $JAVA_HOME/lib/javax.properties Si no se especifica ninguna, por defecto, devuelve una dependiente del sistema La factoría concreta no tiene porque ser thread-safe Por tanto, en un entorno multi-thread, cada thread necesita crear su propia factoría Obsérvese que el código de SAXMoviesAdder es, en consecuencia, thread-safe

19 Comentarios (y 3) javax.xml.parsers.saxparserfactory (cont) Permite configurar determinados aspectos globales de los parsers que creará Ej.: saxparserfactory.setvalidating(true) org.xml.sax.xmlreader Permite parsear el documento XML Antes es preciso establecer gestores de eventos Gestor de errores Clase que implementa org.xml.sax.errorhandler Gestor de eventos de contenido (apertura de tag, cierre de tag, etc.) Clase que implementa org.xml.sax.contenthandler

20 org.xml.sax.errorhandler public interface ErrorHandler { public void warning(saxparseexception exception) throws SAXException; public void error(saxparseexception exception) throws SAXException; public void fatalerror(saxparseexception exception) throws SAXException;

21 Comentarios org.xml.sax.saxparseexception es una subclase de org.xml.sax.saxexception que contiene Un mensaje descriptivo Información sobre la localización del error (org.xml.sax.locator) Opcionalmente, una excepción encapsulada Cada vez que el parsing encuentra un error llama al método correspondiente Si el método devuelve SAXParseException, la ejecución del parser termina XMLReader.parse devuelve la excepción Tipos de errores Warnings y errores: algo no es conforme al DTD Errores fatales: el documento no está bien formado

22 es.udc.fbellas.j2ee.util.xml.defaulterrorhandler public class DefaultErrorHandler implements ErrorHandler { public void warning(saxparseexception exception) throws SAXException { throw exception; public void error(saxparseexception exception) throws SAXException { throw exception; public void fatalerror(saxparseexception exception) throws SAXException { throw exception;

23 org.xml.sax.contenthandler public interface ContentHandler { public void setdocumentlocator(locator locator); public void startdocument() throws SAXException; public void enddocument() throws SAXException; public void startelement(string namespaceuri, String localname, String qualifiedname, Attributes attributes) throws SAXException; public void endelement(string namespaceuri, String localname, String qualifiedname) throws SAXException; public void characters(char[] chars, int start, int length) throws SAXException; // Otros métodos...

24 Comentarios La transparencia anterior sólo muestra los métodos que más se usan startelement y endelement incluyen información sobre espacios de nombres Nuestros documentos no usan espacios de nombres characteres El parser nos informa del texto de un elemento de tipo #PCDATA El parser puede necesitar llamar a este método varias veces para un elemento dado Para facilitar la implementación de la interfaz ContentHandler es.udc.fbellas.j2ee.util.xml.defaultcontenthandler proporciona una implementación vacía de todos los métodos Un ContentHandler específico puede extender de DefaultContentHandler y redefinir los métodos que le interese

25 Implementación de un ContentHandler Implementación directa Los métodos startelement, endelement y characters suelen tener muchos if para contemplar todos los elementos La implementación termina siendo grande y difícil de mantener En el ejemplo se ha aplicado el patrón Strategy para procesar los eventos Se ha definido el interfaz ElementHandler, con operaciones para los eventos de interés (apetura de tag, cierre de tag, etc.) Existe un ElementHandler concreto para cada tipo de elemento (movie, director, actor, etc.) Todos ElementHandlers necesitan compartir información El MovieVO actual La lista de MovieVOs El título de la última película insertada en la BD Etc. Compartirán un mismo ElementHandlerContext

26 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax (1) <<Interface>> MoviesAdder (from moviesadder) <<instantiate>> DefaultErrorHandler (from xml) SAXMoviesAdder - moviesblocksize : int + SAXMoviesAdder() <<instantiate>> <<instantiate>> MoviesContentHandler - elementhandlers : Map - elementlocalnameforcharacters : String - context : ElementHandlerContext ElementHandlerContext - locator : Locator - lastinsertedmovietitle : String - currentmovievo : MovieVO - moviesblocksize : int - currentlistofmovievos : List - facade : MoviesAdministrationFacadeDelegate + MoviesContentHandler(context : ElementHandlerContext) 1..n ElementHandler - context : ElementHandlerContext + ElementHandlerContext(moviesBlockSize : int) + getlocator() : Locator + setlocator(locator : Locator) : void + getlastinsertedmovietitle() : String + getcurrentmovievo() : MovieVO + setcurrentmovievo(currentmovievo : MovieVO) : void + addcurrentmovievotolist() : void + flushlistofmovievos() : void + ElementHandler(context : ElementHandlerContext) # getcontext() : ElementHandlerContext + startelement(attributes : Attributes) : void + endelement() : void + characters(chars : char[], start : int, length : int) : void

27 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax (y 2) ElementHandler ActorElementHandler MovieElementHandler + ActorElementHandler(context : ElementHandlerContext) + MovieElementHandler(context : ElementHandlerContext) DirectorElementHandler SynopsisElementHandler + DirectorElementHandler(context : ElementHandlerContext) + SynopsisElementHandler(context : ElementHandlerContext) GenreElementHandlerContext + GenreElementHandlerContext(context : ElementHandlerContext)

28 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax.moviescontenthandler (1) public class MoviesContentHandler extends DefaultContentHandler { private Map elementhandlers; private String elementlocalnameforcharacters; private ElementHandlerContext context; public MoviesContentHandler(ElementHandlerContext context) { this.context = context; elementhandlers = new HashMap(); elementhandlers.put("movies", new ElementHandler(context)); elementhandlers.put("movie", new MovieElementHandler(context)); elementhandlers.put("director", new DirectorElementHandler(context)); elementhandlers.put("actor", new ActorElementHandler(context)); elementhandlers.put("genre", new GenreElementHandler(context)); elementhandlers.put("synopsis", new SynopsisElementHandler(context));

29 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax.moviescontenthandler (2) public void setdocumentlocator(locator locator) { context.setlocator(locator); public void startelement(string namespaceuri, String localname, String qualifiedname, Attributes attributes) throws SAXException { elementlocalnameforcharacters = localname; getelementhandler(localname).startelement(attributes); public void endelement(string namespaceuri, String localname, String qualifiedname) throws SAXException { getelementhandler(localname).endelement();

30 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax.moviescontenthandler (y 3) public void characters(char[] chars, int start, int length) throws SAXException { getelementhandler(elementlocalnameforcharacters). characters(chars, start, length); public void enddocument() throws SAXException { context.flushlistofmovievos(); private ElementHandler getelementhandler(string elementlocalname) { return (ElementHandler) elementhandlers.get(elementlocalname);

31 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax.elementhandler public class ElementHandler { private ElementHandlerContext context; public ElementHandler(ElementHandlerContext context) { this.context = context; protected ElementHandlerContext getcontext() { return context; public void startelement(attributes attributes) throws SAXException { public void endelement() throws SAXException { public void characters(char[] chars, int start, int length) throws SAXException {

32 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax.movieelementhandler (1) public class MovieElementHandler extends ElementHandler { public MovieElementHandler (ElementHandlerContext context) { super(context); public void startelement(attributes attributes) throws SAXException { /* Get attribute values. */ String title = attributes.getvalue("", "title"); String runtimeasstring = attributes.getvalue("", "runtime"); String releasedayasstring = attributes.getvalue("", "releaseday"); String releasemonthasstring = attributes.getvalue("", "releasemonth"); String releaseyearasstring = attributes.getvalue("", "releaseyear"); NOTA: El primer parámetro de Attributes.getValue es la URI del espacio de nombres Especificamos dado que no usamos espacios de nombres

33 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax.movieelementhandler (2) /* * Convert string values into their true types, and validate if * necessary. * * NOTE: Release date is not fully validaded. */ int runtime = validateruntime(runtimeasstring); int releaseday = Integer.parseInt(releaseDayAsString); int releasemonth = Integer.parseInt(releaseMonthAsString); int releaseyear = Integer.parseInt(releaseYearAsString); Calendar releasedate = Calendar.getInstance(); releasedate.set(calendar.day_of_month, releaseday); releasedate.set(calendar.month, Calendar.JANUARY + releasemonth - 1); releasedate.set(calendar.year, releaseyear);

34 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax.movieelementhandler (3) /* * Create a MovieVO with the above values and set it as the * current MovieVO. */ MovieVO movievo = new MovieVO(new Long(-1), title, runtime, releasedate, new ArrayList(), new ArrayList(), new ArrayList(), ""); getcontext().setcurrentmovievo(movievo); public void endelement() throws SAXException { getcontext().addcurrentmovievotolist();

35 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax.movieelementhandler (y 4) private int validateruntime(string runtime) throws SAXParseException { try { int runtimeasint = Integer.parseInt(runtime); if ( runtimeasint <= 0) { throw new NumberFormatException(); return runtimeasint; catch (NumberFormatException e) { throw new SAXParseException( "'runtime' must be an integer > 0", getcontext().getlocator());

36 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax.directorelementhandler public class DirectorElementHandler extends ElementHandler { public DirectorElementHandler (ElementHandlerContext context) { super(context); public void startelement(attributes attributes) throws SAXException { String name = attributes.getvalue("", "name"); getcontext().getcurrentmovievo().getdirectornames().add(name); ActorElementHandler y GenreElementHandler se implementan de forma análoga

37 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax.synopsiselementhandler public class SynopsisElementHandler extends ElementHandler { private StringBuffer synopsisbuffer; public SynopsisElementHandler (ElementHandlerContext context) { super(context); public void startelement(attributes attributes) throws SAXException { synopsisbuffer = new StringBuffer(); public void endelement() throws SAXException { getcontext().getcurrentmovievo(). setsynopsis(synopsisbuffer.tostring()); public void characters(char[] chars, int start, int length) throws SAXException { synopsisbuffer.append(chars, start, length);

38 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax.elementhandlercontext (1) public class ElementHandlerContext { private Locator locator; private String lastinsertedmovietitle; private MovieVO currentmovievo; private int moviesblocksize; private List currentlistofmovievos; private MoviesAdministrationFacadeDelegate moviesadministrationfacadedelegate; public ElementHandlerContext(int moviesblocksize) { this.moviesblocksize = moviesblocksize; currentlistofmovievos = new ArrayList(); // Varios métodos get/set... public void addcurrentmovievotolist() throws SAXParseException { currentlistofmovievos.add(currentmovievo); if (currentlistofmovievos.size() == moviesblocksize) { flushlistofmovievos();

39 es.udc.fbellas.j2ee.xmltutorial.movies.controller.moviesadder.sax.elementhandlercontext (y 2) public void flushlistofmovievos() throws SAXParseException { try { if (moviesadministrationfacadedelegate == null) { moviesadministrationfacadedelegate = new MoviesAdministrationFacadeDelegate(); moviesadministrationfacadedelegate.addmovies( currentlistofmovievos); currentlistofmovievos.clear(); lastinsertedmovietitle = currentmovievo.gettitle(); catch (InternalErrorException e) { throw new SAXParseException("", locator, e);

40 Gestión de excepciones (1) La única manera de detener el proceso de parsing cuando se detecta un error es Lanzando SAXParseException, y Usando un ErrorHandler al estilo de DefaultErrorHandler En el ejemplo se ha seguido el siguiente convenio Lanzar SAXParseException sin excepción encapsulada cuando es un error de parsing que no es posible especificar con el DTD (ej.: runtime no válido) Lanzar SAXParseException con mensaje cuando hay un problema con la fachada de administración, y con la excepción correspondiente encapsulada El parser lanzará SAXParseException si el documento no está bien formado o no es válido No encapsulada excepción

41 Gestión de excepciones (y 2) Observar la última parte del código de SAXMoviesAdder En caso de problemas, se lanza una excepción MoviesAdderException Indica el título de la última película insertada satisfactoriamente (null si no se insertó ninguna) Encapsula una excepción, que puede ser: Instancia directa de SAXException Sólo llevará mensaje asociado Sólo puede ocurrir en el siguiente apartado (DOM) SAXParseException Sólo llevará mensaje asociado e información sobre ubicación IOException: error de entrada/salida Otra excepción (InternalErrorException o una excepción específica del modelo) Echar un vistazo a es.udc.fbellas.j2ee.xmltutorial.movies.shell.addmovies

SAX Parser. Ing. Augusto Dobeslao Herández López (Bases de Datos en XML)

SAX Parser. Ing. Augusto Dobeslao Herández López (Bases de Datos en XML) SAX Parser Ing. Augusto Dobeslao Herández López (Bases de Datos en XML) Simple API for XML (SAX) Proporciona mecanismos para leer desde un documento XML. Es un API orientada a eventos, actualmente en su

Más detalles

3.4 Parsers DOM con JAXP

3.4 Parsers DOM con JAXP 3.4 Parsers DOM con JAXP Una representación DOM de Movies.xml Document DocumentType Element (movies) Comment Element (movie, La Maldición..) Comment Element (movie, Amelie) Element (director) Element (actor)

Más detalles

SAX. cómo funciona? Introducción. La API de análisis basada en eventos

SAX. cómo funciona? Introducción. La API de análisis basada en eventos La API de análisis basada en eventos César Ignacio García Osorio SAX Introducción SAXReader Las excepciones de SAX ContentHandler: setdocumentlocator, startdocument, enddocument, processinginstruction,

Más detalles

Procesamiento de archivos XML (Parte 1)

Procesamiento de archivos XML (Parte 1) Procesamiento de archivos XML (Parte 1) Rubby Casallas 1 Referencias Esta presentación es un breve resumen de XML y no pretende ser exhaustiva. Para más información por favor consultar las siguientes referencias:

Más detalles

Procesamiento de documentos XML

Procesamiento de documentos XML Procesamiento de documentos XML Documentación Electrónica Soto Montalvo Contenido Introducción Document Object Model Simple API for XML DOM vs. SAX Cómo podemos manipular los documentos XML? SAX (Simple

Más detalles

5.3 Diseño por capas con Servicios Web

5.3 Diseño por capas con Servicios Web 5.3 Diseño por capas con Servicios Web Diseño por capas Misma idea que en CORBA Interfaz de usuario (no WS) Capa de traducción y delegación (WS) Capa de traducción y delegación (WS) IDL Capa de lógica

Más detalles

Programación Orientada a Objetos. Java: Excepciones

Programación Orientada a Objetos. Java: Excepciones Programación Orientada a Objetos Java: Excepciones Eduardo Mosqueira Rey LIDIA Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España

Más detalles

3.9 Patrón Distributed callback

3.9 Patrón Distributed callback 3.9 Patrón Distributed callback Motivación (1) Queremos que la aplicación de administración de los termostatos Monitorize la temperatura de algunos termostatos, avisándonos si ésta baja o sube por encima

Más detalles

Práctica sobre compartición de instancias remotas.

Práctica sobre compartición de instancias remotas. Práctica sobre compartición de instancias remotas. Para esta práctica se ha construido un pequeño sistema cliente-servidor que permite la resolución de Sudokus entre varios jugadores. El servidor consta

Más detalles

Programación Orientada a Objetos. Java: Excepciones

Programación Orientada a Objetos. Java: Excepciones Programación Orientada a Objetos Java: Excepciones Eduardo Mosqueira Rey Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España

Más detalles

Introducción a Java LSUB. 15 de enero de 2015 GSYC

Introducción a Java LSUB. 15 de enero de 2015 GSYC Introducción a LSUB GSYC 15 de enero de 2015 (cc) 2014 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial - SinObraDerivada

Más detalles

Uso de excepciones en Java

Uso de excepciones en Java Uso de excepciones en Java En Java, cuando se produce un error en un método, se lanza un objeto Throwable. Cualquier método que haya llamado al método puede capturar la excepción y tomar las medidas que

Más detalles

Ingeniería del Software Arquitectura Física en 3 niveles

Ingeniería del Software Arquitectura Física en 3 niveles Introducción En este laboratorio desplegaremos en 3 niveles físicos una aplicación que verifica si una cuenta y un password son correctos, basada en la que fue presentada en el laboratorio Separación entre

Más detalles

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 Ejercicio 1. Un indice de referencias cruzadas de las palabras que aparecen en un texto es una tabla por palabras y, por cada

Más detalles

Curso de Java POO: Programación orientada a objetos

Curso de Java POO: Programación orientada a objetos Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos

Más detalles

2.2 Parsing de documentos XML

2.2 Parsing de documentos XML 2.2 Parsing de documentos XML Introducción (1) Un documento XML se apoya en dos ideas [Obligatoria] Tiene que estar bien formado, y en consecuencia, estar construido en base a las normas de XML (los tags

Más detalles

Modelo de Objetos Distribuidos

Modelo de Objetos Distribuidos Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo

Más detalles

Interacción entre Aplicaciones: XML

Interacción entre Aplicaciones: XML UPCDAC/FIBPXC 1 Interacción entre Aplicaciones: XML En esta práctica se va a conocer y experimentar con la manipulación de documentos XML y las herramientas que hay disponibles. Muchas aplicaciones utilizan

Más detalles

Tema IV. XML V. APIs (DOM & SAX)

Tema IV. XML V. APIs (DOM & SAX) Tema IV. XML V. APIs (DOM & SAX) Desarrollo de Aplicaciones para Internet Curso 12 13 Índice 1.Introducción 2.DOM i. Introducción ii. Interfaces y Clases iii.ejemplos 3.SAX i. Introducción ii. Interfaces

Más detalles

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Solución al Examen de Prácticas de Programación (Ingeniería Informática) Solución al Examen de Prácticas de Programación (Ingeniería Informática) Junio 2006 Parte I. Cuestiones (3 puntos=50% nota del examen) 1) Se desea crear un conjunto de clases para representar en un programa

Más detalles

Manual del Protocolo XML-RPC de Mensajería Negocios

Manual del Protocolo XML-RPC de Mensajería Negocios Manual del Protocolo XML-RPC de Mensajería Negocios Índice de contenidos 1 INTRODUCCIÓN... 3 2 FUNCIONALIDADES DEL API DE COMUNICACIÓN XML-RPC... 4 2.1 Envío Libre... 4 2.2 Envío a Grupo de Contactos...

Más detalles

Repaso de las características más importantes de la programación Java y su adaptación a Android

Repaso de las características más importantes de la programación Java y su adaptación a Android Repaso de las características más importantes de la programación Java y su adaptación a Android 1. Entorno de programación en java 2. Variables y tipos de datos 3. Operaciones y operadores 4. Clases y

Más detalles

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 1. (0,75 PUNTOS) Identificad a continuación las sentencias que son ciertas, descartando

Más detalles

ATLAS MANUAL DE INTEGRACIÓN Cliente del Servicio de SMS

ATLAS MANUAL DE INTEGRACIÓN Cliente del Servicio de SMS ATLAS MANUAL DE INTEGRACIÓN Cliente del Servicio de SMS Versión 1.0 Arquitectura de Software Hoja de Control Título Documento de Referencia Responsable Servicio de SMS Cliente NORMATIVA ATLAS Arquitectura

Más detalles

FRAMEWORK 2 Recepción de SMS

FRAMEWORK 2 Recepción de SMS FRAMEWORK 2 Versión 1.1 Área de Integración y Arquitectura de Aplicaciones Hoja de Control Título Documento de Referencia Responsable FW2_MUS_Recepcion_SMS Área de Integración y Arquitectura de Aplicaciones

Más detalles

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Java RMI. Sistemas Distribuidos Rodrigo Santamaría + Java RMI Sistemas Distribuidos Rodrigo Santamaría RMI Java RMI 2 + RMI 3 Remote Method Invocation: middleware para que un objeto que se ejecuta en una JVM use métodos de otro objeto que se ejecuta en

Más detalles

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA José Luis Pastrana Brincones (pastrana@lcc.uma.es) Dpto. Lenguajes y Ciencias de la Computación. Universidad de Málaga

Más detalles

Interacción y manejo de documentos XML.

Interacción y manejo de documentos XML. Interacción y manejo de documentos XML. Como último miembro de la familia XML, nos planteamos la tecnología por la cual una aplicación externa, escrita en no importa que lenguaje de programación, puede

Más detalles

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez) Patrones de diseño Patrón básico Handler Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez) Patrones de diseño Introducción Objetivos: Diseño específico para el problema, pero general para

Más detalles

Patrón Fábrica Abstracta. Julio Ariel Hurtado Alegría Ingeniería de Software II 2015

Patrón Fábrica Abstracta. Julio Ariel Hurtado Alegría Ingeniería de Software II 2015 Patrón Fábrica Abstracta Julio Ariel Hurtado Alegría Ingeniería de Software II 2015 Contenido Descripción General Problema Solución Participantes Ejemplo: Fábrica de Carros Ejemplo: RelojVisual 2 Descripción

Más detalles

XML, Servicios Web y Web Semántica

XML, Servicios Web y Web Semántica XML, Servicios Web y Web Semántica Departamento de Informática Universidad de Oviedo Sesión 7 Programación XML SAX, DOM, Enlaces Departamento de Informática Universidad de Oviedo NOTA: Gran parte de estas

Más detalles

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Tipos de herencia Herencia y niveles de visibilidad Herencia y creación Redefinición de métodos Conversión

Más detalles

Programación Orientada a Objetos en Java

Programación Orientada a Objetos en Java Programación Orientada a Objetos en Java Curso 2006-2007 Tema 4 Herencia y Polimorfismo Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Herencia

Más detalles

Tema 1. Introducción a JAVA

Tema 1. Introducción a JAVA Tema 1. Introducción a JAVA Historia Características Plataforma Java Entorno de desarrollo Ejemplo: Hola mundo Estructura general de un programa Java 1 Historia de Java (i) Surge en 1991: Sun Microsystems

Más detalles

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores Las variables se utilizan en programación para almacenar temporalmente

Más detalles

Patrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype

Patrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype Temario Patrones de Diseño de Software Fundamentos de Ingeniería de SW Jocelyn Simmonds GOF: Patrones Creacionales Patrones Estructurales ILI-236 (JS) Patrones II 1 / 31 ILI-236 (JS) Patrones II 2 / 31

Más detalles

INDICE DEL CURSO APRENDER PROGRAMACIÓN JAVA DESDE CERO. PROGRAMACIÓN ORIENTADA A OBJETOS (CU00601B)

INDICE DEL CURSO APRENDER PROGRAMACIÓN JAVA DESDE CERO. PROGRAMACIÓN ORIENTADA A OBJETOS (CU00601B) APRENDERAPROGRAMAR.COM INDICE DEL CURSO APRENDER PROGRAMACIÓN JAVA DESDE CERO. PROGRAMACIÓN ORIENTADA A OBJETOS (CU00601B) Sección: Cursos Categoría: Curso Aprender programación Java desde cero Fecha revisión:

Más detalles

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida } REUTILIZACIÓN DE CLASES:MODELO DE HERENCIA EN JAVA Java soporta herencia simple pero no múltiple. Lo hace mediante el mecanismo de extensión de clase. A partir de él, una subclase se extiende (hereda)

Más detalles

Primera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

Primera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta. Primera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO LAEFF - INTA raul@laeff.inta.es Qué es Java? Java es un lenguaje de programación orientado a objetos desarrollado por Sun

Más detalles

Programación orientada a objetos

Programación orientada a objetos Repaso Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual smuelas@fi.upm.es! Clase! Objeto! Atributo o variable de instancia! Método! Instanciar/crear un objeto!

Más detalles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí

Más detalles

MANEJO DE FICHEROS XML Versión 1.0

MANEJO DE FICHEROS XML Versión 1.0 MANEJO DE FICHEROS XML Versión 1.0 NOVIEMBRE 2006 Página: 1 1 TABLA DE CONTENIDO 1 TABLA DE CONTENIDO... 2 2 INTRODUCCIÓN... 3 3 ELEMENTOS NECESARIOS PARA EL DESARROLLO... 3 4 GENERAR ESQUEMA... 3 5 LECTURA

Más detalles

Pruebas de unidad con JUnit

Pruebas de unidad con JUnit Pruebas de unidad con JUnit Cuando se implementa software, resulta recomendable comprobar que el código que hemos escrito funciona correctamente. Para ello, implementamos pruebas que verifican que nuestro

Más detalles

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK. Introducción Java surgió en 1991 dentro de la empresa Sun Microsystems como un lenguaje de programación sencillo y universal destinado a electrodomésticos. La reducida potencia de cálculo y memoria de

Más detalles

1 HILOS (THREADS) EN JAVA

1 HILOS (THREADS) EN JAVA 1 HILOS (THREADS) EN JAVA 1.1QUÉ ES UN THREAD La Máquina Virtual Java (JVM) es un sistema multihilo. Es decir, es capaz de ejecutar varios hilos de ejecución simultáneamente. La JVM gestiona todos los

Más detalles

5.4 Caso de estudio: diseño e implementación de la capa modelo de MiniPortal con EJB. Tipos de EJBs y patrones usados

5.4 Caso de estudio: diseño e implementación de la capa modelo de MiniPortal con EJB. Tipos de EJBs y patrones usados 5.4 Caso de estudio: diseño e implementación de la capa modelo de MiniPortal con EJB. Tipos de EJBs y patrones usados Introducción Qué tipos de EJBs ilustra MiniPortal? Entity Beans CMP (UserProfile) SLSBs

Más detalles

Java en 2 horas. Rodrigo Santamaría

Java en 2 horas. Rodrigo Santamaría + Java en 2 horas Rodrigo Santamaría + Generalidades 2 Desarrollado por Sun en 1995 Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas a bytecode Gestión

Más detalles

Universidad ORT - Arquitectura de Software. Requisitos

Universidad ORT - Arquitectura de Software. Requisitos Requisitos Versión 1.5 (o superior) de la JDK de Java NetBeans 6.5 como IDE de desarrollo JBoss 4.2.x como Application Server Variable de entorno de Windows JAVA_HOME apuntando al directorio de instalación

Más detalles

Patrones de Diseño. Patrón estructural Composite. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)

Patrones de Diseño. Patrón estructural Composite. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez) Patrones de Diseño Patrón estructural Composite Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez) Propósito Componer objetos en estructuras arbóreas para representar jerarquías todo-parte.

Más detalles

Programación Orientada a Objetos con Java

Programación Orientada a Objetos con Java Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la

Más detalles

2.2.- Paradigmas de la POO

2.2.- Paradigmas de la POO 2.2.- Paradigmas de la POO Los principios propios de la orientación a objetos son: 2.2.1.- Abstracción de Datos 2.2.2.- Encapsulamiento 2.2.3.- Ocultamiento 2.2.4.- Herencia 2.2.5.- Polimorfismo Cualquier

Más detalles

Desarrollo de Aplicaciones para Android

Desarrollo de Aplicaciones para Android Desarrollo de Aplicaciones para Android Sesión 7: Servicios de red Desarrollo de Aplicaciones para Android Depto. Ciencia de la Computación e IA Servicios de red-1 Puntos a tratar Conexiones HTTP Parsing

Más detalles

Programación en Java. Programación en OO

Programación en Java. Programación en OO Programación en OO Lección 4:Programación en OO 1. Herencia 2. Modificadores de Acceso 3. Interfaces Herencia Es la acción en la que una clase obtiene los métodos y propiedades definidos en otra clase,

Más detalles

Arquitectura Cliente/Servidor. Invocación de Métodos Remotos RMI: Remote Method Invocation. Llamadas a Métodos Remotos

Arquitectura Cliente/Servidor. Invocación de Métodos Remotos RMI: Remote Method Invocation. Llamadas a Métodos Remotos Invocación de Métodos Remotos RMI: Remote Method Invocation Prof Wílmer Pereira Universidad Simón Bolívar Arquitectura Cliente/Servidor Cliente Request Reply Servidor Cómo permitir comunicación entre objetos

Más detalles

Desarrollo de Servicios Web con JBuilder

Desarrollo de Servicios Web con JBuilder Artículos técnicos Grupo Danysoft: Desarrollo de Servicios Web con JBuilder Segunda parte Oscar Cristobal Ruiz Departamento Java Equipo Grupo Danysoft Enero 2003 - (902) 123146 www.danysoft.com Desarrollo

Más detalles

Ingeniería del Software II. Curso 2003/2004. Enunciado de la práctica del Segundo parcial.

Ingeniería del Software II. Curso 2003/2004. Enunciado de la práctica del Segundo parcial. Ingeniería del Software II. Curso 2003/2004. Enunciado de la práctica del Segundo parcial. Para este parcial, debe modificarse la práctica del primer parcial de la siguiente manera: Servidor: la aplicación

Más detalles

Carmen. Estándares de codificación. Manuel Arias Calleja

Carmen. Estándares de codificación. Manuel Arias Calleja Carmen. Estándares de codificación Manuel Arias Calleja II Índice general 1. Estandares de codificación 1 1.1. Nombres de ficheros........................ 1 1.2. Organización de ficheros......................

Más detalles

Administración Local Soluciones

Administración Local Soluciones SISTEMA INTEGRADO DE GESTIÓN DE EXPEDIENTES MODULAR (SIGM) FUNCIONALIDAD ANTIVIRUS (MÓDULO TRAMITACIÓN ELECTRÓNICA) SIGM v3 Administración Local Soluciones Control de versiones Versión Fecha aprobación

Más detalles

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º 1. Ejercicio (1 punto) Dado el array A={8, 3, 7, 1, 4, 9, 5, 2, 6 Describir cual es el estado del array A después de cada paso principal del algoritmo: InsertionSort. {8, 3, 7, 1, 4, 9, 5, 2, 6 {3, 8,

Más detalles

%& %)& '$!%*+ $, %%%&$ %%

%& %)& '$!%*+ $, %%%&$ %% OBJETIVO!!"#$$ %& '(%"#% (% %& %)& '$!%*+ $, %%%&$ %% REQUERIMIENTOS SOFTWARE VERSIÓN LINK Java Development Kit (JDK) 6 http://java.sun.com NetBeans 6.1 http://www.netbeans.org MySQL 5.0 http://dev.mysql.com/

Más detalles

Tutorial 1: Desarrollo de un plugin

Tutorial 1: Desarrollo de un plugin Tutorial 1: Desarrollo de un plugin En este tutorial introductorio se creará un plugin siguiendo una de las plantillas que ofrece Eclipse. Concretamente se extenderá una vista para mostrar cierta información

Más detalles

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría Java en 3 horas Ampliación de Sistemas Operativos Rodrigo Santamaría Generalidades Desarrollado por Sun Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas

Más detalles

Introducción al lenguaje Java

Introducción al lenguaje Java Tipo de entrega: Fecha límite: Lugar: Introducción al lenguaje Java por grupos de prácticas sesión de laboratorio Atenea Objetivos de la práctica: Escribir aplicaciones simples en Java Utilizar el entorno

Más detalles

5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI

5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI 5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI Contenidos Tutorial de Java RMI Caso de estudio: diseño e implementación de la capa modelo de MiniBank con Java RMI Arquitectura

Más detalles

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2 Tema 9 Llamada a métodos remotos (RMI). Departament d Informàtica. Índice 1. Introducción 2 1.1. Cómo funciona RMI?.......................................... 2 2. Usando RMI 4 2.1. Fase de desarrollo:

Más detalles

Introducción a la Programación Orientada a Objetos

Introducción a la Programación Orientada a Objetos Introducción a la Programación Orientada a Objetos El paradigma imperativo. En un programa se tienen una serie de variables con las cuales operamos y modificamos mediante sentencias y funciones para producir

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez Encapsulamiento: Control de Acceso Clases en Java (1) UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO En Java se organizan las clases en paquetes

Más detalles

Tema 3: Genericidad en Java. Tema 3: Genericidad en Java. Objetivos y Bibliografía. Modelos de Datos Genéricos

Tema 3: Genericidad en Java. Tema 3: Genericidad en Java. Objetivos y Bibliografía. Modelos de Datos Genéricos Tema 3: Genericidad en Java Tema 3: Genericidad en Java Germán Moltó Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica de Valencia Índice general: 1. Definición y Ventajas de la

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Dpto. de Ingeniería de Sistemas Telemáticos E.T.S.I. Telecomunicación Universidad Politécnica de Madrid FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Normas de examen: Con libros y apuntes Duración: 2 horas

Más detalles

Estructura de las Aplicaciones Orientadas a Objetos El patrón Modelo-Vista-Controlador (MVC)

Estructura de las Aplicaciones Orientadas a Objetos El patrón Modelo-Vista-Controlador (MVC) Estructura de las Aplicaciones Orientadas a Objetos El patrón Modelo-Vista-Controlador (MVC) Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial

Más detalles

Microsoft XML Core Services MSXML

Microsoft XML Core Services MSXML Microsoft XML Core Services MSXML Sergio Luján Mora sergio.lujan@ua.es http://gplsi.dlsi.ua.es/~slujan/ 1 MSXML... 3 Introducción... 3 Objetos del DOM... 5 Objeto XMLDOMDocument... 5 Construcción de un

Más detalles

Estructura de las Aplicaciones Orientadas a Objetos Herencia y Polimorfismo

Estructura de las Aplicaciones Orientadas a Objetos Herencia y Polimorfismo Estructura de las Aplicaciones Orientadas a Objetos Herencia y Polimorfismo Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad Complutense

Más detalles

Introducción - por qué usarlas?(1)

Introducción - por qué usarlas?(1) Excepciones en Java Introducción - por qué usarlas?(1) En el mundo de la programación hay algo que siempre ocurre: los errores en los programas. Pero qué sucede realmente después de que ha ocurrido el

Más detalles

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2 Objetivos Herencia. Utilización de interfaces y clases abstractas. Índice 1. Interfaces 1 2. Clases abstractas 2 3. Collections Framework 3 3.1. Collection........................................... 3

Más detalles

Plataforma de Contratación del Sector Público

Plataforma de Contratación del Sector Público del Sector Público Dirección General del Patrimonio del Estado Subdirección General de Coordinación de la Contratación Electrónica Versión: 1. Fecha: 10/12/2015 DEL PATRIMONIO DEL DEL ESTADO CONTROL DE

Más detalles

Técnicas Avanzadas de Testing Automatizado

Técnicas Avanzadas de Testing Automatizado Técnicas Avanzadas de Testing Automatizado Introducción: Testing ad hoc Testing sistemático Testing unitario Unidad y Suite de tests Frameworks xunit Fixtures compartidos e independecia Tests parametrizados

Más detalles

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

Ejercicio 4. EJB Sesión - Sistema SGA. Java EE. Ejercicio 4. EJB Sesión Sistema SGA. Curso de Java EE

Ejercicio 4. EJB Sesión - Sistema SGA. Java EE. Ejercicio 4. EJB Sesión Sistema SGA. Curso de Java EE Java EE Ejercicio 4 EJB Sesión Sistema SGA Objetivo del Ejercicio El objetivo del ejercicio es agregar un EJB de Sesión a nuestro proyecto SGA (Sistema de Gestión de Alumnos), el cual desarrollaremos a

Más detalles

EXCEPCIONES EN JAVA. Las sentencias que tratan las excepciones son try y catch. La sintaxis es:

EXCEPCIONES EN JAVA. Las sentencias que tratan las excepciones son try y catch. La sintaxis es: EXCEPCIONES EN JAVA Uno de los problemas más importantes al escribir aplicaciones es el tratamiento de los errores. Errores no previstos que distorsionan la ejecución del programa. Las excepciones de Java

Más detalles

public static void main(string[ ] args) { Numero f1 = new Numero(3); Numero f2 = new Numero(4); Numero f3 = f1; f1.value = f2.value; Numero f4 = null;

public static void main(string[ ] args) { Numero f1 = new Numero(3); Numero f2 = new Numero(4); Numero f3 = f1; f1.value = f2.value; Numero f4 = null; Examen de Programación Convocatoria de Septiembre 2005 Licenciatura de Lingüística y Nuevas Tecnologías Pregunta 1 Tenemos el siguiente programa: public class Numero { int value; public Numero(int i) {

Más detalles

JDBC. Una mini-introducci. introducción

JDBC. Una mini-introducci. introducción JDBC Una mini-introducci introducción Introducción JDBC (Java DataBase Connectivity) Protocolo para utilizar bases de datos relacionales desde Java Se basa en la utilización n de drivers que implementan

Más detalles

Práctica 2: Java Remote Method Invocation (RMI)

Práctica 2: Java Remote Method Invocation (RMI) Práctica 2: Java Remote Method Invocation (RMI) Aplicaciones Telemáticas II Introducción El objetivo de esta práctica es conocer un poco más sobre el paradigma de objetos remotos. La idea principal es

Más detalles

2. Estructura de un programa en Java

2. Estructura de un programa en Java 24 A. García-Beltrán y J.M. Arranz 2. Estructura de un programa en Java Objetivos: a) Describir la estructura del código fuente de una aplicación Java b) Presentar los conceptos de comentario y de identificador

Más detalles

Patrones para persistencia (I) Ingeniería del Software II

Patrones para persistencia (I) Ingeniería del Software II Patrones para persistencia (I) Ingeniería del Software II 1 Patrones para la construcción del esquema relacional En todos los ejemplos realizaremos transformaciones del siguiente diagrama de clases: Figura

Más detalles

Práctica 5: Common Object Request Broker Architecture CORBA

Práctica 5: Common Object Request Broker Architecture CORBA Práctica 5: Common Object Request Broker Architecture CORBA Aplicaciones Telemáticas II Introducción El objetivo de esta práctica es entender mejor el funcionamiento de CORBA (Common Object Request Broker

Más detalles

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1. Partes de un programa en Java A. Ejemplo de un Programa en Java /* class Ejemplo1 { //comienza la clase Ejemplo1. public static void main(string[] args) { // comienza el método main. JFrame miventana;

Más detalles

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler Task Scheduler Se necesita modelar una aplicación que permita definir tareas y ejecutarlas en forma programada. Las tareas pueden ser: La ejecución de programa cualquiera o comando del sistema operativo,

Más detalles

Examen de Prácticas de Programación Ingeniería Informática

Examen de Prácticas de Programación Ingeniería Informática Examen de Prácticas de Programación Ingeniería Informática Septiembre 2007 1) (3.5 puntos) Se pretende desarrollar un programa para gestionar las reparaciones de coches realizadas en un garaje. Del análisis

Más detalles

Práctica 4: Java Remote Method Invocation (RMI)

Práctica 4: Java Remote Method Invocation (RMI) Práctica 4: Java Remote Method Invocation (RMI) Aplicaciones Telemáticas II Introducción Hasta el momento hemos visto aplicaciones remotas donde un cliente utiliza un objeto remoto que ha sido publicado

Más detalles

MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar

MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar MONITORES EN JAVA Un monitor es un objeto que implementa acceso bajo e.m. a todos sus métodos, y provee sincronización En Java, son objetos de una clase cuyos métodos públicos son todos synchronized Un

Más detalles

Elementos léxicos del lenguaje de programación Java

Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices Operadores

Más detalles

También añado a la clase Libro los siguientes métodos: (que programaré más adelante)

También añado a la clase Libro los siguientes métodos: (que programaré más adelante) 1.Creación de la capa de negocios La capa del Dominio de Negocios consta de una clase creada a partir de la tabla Libro a la que le he añadido los atributos no persistentes: CodPais, artic y digcontrol.

Más detalles

1. Manejo de memoria estática 2. Manejo de memoria dinámica

1. Manejo de memoria estática 2. Manejo de memoria dinámica 1. Manejo de memoria estática 2. Manejo de memoria dinámica *La administración de memoria de una computadora es una tarea fundamental debido a que la cantidad de memoria es limitada. *El sistema operativo

Más detalles

1. Visión general de RMI

1. Visión general de RMI 1. Visión general de RMI Java RMI permite al programador ejecutar métodos de objetos remotos utilizando la misma semántica que si fueran invocaciones locales (Véase Figura 1). Máquina Local (Cliente) Máquina

Más detalles

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 E V E N T O S. Ing. Bruno López Takeyas, M.C. http://www.itnuevolaredo.edu.

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 E V E N T O S. Ing. Bruno López Takeyas, M.C. http://www.itnuevolaredo.edu. CAPÍTULO 8 E V E N T O S 2 http://www.itnuevolaredo.edu.mx/takeyas 1 Preguntas detonadoras Quéesunevento? Paraquésirve? Qué temas se deben dominar para implementar aplicaciones con eventos? Qué se requiere

Más detalles

Clases abstractas e interfaces

Clases abstractas e interfaces Clases abstractas e interfaces Clases abstractas Una clase abstracta es una clase que no se puede instanciar se usa únicamente para definir subclases Cuándo es una clase abstracta? En cuanto uno de sus

Más detalles

en otra máquina exactamente de la misma manera que si se encontrará en la misma máquina

en otra máquina exactamente de la misma manera que si se encontrará en la misma máquina Máquina A Máquina B Máquina C Lo ideal sería tener un sistema distribuido orientado a objetos que permita: 1)Invocar un método de un objeto que se localiza en otra máquina exactamente de la misma manera

Más detalles

Java Inicial (20 horas)

Java Inicial (20 horas) Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción

Más detalles

Tema 2. El lenguaje de programación Java (Parte 1)

Tema 2. El lenguaje de programación Java (Parte 1) Programación en Java Tema 2. El lenguaje de programación Java (Parte 1) Luis Rodríguez Baena Facultad de Informática Elementos del lenguaje (I) El juego de caracteres. No utiliza ASCII, sino Unicode de

Más detalles

Especialista Universitario Java Enterprise. Struts. Sesión 4: Introducción a Struts 2. 2010-2011 Depto. Ciencia de la Computación e IA

Especialista Universitario Java Enterprise. Struts. Sesión 4: Introducción a Struts 2. 2010-2011 Depto. Ciencia de la Computación e IA Struts Sesión 4: Introducción a Struts 2 Indice Motivación De Struts 1.x a Struts 2 Acciones Actionforms Taglibs Internacionalización Validación Conceptos nuevos en Struts 2 2 Por qué era necesario Struts

Más detalles