Curso De Java - Lc

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Curso De Java - Lc as PDF for free.

More details

  • Words: 6,608
  • Pages: 140
JAVA Lenguaje de programación Relator : Jaime Tobar [email protected] Diapositivas basadas en la versión original de Mohamed Mohamed

Contenido • • • • • • • • • •

Introducción a Java El lenguaje Java Arreglos en Java Programación OO con Java Manejo de Errores Streams de Entrada/Salida Threads de Control Red Swing Acceso a Base de Datos

Introducción a Java • Origen del lenguaje – Desarrollado por SUN http://java.sun.com – Enfocado a los electrodomésticos ( FirstPerson )

• Características de Java – – – – –

Portabilidad ( medio compilado y medio interpretado ) Robusto ( manejo de excepciones ) Orientado a Objeto Seguro ( no hay punteros ) “Simple” ( lo más simple tomando en cuenta la OO )

Introducción a Java • Herramientas de desarrollo – JDK de SUN Microsystem

• Tipo de programas – Aplicaciones – Applet – Servlets – etc..

Introducción a Java • Comparación

Introducción a Java • Java Virtual Machine ( JVM ) – Compilación tradicional

Introducción a Java • Java Virtual Machine ( JVM ) – Compilación JVM

El lenguaje Java • Nuestro primer programa en Java • public class HolaMundo { • public static void main(String[] args) { • System.out.println("Hola Mundo!!!"); • System.out.print("....en java"); • System.out.println(" en el 2005"); • } • } – El archivo debe llamarse HolaMundo.java – Se compila con: javac HolaMundo.java – Se ejecuta con: java HolaMundo • ver: HolaMundo.java

El lenguaje Java • El compilador de JAVA necesita que todas las clases ejecutables contengan el método main, para poderlo distinguir de otros: • public static void main(String[] args)

Tipos de datos básicos • Tipo • • • • • • • • •

Descripción

Tamaño Clase

boolean Valor lógico 1 bit char Carácter 16 bit byte Entero muy pequeño 8 bit short Entero pequeño16 bit int Entero normal 32 bit long Entero grande 64 bit float Precisión simple 32 bit double Doble precisión 64 bit void Tipo vacío

Boolean Character

Integer Long Float Double

El lenguaje Java • Comentarios – // Aquí empieza un comentario – /* Soy un comentario de – de varias lineas */

• Identificadores ( nombres de variables ) – Java distingue entre minúsculas y MAYUSCULAS – el nombre de las variables comienza con una letra con un _ o con el signo $ – ejemplos: ➡ ➡ ➡

Contador _camino $dolar

El lenguaje Java • Operadores – – – – – – – –

Descripción Multiplicación Resto Suma Resta Incremento Decremento Menos unario

Símbolo * % + ++ --

Expresión 2*4

– NOTA: Hay diferencias entre ++j y

– ver: IncDec.java

Resultado 8 5%2 1 2+2 4 7-2 5 2++ 3 --2 1 -(2+4) -6

j++

El lenguaje Java • Separadores •Separador Descripción Contienen listas •() {} [] ; , .

de parámetros. También se utilizan para modificar la precedencia en una expresión, contener expresiones para control de flujo y realizar conversiones de tipo. Se utilizan para definir bloques de código. Se utiliza tanto para declarar arreglos como para referenciar valores dentro de los mismos. Separa sentencias. Separa identificadores consecutivos en la declaración de variables y en las listas de parámetros. Separa un nombre de propiedad o método de una variable de referencia. También separa nombre de paquete de los de un subpaquete o una clase.

El lenguaje Java • Palabras claves • • • • • • • • • •

abstract continue for new switch boolean default goto null synchronized break do if package this byte double implements private threadsafe byvalue else import protected throw case extends instanceof public transient catch false int return true char final interface short try class finally long static void const float native super while

El lenguaje Java • Expresiones – int i = 45; – double j = 1.5; – String nombre = “María”; – String nombre = null; – nombre = new String(“María”); – boolean flag = true; – Float f = new Float(1.0);

El lenguaje Java • Ejemplos: – String mensaje = “Hola ”+”Mundo”; – int i = 1; – int m = i++; // m = ? – int k = i; // k = ? – int j = --k; // j = ? – boolean b = false; – boolean v = !b; // v es true o false?

El lenguaje Java • Clase String – Esta clase almacena una cadena de caracteres. – Existen varios métodos que nos facilitan el trabajo. – String cadena = new String(“Hello World”);  

 

cadena.length() // devuelve el largo del String cadena.toLowerCase() // convierte el String a minúsculas cadena.toUpperCase() // a MAYUSCULAS cadena.trim() // elimina los espacios en blanco al comienzo y al final del String

El lenguaje Java • Control de flujo – if – if( expresión booleana ) • sentencia;

– if - else – if( expresión booleana ) • sentencia;

– else • sentencia;

El lenguaje Java – while – while ( expresión booleana ) • sentencia;

– do – while – do – sentencia; – while (expresión booleana) – for – for (inicialización; expresión booleana; paso) – sentencia;

El lenguaje Java – switch – switch (expresión) { – case valor1: sentencia; break; – case valor2: sentencia; break; – case valor3: sentencia; break; – // ... – default: sentencia; –}

El lenguaje Java • Ejemplos: – if( m == 1 ) { • m++; • flag = true; • } else { • m--; • flag = false; • }

– for( int i=0,k=1; i<10 && k < 50; i++,k +=2 ) { – sentencias; – }

El lenguaje Java ➲ Ejercicio: Haga un programa que recorra los 100 primeros números, los imprima en pantalla y diga a su lado si es impar o par [terminal] El numero 25 es impar

ver: Numeros.java

Arreglos • Un arreglo (array) es una manera de agrupar valores de un mismo tipo bajo un mismo nombre. • Existen dos formas de declarar arreglos: – char [] c; – char c [];

• Crear matrices, es sencillamente agregar corchetes. – String [][] s;

Arreglos • Ejemplos – String [] nombres = new String[3]; • nombres[0] = “María”; • nombres[1] = “José”; • nombres[2] = “Carmen”;

– o bien – String [] paises = { “Chile”;”Argentina”;”Francia” }; – if( nombres.length == paises.length ) – sentencia; // Se ejecuta?

Arreglos – archivo Arreglos.java – public class Arreglos { – – public static void main(String[] args) { • String[] paises = {"España","Holanda","Brasil"}; • System.out.println(paises[1]); • System.out.println(paises.length); – } – }

– Modificar el archivo para que imprima los nombres de todos los paises y su largo. – ver: Arreglos.java y Arreglos_mod.java

Interactuando con nuestro programa •Hay varias formas de entregarle información a nuestro programa, pero las más básicas que usaremos en el comienzo son a través de la línea de comando: •c:\java Aplicacion parametros

estos

son

•estos se recuperan dento del programa vía el arreglo args[], con args[0]=”estos” y asi sucesivamente.

Interactuando con nuestro programa La otra forma es que nuestro programa pregunte por ella: c :\ java Aplicacion Ingrese una linea(termina con enter) lo ingresado se recupera via un lector de teclado: importjava.io.*; public class ...... public static void main(String[ ]args) throws IO Exception{ BufferedReader input ; input = new BufferedReader(new InputStream Reader(System.in)); Donde System.in es el teclado e input la variable que nos permitira recoger lo que se escriba. String s = input.readLine();

Interactuando con nuestro programa • Esta última manera acarrea ciertas rigideces que se apreciarán en el ejemplo: • Se debe poner al principio del archivo .java: • import java.io.*;

• Se debe agregar la clausula throws IOException al main • public static void main (String args[])throws IOException

Ejercicios • Ejercicios – Inicializar un arreglo con los primeros 100 números e imprimirlo en pantalla (el arreglo). – Inicializar un arreglo con los primeros 100 números pares ( 0,2,4,6,..) e imprimir los primeros 10 números. – Recibir su nombre vía línea de comandos e imprimirlo en pantalla. – Que su programa pregunte por su nombre, lo lea del teclado y lo imprima en pantalla.

– ver: Arreglos100.java, ArreglosPar.java, leer_stdin.java y leer_args.java

Programación OO con Java • Que es la Orientación a Objetos? – Consiste en el concepto de encapsulamiento. – Yo sé que es lo que hace una clase, pero no sé de que manera lo hace. – En términos más sencillos, yo sé que el método ordenarArreglos(int [] arreglo), ordena un arreglo de enteros, pero no sé que técnica usa para esto (quickSort,bubbleSort,etc..).

Programación OO con Java • Qué son los Objetos? – Un objeto contiene en sí mismo la información y los métodos o funciones necesarios para manipular esa información, restringiéndose solo a la información mas relevante de la entidad real o virtual que se desea modelar.

Programación OO con Java • Abstracción

Programación OO con Java • Qué son las Clases? – Las clases son las matrices de las que luego se pueden crear múltiples objetos del mismo tipo. – La clase define las variables y los métodos comunes a los objetos de ese tipo, pero luego, cada objeto tendrá sus propios valores y compartirán las mismas funciones.

Programación OO con Java • Qué son los mensaje? – Los mensajes son simples llamadas a las funciones o métodos del objeto con el se quiere comunicar para decirle que haga cualquier cosa.

Programación OO con Java • Cómo crear un Objeto? – Primero hay que declarar el Objeto. • Date fecha; • String nombre; • Integer i;

– Después hay que inicializarlo. • fecha = new Date(2004,08,29); • nombre = new String(“María”); • i = new Integer(1024);

– En general se tiene: Clase variable = new Clase(Parametros constructor);

Programación OO con Java • Constructores – Un objeto se crea usando constructores. – public class Rectangulo { – float x1,y1,x2,y2; – public Rectangulo(float ex1, float ey1, float ex2, float ey2) { – x1 = ex1; – x2 = ex2; – y1 = ey1; – y2 = ey2; – } – }

Programación OO con Java • Ejercicio – Cree una clase Caja que posea – Alto – Ancho – Y un método para calcular su área

– Ver: Caja.java, Cajita.java y usa_caja.java

Programación OO con Java • Que es la herencia? – Permite crear una clase a través de una clase existente, y esta clase tendrá todas las variables y los métodos de su ”superclase”, y además se le podrán añadir otras variables y métodos propios.

Programación OO con Java • Existen superclases y subclases. • Las subclases heredan los métodos y variables de las superclases. • Las superclases se transforman en padres y abuelos de las subclases. • En Java la superclase más alta en el árbol jerárquico es la clase Object. • Todas las clases heredan los métodos de la clase Object.

Programación OO con Java • Para referirse a una variable de la clase superior se utiliza super.variable. • Para referirse a un método de las clases superiores se utiliza la sentencia super.metodo(). • Para referirse a una variable propia de la clase se utiliza la sentencia this.(varible|metodo()).

Programación OO con Java • Ejemplo: – Nuestra superclase es Integer – Integer implementa el método suma(). – Nuestra subclase será IntegerMensaje que extiende Integer. – IntegerMensaje debe entregar el mensaje “Estoy sumando” antes de efectuar la suma y enseguida sumar.

Programación OO con Java – Entonces el método de suma de IntegerMensaje es distinto que el método suma de Integer – public IntegerMensaje suma() { – System.out.println(“Estoy sumando”); – super.suma(); – }

– Vemos que aprovechamos que la suma se efectúa en la superclase y la reutilizamos para hacer el cálculo.

Programación OO con Java • Cómo es el constructor de un hijo? – public class RecV extends Rectangulo { – public String s; – public RecV(float ex1, float ey1, float ex2, float ey2, String cadena) { • super(ex1,ey1,ex2,ey2); • s = cadena; – } – }

Programación OO con Java •

Se deben seguir reglas: –

Los constructores NO se heredan, a diferencia de los métodos.



Toda clase debe tener un constructor. Si no esta declarado explícitamente, por defecto tiene el constructor con 0-parámetros.



Si una clase tiene definidos constructores, esos son los únicos que tiene, específicamente deja de existir el constructor con 0-argumentos.

Programación OO con Java •

Se deben seguir reglas: – El cuerpo de un constructor debe llamar una vez al constructor de la clase padre, que debe preceder a cualquier otra acción en el cuerpo del constructor. Si el cuerpo de un constructor no comienza con una sentencia llamando explícitamente al constructor de la clase padre, entonces la sentencia – –

super() se asume argumentos).

(i.e.

el

constructor

; con

0-

Programación OO con Java • Ejercicio – Cree una clase hijo, Cajita que incluya un nuevo parámetro: profundidad y un nuevo método: volumen

– Ver: Cajita.java y usa_caja.java

Programación OO con Java • Sobre carga de constructores – public Rectangulo() { – x1 = 1; – x2 = 2; – y1 = 1; – y2 = 2; – } – public Rectangulo(float x1,float y1) { – this.x1 = x1; – x2 = 2; – this.y1 = y1; – y2 = 2; – }

Programación OO con Java • Una clase implementa métodos – public float calcularArea() { – return (x2-x1) * (y2-y1); –}

• Un método puede ser sobrecargado – public float calcularArea(int modificador) { – return (x2-x1) * (y2-y1) * modificador; –}

Programación OO con Java • Paquete (Package) – Los paquetes son grupos relacionados de clases e interfaces y proporcionan un mecanismo conveniente para manejar un gran juego de clases e interfaces y evitar los conflictos de nombres. Además de los paquetes de Java puede crear sus propios paquetes y poner en ellos definiciones de clases y de interfaces utilizando la sentencia package.

Programación OO con Java • El paquete de lenguaje Java, también conocido como java.lang, contiene las clases que son el corazón del lenguaje Java. • Para utilizar un paquete, se utiliza la sentencia import nombrePackage; • Esta sentencia debe estar al comienzo del archivo.

Programación OO con Java • Control de accesos a atributos y metodos – public • Cualquier clase puede acceder a las propiedades y métodos públicos.

– protected • Sólo las clases heredades y aquellas situadas en el mismo paquete pueden acceder a las propiedades y métodos protegidos.

– private • Las variables y métodos privados sólo pueden ser accedidos desde dentro de la clase.

Programación OO con Java • private protected – Sólo las clases heredades pueden acceder a las propiedades y métodos protegidos.

Programación OO con Java • Clases Public, Abstract, y Final – Public: • El modificador public declara que la clase puede ser utilizada por objetos que estén fuera del paquete actual. Por defecto, una clase sólo puede ser utilizada por otras clases del mismo paquete en el que están declaradas.

– Abstract: • El modificador abstract declara que la clase es una clase abstracta. Una clase abstracta podría contener métodos abstractos (métodos sin implementación). Una clase abstracta está diseñada para ser una superclase.

Programación OO con Java – Final: –Utilizando el modificador final se puede declarar que una clase es final, que no puede tener subclases. Existen (al menos) dos razones por las que se podría querer hacer esto: – razones de seguridad. – razones de diseño.

Programación OO con Java • Implementación de clases abstractas – abstract class Geometria{ • El cuerpo de la clase • Variables y métodos, incluyendo tipo de retorno;

– }

• Implementación de subclases – class Circulo extends Geometria { • El cuerpo de la clase • implementación de métodos superiores ( pisarlas ) • implementación de otros métodos

– }

Programación OO con Java • Ejercicios: – Implementar la Clase Geometria ( abstracta ) – La clase debe tener los siguientes métodos: • calculaArea(); • calculaPerimetro();

– Implementar las clases Rectangulo,Circulo y Triangulo que extienden la clase Geometria. – Haga un programa que reciba como argumentos el tipo de la geometría y las dimensiones. – ej: java calculo R 10 5 •

resultado: Rectángulo, área = 50 y perímetro = 30

• ver: dir Abstractas

Programación OO con Java • Interfaz – Una interfaz es una colección de definiciones de métodos (sin implementaciones) y de valores constantes. – Una clase puede implementar más de una interfaz. – Las interfaces son lo más parecido a la herencia múltiple ( pero no lo es ).

Programación OO con Java • Ejemplo –

public class Auto {

• String modelo,color; – public void recorrido() { » System.out.println(“SantiagoValparaiso”); –} • }



interface Velocidad {

• public float velocidadActual(); • }

Programación OO con Java •

interface Aceleracion { – public float aceleracionActual(); – } –

public class AutoMovil extends Auto implements Velocidad,Aceleracion { • public float velocidadActual() { – System.out.println(“Velocidad = 100”); •

}

– public float aceleracionActual() { » System.out.println(“Aceleración = 12”); •



}

}

– ver:Prueba.java,ChaoInterface.java,HelloImpInter.java y HelloInterface.java

Programación OO con Java • Clases importantes en Java – Clase Object • • • •

boolean o.equals( Object ) Object o.clone() Class o.getClass() String o.toString()

– Clase Character • boolean Character.isDigit( char ) • boolean Character.isLetter( char ) • boolean Character.isSpace( char )

Programación OO con Java – Clase String • • • •

int cad.length() char cad.charAt( int) boolean cad.equals( Object ) boolean cad.equalsIgnoreCase( Object )

– Clase StringBuffer • StringBuffer sb1 = new StringBuffer(4); • sb1=”Hola”; • StringBuffer sb2 = new StringBuffer(“Toma sentado.”); • sb2.insert(6,”café ”); • System.out.println(sb2.toString()); • Resultado: Toma café sentado.

Programación OO con Java – Clase StringTokenizer • Permite dividir un string en pedazos(tokens). • Ejemplo:

– StringTokenizer st = new StringTokenizer("es una prueba",“ “ ); – while (st.hasMoreTokens()) { – println(st.nextToken()); – } • Resultado:

– es » una » prueba

Programación OO con Java – Ejercicio: – Cree un programa que: – - Primero lea el String que separa las palabras o “tokens” – - Luego lea esas palabras y las imprima en pantalla junto con su largo. – - Y termine su ejecución al ingresar el usuario “*”.

– ver: Tokens.java

Programación OO con Java – Clase Random – Se utiliza para generar secuencias aleatorias. • Random ran = new Random(); – ran.nextInt(int n); » Retorna un número aleatoria desde cero hasta n

– Clase Date – Clase Properties – Clase Runtime • Permite ejecutar comandos en procesos separados • Ejemplo – Process p = Runtime.getRuntime().exec("xterm"); – ver: comando.java

Programación OO con Java – Clase Math – Es una clase sin ningún constructor, y todos sus métodos son estáticos • int Math.abs( int ) • long Math.abs( long ) • float Math.abs( float ) • double Math.abs( double ) • double Math.random() • double Math.PI

Manejo de Errores • Excepciones –Las excepciones son la manera que ofrece Java de manejar los errores en tiempo de ejecución. Muchos lenguajes imperativos, cuando tenían un error de este clase lo que hacían era detener la ejecución del programa. Las excepciones nos permiten escribir código que nos permita manejar ese error y continuar (si lo estimamos conveniente) con la ejecución del programa.

Manejo de Errores • try...catch...finally – try {} • Con el bloque try marcamos en que parte del código esperamos que se genere un error.

– catch{} • Con catch atrapamos el error y enviamos algún mensaje si es necesario.

– finally • El código en este bloque se ejecuta siempre, se produzca o no la excepción.

Manejo de Errores – Un bloque try puede tener asignado más de un bloque catch – Clase Exception • String e.getMessage() – Devuelve el mensaje detallado si existe o null en caso contrario.

• void e.printStackTrace() – Escribe por la salida de error estándar una lista que nos permitirá localizar donde se generó el error. Es muy útil para depurar, pero no es conveniente que lo usuarios finales vean estas cosas.

Manejo de Errores • Ejercicio – Construya su propia excepción que notifique en pantalla que fue creada – Haga un programa que cree esa excepción – Modifique su excepción y ahora implemente el constructor que reciba el mensaje – Use el programa para ver los errores que produce – Ahora encapsule su código con try y catch

• ver: Hello.java y FileIsCorruptedException.java

Streams de Entrada/Salida • Los Canales de I/O Estándar – Entrada estandard: referenciado por System.in •utilizado para la entrada del programa, típicamente lee la entrada introducida por el usuario.

– Salida estandard: referenciado por System.out •utilizado para la salida del programa, típicamente muestra información al usuario.

– Error estandard: referenciado por System.err •utilizado para mostrar mensajes de error al usuario.

Streams de Entrada/Salida • I/O: Leer y Escribir –Frecuentemente los programas necesitan traer información desde una fuente externa o enviar información a un fuente externa. La información puede estar en cualquier parte, en un archivo, en disco, en algún lugar de la red, en memoria o en otro programa. También puede ser de cualquier tipo: objetos, caracteres, imágenes o sonidos.

Streams de Entrada/Salida • En este capítulo solamente analizaremos el caso de los streams de archivos. • Clase File – En esta clase se define un archivo directorio. – Ejemplo: • File archivo = new File(“archivo.txt”); • File directorio = new File(“directorio”);

o un

Streams de Entrada/Salida • import java.io.*; – public class Copiar { – public static void main(String[] args) throws IOException { – File inputFile = new File("entrada.txt"); – File outputFile = new File("salida.txt"); – FileReader in = new FileReader(inputFile); – FileWriter out = new FileWriter(outputFile); – int c; – while ((c = in.read()) != -1) – out.write(c); – in.close(); – out.close(); – } – }

Streams de Entrada/Salida • PipedWriter y PipedReader. • SequenceInputStream –

Crea un sólo stream de entrada desde varias fuentes de entrada ( se utiliza para concatenar ).

• FilterInputStream y FilterOutputStream.

Streams de Entrada/Salida • Ejercicio – Escribir un programa que lea los contenidos de un archivo e imprima en la salida estos contenidos en MAYUSCULAS. – Hint: • Utilice para la lectura:

– –

BufferedReader input = new BufferedReader( new FileReader( archivo ) ); PrintWriter output = new PrintWriter(new FileWriter("copia.txt"));



ver: LeerArchivo.java y ManipularArchivo.java

Streams de Entrada/Salida • Contructor: • File(File parent, String child) • Creates a new File instance from a parent abstract pathname and a child pathname string. • File(String pathname) • Creates a new File instance by converting the given pathname string into an abstract pathname. • File(String parent, String child) • Creates a new File instance from a parent pathname string and a child

Streams de Entrada/Salida • getName() • Returns the name of the file or directory denoted by this abstract pathname. • getParent() • Returns the pathname string of this abstract pathname's parent, or null if this pathname does not name a parent directory. • isDirectory() • Tests whether the file denoted by this abstract pathname is a directory. • length() • Returns the length of the file denoted by this abstract pathname. • list(FilenameFilter filter) • Returns an array of strings naming the files and directories in the directory denoted by this abstract pathname that satisfy the specified filter. • listFiles(FileFilter filter) • Returns an array of abstract pathnames denoting the files and directories in the directory denoted by this abstract pathname that satisfy the specified filter.

Streams de Entrada/Salida • Ejercicio – Haga un programa que reciba como parámetro el nombre de un directorio. – Este programa debe imprimir la lista de los directorio y archivos que los componen. – Su programa debe desplegar el tamaño de los archivos. – Modifique su programa para que imprima la lista de los sub directorios. – ver: readdir.java

Threads de Control • Programación secuencial – Cada línea del programa se ejecuta en el mismo orden en el cual fue invocada.

• Programación paralela – Una parte del programa puede invocar a uno o más proceso que se ejecute en forma paralela. – Generalmente se utilizan en una arquitectura multi procesadores. – Los S.O. modernos implementan multi-procesos sin la necesidad de multi procesadores.

Threads de Control • Java provee un mecanismo de Threads, que permite ejecutar varios procesos en forma paralela. • La manera de usar procesos paralelos es extendiendo la clase Thread e implementar el método run(); • Para la invocación se utiliza el método start();

Threads de Control • Ejemplo – public class DosThreads {





public static void main(String[] args){ – new ThreadsSimple("Santiago").start(); » new ThreadsSimple("Arica").start(); – }

}

– Donde la clase ThreadsSimple implementa un proceso en paralelo.

Threads de Control • public class ThreadsSimple extends Thread { – public ThreadsSimple(String str){ • super(str); • } • public void run() { – for (inti = 0;i< 10;i++) { » System.out.println(i + " " + getName()); » try { » sleep((int) (Math.random() * 1000)); » } catch (InterruptedException e) {} – } – System.out.println("HECHO! " + getName()); • } – } •

ver: ThreadsImpPack.java y ThreadsSimple.java

Red • Trabajo en Red •

El entorno Java es altamente considerado en parte por su capacidad para escribir programas que utilizan e interactúan con los recursos de Internet y la World Wide Web.

Red • Para transmisión de datos por Red, se utiliza uno de dos protocolos: – TCP: • TCP es un protocolo basado en conexión que proporciona un flujo fiable de datos entre dos computadores.

– UDP: • UDP es un protocolo que envía paquetes de datos independientes, desde un computador a otro sin garantías sobre su llegada.

Red • Para establecer una conexión de se debe especificar el protocolo y el puerto.

Red • URL – URL es un acrónimo que viene de Uniform Resource Locator y es una referencia (una dirección) a un recurso de Internet. – http://java.sun.com/

• Clase URL – La clase URL proporciona varios métodos que permiten preguntar a los objetos URL.

Red • Crear un Objeto URL – URL linuxCenter = new URL("http://ww.linuxcenter.cl"); – URL(URL URLbase, String URLrelativa) •URL linuxProductos = new URL (”linuxCenter,”productos.html”)

➡Existen más constructores que pueden ser vistos en la API de JAVA.

Red • Excepciones en los constructores de URLs – try { – URL myURL = new URL(. . .) – } catch (MalformedURLException e) { – . . . – // Aquí va el código del manejador de excepciones – . . . –}

Red – getProtocol() • Devuelve el componente identificador de protocolo de la URL.

– getHost() • Devuelve el componente nombre del host de la URL.

– getPort() • Devuelve el componente número del puerto de la URL. Este método devuelve un entero que es el número de puerto. Si el puerto no está selccionado, devuelve -1.

– getFile() • Devuelve el componente nombre de fichero de la URL.

Red – getRef() • Obtiene el componente referencia de la URL.

–Ejemplo: – import java.net.*; – class ParseURL { –

public static void main(String[] args) {



URL aURL = null;



try {



aURL = new URL("http://java.sun.com:80/tutorial/intro.html#DOWNLOADING");



System.out.println("protocol = " + aURL.getProtocol());



System.out.println("host = " + aURL.getHost());



System.out.println("filename = " + aURL.getFile());



System.out.println("port = " + aURL.getPort());



System.out.println("ref = " + aURL.getRef());



} catch (MalformedURLException e) {



System.out.println("MalformedURLException: " + e);

– –

} }

Red – Resultado del ejemplo: • • • • •

protocol = http host = java.sun.com filename = /tutorial/intro.html port = 80 ref = DOWNLOADING

Red • Leer desde una URL –

import java.net.*;



import java.io.*;



class OpenStreamTest {



public static void main(String[] args) {



try {



URL yahoo = new URL("http://www.yahoo.com/");



DataInputStream dis = new DataInputStream(yahoo.openStream());



String inputLine;



while ((inputLine = dis.readLine()) != null) {



System.out.println(inputLine);



}



dis.close();



} catch (MalformedURLException me) {



System.out.println("MalformedURLException: " + me);



} catch (IOException ioe) {



System.out.println("IOException: " + ioe);

– –

} }

Red • Resultado •





<script language=javascript>



var now=new Date,t1=0,t2=0,t3=0,t4=0,t5=0,t6=0,hp=0,cc='',ylp='';t1=now.getTime();







Yahoo!



<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l r (cz 1 lz 1 nz 1 oz 1 vz 1) gen true for "http://www.yahoo.com" r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l r (n 0 s 0 v 0 l 0) gen true for "http://www.yahoo.com" r (n 0 s 0 v 0 l 0))'>







<script language=javascript><script language=javascript>



var b,d,l='',n='0',r,s,y;



.



.



<script language=javascript>d.sf1.p.focus();



<script language=javascript>



now=new Date;



t4=now.getTime();









Red • La Clase URL me permite interactuar a nivel de la WEB. • La Clase Socket me permite interactuar a nivel de cualquier aplicación. • Java nos provee de herramientas para trabajar con la internet en una libreria:

–java.net.*

Red

Hola Hola Chao Chao

Red •Usando la clase de java ServerSocket y threads, se puede crear un servidor que atienda simultáneamente a más de un cliente. •Un ServerSocket espera un pedido por medio de la red, aceptando ese pedido y ejecutando lo que el programador desee, llegando incluso a devolver un resultado al cliente.

Red •El ServerSocket pone nuestra disposición métodos que permiten capturar la llegada del Socket cliente. • •

Red • Ejemplo: Sockets •

Cree un programa que se conecte al servidor que tiene corriendo el profesor usando la IP que le dirá.

• ver: EchoServer.java y EchoClient.java

Swing/JFC • JFC es la abreviatura de Java Foundation Classes, que comprende un grupo de características para ayudar a construir interfaces gráficos de usuario (GUIs). • Los componentes Swing – Incluye todo desde botones hasta splitpanes y tablas.

Swing/JFC • Soporte de Conectable

Aspecto

y

Comportamiento

– Le ofrece a cualquier componente Swing una amplia selección de aspectos y comportamientos. Por ejemplo, el mismo programa puede usar el Aspecto y Comportamiento Java o el Aspecto y Comportamiento Windows.

Swing/JFC • API de Accesibilidad – Permite tecnologías asistivas como lectores de pantalla y display Braille para obtener información desde la interfaz de usuario.

• Java 2D API – Permite a los desarrolladores incorporar fácilmente gráficos 2D de alta calidad, texto, e imágenes en aplicaciones y applets Java.

Swing/JFC • Soporte de Drag and Drop – Proporciona la habilidad de arrastrar y soltar entre aplicaciones Java y aplicaciones nativas.

• Para utilizar JFC se importan las bibliotecas swing. – Import javax.swing.*;

Swing/JFC

• Se puede simular las interfaces gráficas en Java como un árbol – La raíz de este árbol están las clases contenedoras, son tres : • JFrame. • JDialog. • JApplet.

Swing/JFC – El tallo de este árbol, lo componen las clases llamadas contenedoras intermedio, como: • JPanel. • JScrollPane. • JTabbedPane.

Swing/JFC – Las hojas del árbol están compuestas por los componentes atómicos: • • • • • •

JButton. JLabel. JComboBox. JTextField. JTable. ....

Swing/JFC • Para crear un GUI, se deben cumplir los siguientes pasos: – Crear un Contenedor. – Asignar un contenedor intermedio a él. – Asignar uno o varios componentes atómicos al contenedor intermedio.

Swing/JFC • Ejemplo: – • • • • • • • • • • • •

import javax.swing.*; public class VentanaSwing extends JFrame { public VentanaSwing(){ super("Primera Ventana"); setLocation(100,100); setSize(200,100); show(); } public static void main(String[] arg) { new VentanaSwing(); System.out.println("He creado la ventana"); } }

Swing/JFC • Una aplicación que utiliza Swing, indirectamente está utilizando Threads. • Una aplicación gráfica siempre debe estar a la espera de algún evento, apretar una tecla y/o mover el mouse (también presionarlo). • Existen procesos que están permanentemente atentos a la espera de estos eventos.

Swing/JFC • Estos escuchadores de eventos funcionan en paralelo con la aplicación swing. • Por lo tanto la manera más seguro de ejecutar una aplicación swing es declarándola como un Thread.

Swing/JFC • Forma segura de correr una aplicación swing – public static void main(String[] args) { – javax.swing.SwingUtilities.invokeLater(new Runnable() { – public void run() { – // Invocar la aplicación – } – }); – }

Swing/JFC • Crear un botón – JButton button = new JButton("Soy un boton"); – button.setMnemonic(KeyEvent.VK_B); – button.addActionListener(new ActionListener() – {

• public void actionPerformed(ActionEvent e) • {

– numClicks++; – label.setText(labelPrefix + numClicks); • } – });

Swing/JFC • Manejo de eventos – ActionListener • El usuario pulsa un botón, presiona Return mientras teclea en un campo de texto, o elige un ítem de menú.

– WindowListener • El usuario elige un frame (ventana principal).

– MouseListener • El usuario pulsa un botón del ratón mientras el cursor está sobre un componente.

– MouseMotionListener • El usuario mueve el cursor sobre un componente.

Swing/JFC – ComponentListener – El componente se hace visible.

– FocusListener • El componente obtiene obtiene el foco del teclado.

– ListSelectionListener • Cambia la tabla o la selección de una lista.

• Para manejar los eventos es necesario importar las bibliotecas de java.awt.*;

Swing/JFC • Crear una etiqueta – JLabel label = new Jlabel(“Una etiqueta");

• Crear TextField – JTextField texto = new JtextField("Texto”); – texto.setToolTipText("Escriba un texto");

• Crear ComboBox – JComboBox comboBox = new JcomboBox(array); – comboBox.setSelectedIndex(2);

Swing/JFC • Ejemplo JFrame JPane

JMenu JTextField

JButton

JLabel

JComboB ox

Swing/JFC • Ejercitar swing con los componentes presentados usando la informacion disponible en la API de JAVA.

– ver: Swing*.java

Acceso a Base de Datos • JDBC fue diseñado para mantener sencillas las cosas sencillas. • JDBC nos permite hacer una conexión hacia una Base de datos. • Podemos realizar cualquier tipo de consultas, modificación y creación de nuevas tablas.

Acceso a Base de Datos • Los pasos necesarios: – Cargar el driver ( el driver se obtiene del proveedor de la BD ). – Establecer la conexión. – Crear sentencias. – Ejecutar las sentencias.

Acceso a Base de Datos • •

Pero que hacer con el driver? Como lo uso? La mejor respuesta disponible es esta: – ‣





"Once you have un-archived the distribution archive, you can install the driver in one of three ways: Either copy the "com" and "org" subdirectories and all of their contents to anywhere you like, and put the directory holding the "com" and "org" subdirectories in your classpath, or put mysql-connector-java-[version]-bin.jar in your classpath, either by adding the FULL path to it to your CLASSPATH environment variable, or by copying the .jar file to $JAVA_HOME/jre/lib/ext."

Acceso a Base de Datos • Pero hay una opción más sencilla en Windows: • Descomprimir el .zip, y mover el .java a ese directorio.

Acceso a Base de Datos • Cargar el driver – En nuestro caso usaremos la BD MySql, el driver se puede obtener desde : http://www.mysql.org – La carga del driver consiste en esta linea: – Class.forName("com.mysql.jdbc.Driver").newInstance();

Acceso a Base de Datos • La línea anterior es solamente válida para MySql. • Establecer una conexión – String url = ”jdbc:mysql://localhost” – Connection con = DriverManager.getConnection(url,"login","pass");

Acceso a Base de Datos • Crear sentencias – Un objeto Statement es el que envía nuestras sentencias SQL al controlador de la base de datos. – Simplemente creamos un objeto Statement y lo ejecutamos, suministrando el método SQL apropiado con la sentencia SQL que queremos enviar.

Acceso a Base de Datos – Para una sentencia SELECT, el método a ejecutar es executeQuery. – Para sentencias que crean o modifican tablas, el método a utilizar es executeUpdate. – Statement stmt = con.createStatement(); – Donde con es la conexión establecida anteriormente.

Acceso a Base de Datos • Ejecutar sentencias – En este momento stmt existe, pero no tiene ninguna sentencia SQL que pasarle al controlador de la base de datos. – stmt.executeQuery(“SELECT * FROM tabla”); – stmt.executeUpdate(“INSERT INTO tabla VALUE .....”);

Acceso a Base de Datos • Recuperar valores desde una tabla – JDBC devuelve los resultados en un objeto ResultSet. – ResultSet rs = stmt.executeQuery("SELECT * FROM tabla");

– La variable rs, que es un ejemplar de ResultSet, contiene las filas de tabla.

Acceso a Base de Datos – Para recorrer todas las filas existentes en rs, utilizamos el método next(). – while( rs.next() ) { • // código •} – Para recuperar una columna, se puede utilizar tanto el nombre de la columna como su posición. • rs.getString(“nombre”); – rs.getString(1);

Acceso a Base de Datos •



Las sentencias que podemos ejecutar pueden ser tan complejas como nos sea posible. La labor de los métodos getString, getFloat, etc.., es tranformar los valores de la base de datos a valores de JAVA.

Acceso a Base de Datos • Ejercicios – Descargue el driver de mysql de www.mysql.org – Descomprimalo – Haga un programa que se conecte a la base de datos triskelion que esta corriendo en el computador del profesor. – Use el login alumno y el password java. – Haga una consulta sencilla, usando el esquema que se le entrego al inicio de la clase. – Imprima el resultado en la pantalla. – Ejecute usando ‣ java -cp $CLASSPATH:mysql-...-.jar nombre_prog

Acceso a Base de Datos • ResultSetMetaData – Como su nombre lo indica, nos da informaci’on sobre los datos. – El ResultSet no guarda información como los nombres de las columnas, los tipos SQL de los datos o la cantidad de columnas. •ResultSetMetaData rsmd = rs.getMetaData();

– donde rs es nuestro objeto ResultSet. – Existen otros métodos disponibles en la API.

Acceso a Base de Datos • Ejercicios – Haga un programa que se conecte a la base de datos triskelion que esta corriendo en el computador del profesor. – Use el login alumno y el password java. – Revise una tabla completa, usando el esquema que se le entrego al inicio de la clase. – Guarde la tabla, con los nombres de las columnas en un archivo csv en su computador. – Ejecute usando ‣ java -cp $CLASSPATH:mysql-...-.jar nombre_prog

JAR • El formato de archivos JAR permite empaquetar varios archivos en un sólo archivo. Típicamente un archivo JAR contendrá los archivos de clases y los recursos auxiliares asociados con los applets y aplicaciones. Estos recursos auxiliares podrían incluir, por ejemplo, archivos de imagen y sonido que sean utilizados por una aplicacion.

JAR • El formato de archivos JAR proporciona muchos beneficios: – Seguridad: Puede firmar digitalmente el contenido de un archivo JAR. Los usuarios que reconozcan su firma pueden permitir a su software privilegios de seguridad que de otro modo no tendría.

JAR – Disminuir el tiempo de descarga: Si sus applets están empaquetados en un archivo JAR, los archivos de clases y los recursos asociados pueden ser descargados por el navegador en una sola transacción HTTP sin necesidad de abrir una nueva conexión para cada fichero.

JAR – Compresión: El formato JAR permite comprimir los archivos para ahorrar espacio. – Portabilidad: El mecanismos para manejar los ficheros JAR son una parte estándar del corazón del API de la plataforma Java.

JAR – Empaquetado sellado : Los paquetes almacenados en archivos JAR pueden ser sellados opcionalmente para que el paquete puede reforzar su consistencia. El sellado de un paquete dentro de un archivo JAR significa que todas las clases definidas en ese paquete deben encontrarse dentro del mismo archivo JAR.

JAR – Empaquetado versionado : Un archivo JAR puede contener datos sobre los archivos que contiene, como información sobre el vendedor o la versión.

JAR • Uso: – Para crear un fichero JAR • jar cf jar-file input-file(s) – Para ver el contenido de un fichero JAR • jar tf jar-file – Para extraer el contenido de un fichero JAR • jar xf jar-file – Para ejecutar una aplicación empaquetada en un fichero JAR • java -cp app.jar MainClass • java -jar app.jar

JAR • Firmar archivos JAR – Se utiliza la firma de archivos JAR para autentificar al proveedor del software. – Si una aplicación necesita ejecutar acciones sensibles al sistema, la plataforma impide dichas acciones a menos que el archivos JAR esté firmado y verificado por una fuente confiable.

Fin Curso dictado por Jaime Tobar E. [email protected]

Related Documents