La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Germán Bordel (CD4 P1.6) Mikel Peñagarikano (CD4 P1.5)

Presentaciones similares


Presentación del tema: "Germán Bordel (CD4 P1.6) Mikel Peñagarikano (CD4 P1.5)"— Transcripción de la presentación:

1 Germán Bordel (CD4 P1.6) Mikel Peñagarikano (CD4 P1.5)

2 Requisitos: Conocimiento del lenguaje de programación Java Objetivo: Desarrollo de Aplicaciones Web basadas en Data Mining, XML y Bases de Datos. Práctica (caso de uso): Presentación dinámica en una web de información relativa a las cotizaciones del Nasdaq

3 Material bibliográfico The Java Tutorials Java Platform, Standard Edition 7 API Specification

4 Temario IDE: El entorno de desarrollo integrado NetBeans + JDK La bolsa. Cotizaciones del Nasdaq Descarga de contenido web Expresiones Regulares Extracción de cotizaciones Estructuras de datos Diseño de estructuras para almacenar cotizaciones XML como representación de la información Cotizaciones en formato XML

5 Temario II Procesamiento (parsing) de XML Instanciación de objetos desde XML Servidores Web Instalación de un servidor de aplicaciones Aplicaciones web: JSPs Servicio dinámico de información de cotizaciones Nasdaq Bases de Datos: MySQL Almacenamiento de cotizaciones en una Base de Datos Consulta web a una base de datos

6 IDE: Entorno de desarrollo integrado IDE: Integrated Development Environment Editor + compilador/intérprete + depurador

7 NetBeans:

8 JDK: Java Development Kit Podemos instalar ambos a la vez

9 Bolsa de Valores (es.wikipedia.org): organización privada que brinda las facilidades necesarias para que sus miembros, atendiendo los mandatos de sus clientes, introduzcan órdenes y realicen negociaciones de compra y venta de valores. acciones de sociedades o compañías anónimas, bonos públicos y privados Certificados títulos de participación... NASDAQ (National Association of Securities Dealers Automated Quotation): la bolsa de valores electrónica y automatizada más grande de los Estados Unidos La bolsa. Cotizaciones del Nasdaq

10 Bolsa de Valores (es.wikipedia.org): organización privada que brinda las facilidades necesarias para que sus miembros, atendiendo los mandatos de sus clientes, introduzcan órdenes y realicen negociaciones de compra y venta de valores. acciones de sociedades o compañías anónimas, bonos públicos y privados Certificados títulos de participación... NASDAQ (National Association of Securities Dealers Automated Quotation): la bolsa de valores electrónica y automatizada más grande de los Estados Unidos La bolsa. Cotizaciones del Nasdaq

11

12

13 Compuesta por Clases (estructuras) Campos (variables) Métodos (funciones) Al instanciar una clase, creamos un nuevo objeto Los campos y métodos pueden ser Propios de cada instancia/objeto Estáticos (compartidos por todas las instancias) Herencia Si una clase extiende a otra, hereda todos sus componentes Si no extiende nada, extiende Object Los componentes heredados pueden ser sobreescritos Las clases se agrupan en paquetes (librerías) Java API: conjunto de paquetes preexistentes Aplicación Java

14 Permite agrupar clases en un conjunto de paquetes Gestión de clases y paquetes Generación de código fuente (esqueletos) Gestión de plataforma Java (JVM) Gestión de versión del código fuente (JDK 7) Gestión de la clase principal (aplicación) Proyecto de Netbeans comentarios declaración de paquete declaración de clase declaración de método

15 Programa mínimo Para poder utilizar una clase, debemos importarla (indicar a qué paquete pertenece), excepto: java.lang.* System == java.lang.System System.out Objeto de tipo PrintStream Contiene el método void println(String x) Muestra una cadena por la salida estándar Ejecutar una aplicación ( F6 ) Se ejecuta el método main(String[] args) de la clase declarada como principal ( prueba.Main ) ¡Hola Mundo!

16 Clases que representan Flujos de entrada/salida de datos Permiten conectar nuestra aplicación a Dispositivos de entrada/salida Ficheros Aplicaciones remotas (sockets) Estructuras de datos Conjunto básico de Streams InputStream/OutputStream: lectura/escritura a nivel de byte BufferedInputStream /BufferedOutputStream : añade buffering BufferedReader: lectura de caracteres con buffering ( String readLine() ) PrintWriter: escritura con formato ( void println(…) ) I/O Streams (java.io)

17 La clase URL ( java.net.URL ) permite crear una URL a partir de su descripción textual (p. ej., http ://www.ehu.es ).http ://www.ehu.es El método openStream() devuelve un InputStream, de donde poder leer el contenido web (lectura de bytes). Con el InputStream podemos crear un InputStreamReader (lectura a nivel de caracteres). A partir del InputStreamReader podemos crear un BufferedReader (lectura por líneas) Descarga de contenido web

18 Ciertos métodos pueden generar Excepciones Podemos Atenderlas o Declararlas Las excepciones son también clases importarlas Debemos cerrar todos los Streams abiertos try with resources (jdk 1.7) readLine() devuelve null cuando ya no hay más datos Descarga de contenido web II

19 package prueba; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; public class Main { public static void main(String[] args) throws MalformedURLException, IOException { System.out.println(getHTML("http://www.ehu.es")); } public static String getHTML(String url) throws MalformedURLException, IOException{ StringBuilder sb = new StringBuilder(); try ( BufferedReader in = new BufferedReader( new InputStreamReader( new URL(url).openStream())); ){ String s; while ((s = in.readLine()) != null) sb.append(s).append('\n'); } return sb.toString(); }

20 Java.lang.String matches(String regex) replaceAll(String regex, String replacement) replaceFirst(String regex, String replacement) split(String regex) java.util.regex.Pattern Pattern.compile(String regex) java.util.regex.Matcher pattern.matcher(CharSequence input) Expresiones Regulares - Clases

21 Representa un conjunto de cadenas mediante un patrón hola* representa a hol, hola, holaa, holaaa,… co*sa representa a csa, cosa, coosa, cooosa,… hola|adiós representa únicamente a hola y adios (p|m)adre representa únicamente a padre y madre.* representa a todas la posibles cadenas Existe un conjunto de caracteres especiales: Si deseamos incluirlos en las expresiones Para incluirlos, debemos poner \ por delante.* representa a todas la posibles cadenas \.* representa a,.,..,...,… \\ representa a \ Expresiones Regulares - Ejemplos En java, debemos además añadir un \ para representar \, por lo cual, la expresión regular que representa \ es: \\\\

22 Clases (conjuntos) de caracteres ConstructDescription [abc]a, b, or c (simple class) [^abc]Any character except a, b, or c (negation) [a-zA-Z]a through z, or A through Z, inclusive (range) [a-d[m-p]]a through d, or m through p: [a-dm-p] (union) [a-z&&[def]]d, e, or f (intersection) [a-z&&[^bc]]a through z, except for b and c: [ad-z] (subtraction) [a-z&&[^m-p]]a through z, and not m through p: [a-lq-z] (subtraction)

23 Clases predefinidas ConstructDescription.Any character (may or may not match line terminators) \dA digit: [0-9] \DA non-digit: [^0-9] \sA whitespace character: [ \t\n\x0B\f\r] \SA non-whitespace character: [^\s] \wA word character: [a-zA-Z_0-9] \WA non-word character: [^\w]

24 Cuantificadores GreedyReluctantPossessiveMeaning X?X??X?+X, once or not at all X*X*?X*+X, zero or more times X+X+?X++X, one or more times X{n}X{n}?X{n}+X, exactly n times X{n,}X{n,}?X{n,}+X, at least n times X{n,m}X{n,m}?X{n,m}+X, at least n but not more than m times

25 Patrones de borde Boundary ConstructDescription ^The beginning of a line $The end of a line \bA word boundary \BA non-word boundary \AThe beginning of the input \GThe end of the previous match \Z The end of the input but for the final terminator, if any \zThe end of the input

26 Cualquier par de paréntesis captura una subsecuencia El patrón ((A)(B(C))) captura 4 grupos: 1: ((A)(B(C))) 2: (A) 3: (B(C)) 4: (C) Es posible referenciar capturas mediante \numero El patrón (\d\d)\1 representa a 1212 pero no a 1234 Captura de grupos (subsequencias)

27 Se usan las clases Pattern y Matcher : Pattern p = Pattern.compile(String regex); Matcher m = p.matcher(CharSequence input); La clase Matcher permite localizar subcadenas mediante expresiones regulares: while (m.find()) { System.out.println(m.group()); } Es posible obtener los grupos capturados en la regexp m.group(int i) m.group() == m.group(0) Extracción de patrones

28 Una interfaz es una especie de contrato. Es sintácticamente similar a una clase, sólo puede contener: Constantes Prototipos de métodos (funciones) Nombre + tipos de los argumentos No pueden existir dos métodos con un mismo prototipo Tipos anidados (clases, interfaces…) Pueden ser Implementadas por clases Toda clase (no abstracta) que implemente una interfaz debe contener las funciones de la interfaz (de ahí el concepto de contrato) Una clase puede implementar tantas interfaces como desee. Extendidas por otra interfaz Es posible crear jerarquías de interfaces Interfaces en Java

29 La API de java incluye una familia de interfaces/clases diseñadas para servir de estructuras de datos genéricas: java.util.Collection Se basa en una jerarquía de interfaces que define de manera abstracta un conjunto de estructuras de datos de uso general: Estructuras de datos

30 public interface Collection extends Iterable { // Basic operations int size(); boolean isEmpty(); boolean contains(Object element); // optional boolean add(Object element); // optional boolean remove(Object element); // Bulk operations boolean containsAll(Collection c); // optional boolean addAll(Collection c); // optional boolean removeAll(Collection c); // optional boolean retainAll(Collection c); // optional void clear(); // Array operations Object[] toArray(); … } Interfaz Collection

31 Permiten el uso de los tipos (clases e interfaces) como parámetros al definir clases, interfaces y métodos: Permite minimizar errores de programación en la compilación No existen en tiempo de ejecución (X Object) Genericos en Java public Caja { Object o ; public void guarda(Object o){ this.o = o; } public Object recupera(){ return o; } …… Caja micaja = new Caja(); public Caja { X o ; public void guarda(X o){ this.o = o; } public X recupera(){ return o; } …… Caja micaja = new Caja<>();

32 public interface Collection extends Iterable { // Basic operations int size(); boolean isEmpty(); boolean contains(Object element); // optional boolean add(E element); // optional boolean remove(Object element); // Bulk operations boolean containsAll(Collection c); // optional boolean addAll(Collection c); // optional boolean removeAll(Collection c); // optional boolean retainAll(Collection c); // optional void clear(); // Array operations Object[] toArray(); T[] toArray(T[] a); … } Interfaz Collection - Generics

33 Lenguaje de Marcas Forma de codificar un documento que, junto con el texto, incorpora etiquetas o marcas que contienen información adicional acerca de la estructura del texto o su presentación (p.ej.: HTML) Estándar para el intercambio de información estructurada entre diferentes plataformas/aplicaciones. Características: Extensible, estructurado y legible (basado en texto) El analizador (parser) puede ser genérico Codificación de texto no ambigua XML (Extensible Markup Language) <>данные Mikel Peñagarikano Mikel Peñagarikano

34 Prólogo (opcional) Una declaración XML Una declaración de tipo de documento Uno o más comentarios e instrucciones de procesamiento Cuerpo: un único elemento raíz Elementos … Atributos: características propias de los elementos Mañana volveremos en coche Entidades: < (" "), & ("&") Comentarios Texto: entre las etiquetas Secciones CDATA (ignorado por el parser): XML - Estructura

35 Tove Jani Reminder Don't forget me this weekend! Don't forget me this weekend! Look at my code: Did you like it? XML - Ejemplos

36 DTD (Document Type Definition) Tipos de elementos, listas de atributos, entidades y notaciones permitidas XML Schema Similar a un DTD, pero basado en XML y pudiendo especificar tipos de datos. XML – Definición de Estructura C Ricardo Borillo Domenech Enginiería Informática (Plan 2001) 2002/2003 C/ Principal nº1 C/ Secundaria nº2 Matrícula ordinária

37 XML – DTD C Ricardo Borillo Domenech Enginiería Informática (Plan 2001) 2002/2003 C/ Principal nº1 C/ Secundaria nº2 Matrícula ordinária

38 C Ricardo Borillo Domenech Enginiería Informática (Plan 2001) 2002/2003 C/ Principal nº1 C/ Secundaria nº2 Matrícula ordinária XML – XSD

39 Framework programable para procesar XML Dos APIs estándares: SAX (Simple API for XML) Procesamiento secuencial Eficiente (tiempo y memoria), pero difícil de manipular Implementamos los manejadores de eventos DOM (Document Object Model) Se carga el XML dentro de un único objeto y posteriormente se procesa el objeto No eficiente, pero sencill0 Extraemos la información del objeto XML – Analizador (parser)

40 XML – SAX & DOM SAXParserFactory SAXParser SAXReader DefaultHandler ContentHandlerMethods ErrorHandlerMethods DTDHandler EntityResolver Document Node Element


Descargar ppt "Germán Bordel (CD4 P1.6) Mikel Peñagarikano (CD4 P1.5)"

Presentaciones similares


Anuncios Google