1 / 26

2- InterNetworking con Java

2- InterNetworking con Java. ¿ Por qué JAVA ? En este curso: Los programas son más simples => se peude usar más tiempo en explicar la lógica de los programas que para explicar las instrucciones del lenguaje.

Download Presentation

2- InterNetworking con Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2- InterNetworking con Java • ¿ Por qué JAVA ? • En este curso: Los programas son más simples => se peude usar más tiempo en explicar la lógica de los programas que para explicar las instrucciones del lenguaje. • En general: Java nace cuando la internet ya está madura (1993-4) => nace “sabiendo” que existe TCP/IP y que la programación distribuida es importante, lo que se nota en el diseño. • Además de las típicas funcionalidades básicas de comunicación (comunicación por canales TCP y UDP) incorpora otras de alto nivel de abstracción: RMI, Applets, JDBL, URL • ¿ Siempre es mejor JAVA ? • No, Java es multiplataforma por lo tanto sólo puede hacer cosas que sean comúnes a todas las plataformas. • Con la estandarización de TCP/IP como red virtual para todos los equipos esto es cada vez menos importante. Aún así hay cosas: Nombres y ports sólo se pueden asociar en C ya que es exclusivo de UNIX.

  2. Java es un lenguaje interpretado Compilador de java (específico x plataforma) javac P1.java Salida del Prog. P1.java P1.class Intérprete de java (específico x plataforma) java P1 (class)

  3. Un primer programa en JAVA public class Hello { public static void main(String args[ ]) { System.out.println(“Hola Mundo“); } } • Todo programa es escrito como el método estático llamado main en una clase cualquiera • Este método se empieza a ejecutar cuando se invoca el intérprete de java para una clase dada • args es un arreglo de Strings que contiene los parámetros • con los que fué invocado el programa.

  4. Tipos primitivos de datos en JAVA • enteros: int, long, short, byte Const. 1, -1, 1024, 1L • reales: float, double Const. 1.0, -3.14159, 1.5e4, 1.0f • caracter: char Const. ‘a’, ‘X’, ‘@’ • lógico: boolean Const. true, false Constantes de String: “Hola“,“12 de Abril“

  5. Declaraciones int i; int i = 1; double pi = 3.14159; char c = ‘a’; boolean estamos_bien = true; Las declaraciones de variables pueden ir en cualquier parte del programa pero siempre antes de que la variable sea usada.Hay que tener cuidado con el rango de validez (scope) de la declaración

  6. Expresiones y asignación • Aritmeticas: suma + 20 * c / (mod % 3) • Relacionales: a > b, b >= c, c != 4, a == 0 • De String: “hola “+ nombre + “ hoy es “+ dia + “de”+mes • Casts: (int) pi (pi = 3.1) (int) (Math.random()*100)+1) • Otros: a == 1 ? a+1 : a-1 • Asignacion: a = 1; • Asignación como operador: a = b = c = d = 0; boolean cero = ( b = c - 10) == 0;

  7. Instrucciones de Control • Instrucción condicional: if (cond) instr; if(cond) instr; else instr; • Ciclos: while (cond) instr; • Ciclos: do instr; while (cond); • Ciclos for (instr1; i<10; instr2) instr; • Selección switch/case • Agrupación de instrucciones bajo un if, else, while, for, etc. se realiza con paréntesis crespo { }

  8. Programa Ejemplo public class MCD { //calculo del maximo comun divisor entre 15 y 24 public static void main(String args[ ]) { int x = 15, y = 24; while (x != y) { if (x < y) y = y - x; else x = x - y; } System.out.println(“el MCD entre 15 y 24 es “ + x); } }

  9. Programando Orientado al Objeto • Las clases son definiciones de tipos de datos nuevos • Un una instancia de una clase (dato) se llama objeto • Consisten en la declaración de un conjunto de datos y métodos que operan sobre estos datos (pueden modificar o los datos o sólo retornar valores). • Dentro de los métodos hay uno bien especial que se llama constructor. Tiene el mismo nombre de la clase y se llama cada vez que se quiere crear un objeto nuevo de esa clase. Clase variable x; x = new Clase(parametros); y = x.metodoConResultado(parametros); x.metodoSinResultados(parametros);

  10. La Clase String • Son parte del lenguaje (no hay que importarlos) • Se crean: String s = new String(“Hola Mundo”); pero esto se puede resumir con String s = “Hola Mundo”; u • Tamaño de un String: int i = s.length(); • k-esimo carácter: char c = s.charAt(k); • Subsecuencias: String sub = s.substring(k); String sub = s.substring(inicio, fin); • Búsqueda de subsecuencias: int i = s.indexOf(“hola”); • Comparacion: boolean iguales s1.equals(s2); int i = s1.compareTo(s2); 0 si s1==s2, >0 si s1>s2, <0 si s1<s2

  11. Búsqueda de Substrings String s = “llego y dijo hola”; int i = s.indexOf(“go”)´; i == 3 (parten de 0) Ej: Contar las apariciones de “hola” en un string s: public class Cuenta { public static void main(String args[]) { int i , apariciones = 0; while ((i = s.indexOf(“hola”)) !0 -1) { ++apariciones; s = s.substring(i+1); } System.out.println(“el string hola aparecio “+ apariciones+ “veces”); } }

  12. Clases definidas por usuario Partamos con un ejemplo; en el archivo Auto.java se tiene: public class Auto { public String nombre; public int construccion; public float rendimiento; } Podemos entonces escribir un programa que use esto: public class Programa { public static void main(String args[]) { Auto miAuto1 = new Auto(); // el constructor clase() es gratis! miAuto1.nombre = “Volkswagen”; //porque es public !!!! miAuto1.construccion = 1994; miAuto1.rendimiento = 9.65; System.out.println(“mi auto es un “+miAuto1.nombre+ “fue construido el “+miAuto1.construccion+ “y gasta “+rendimiento+”litros cada 100km”); } }

  13. Agregando métodos a la clase Auto public class Auto { String nombre; int construccion= 1990; float rend; public Auto() { nombre = “Yiguly”; rend = 15; //se crea con estos valores } public void cambiaConstrucción(int año) { construccion = año; } public Auto(String nombre; int construccion; float rend) { this.construccion = construccion; this.nombre = nombre; this.rend = rend //no hay ambigüedad! } public float redimientoEnKxL() { return 100/rend; } }

  14. Herencia public class AutoColeccion extends Auto { String comentarios; int valorColeccion; static cantidad = 0; // una sola variable para toda la clase // conocida por todos los objetos AutoColeccion() { //no se heredan !!!! super(); ++cantidad; cometarios = “nada por ahora”; valorColeccion = 0; } public void cambiaConstrucción(int año) { construccion = año; comentarios = “se cambio el valos de construccion”; } public static int cuantos() { //método estático !!! return cantidad; } }

  15. Resumen de Métodos • Los métodos dinámicos (sobre objetos) se invocan: variableObjeto.nombreMétodo(parametro1,..,parámetroN) Ej: miAuto.cambiaConstruccion(1999) • En el caso de los métodos estáticos: NombreClase.nombreMétodo(parámetro1,..,parámetroN) Ej: int i = AutoColeccion.cuantos() • En Java existe la clase Math cuya función más importante es proveer al leguage de los métodos matemáticos típicos: Math.sqr(x), Math.sin(x), Math.max(x,y), Math.pow(x,y) • El paso de parámetros es siempre por valor, salvo en el caso de objetos y arreglos, que es por referencia (se pasa una copia del puntero al objeto) • main es un método estático de una clase !!!!!

  16. Arreglos • Se pueden declarar como:int[] A; int A[]; Esto es la declaración del puntero al arreglo, no se especifica tamaño en la declaración; • Inicialización: A = new int[10]; int[] A = new int[10]; • Empiezan desde 0: for(int i=0; i < 10; ++i) A[i] = 0; • Se puede averiguar el largo: int largo = A.length; • length es un campo del objeto arreglo y no un método. No es necesario el método ya que el tamaño, como el contenido de un String no varían despuésde su creación.

  17. Argumentos de un Programa • Si se invoca al programa P1 de ka siguiente manera: java P1 estos son parametros entonces en el programa se tendrá args[0] = “estos”, args[1] = “son”, args[2] = “parametros”. • Se reciben como un arreglo de strings en la variable declarada como parámetro del programa String args[] public class Parametros { public static void main(String args[]) { for(int i=0; i < args.length; i++) System.out.pritnln(args[i]); } }

  18. Exceptions • Una Exeption es un evento que rompe la ejecución normal de un programa (debido a un error). Cuando ocurre un evento como este un objeto de la clase Exception es generado o “lanzado” (throw). • Existen varios tipos de clases derivadas Exception dependiendo de que fue lo que originó el evento: IOException, IndexOutOfBoundsException, UnknownHostException, etc. • Cuando esto sucede, el intérprete de JAVA busca un exception handler adecuado para esta exception, que ejecuta un pedazo de código (programado por el usuario) que debería reaccionar en forma adecuada a esta falla del programa. Esto se llama “atrapar una exception” (catch). • Cuando no se ha escrito ningún ningún handler que atrape esta exception, el programa se detiene (se cae). La razón para introducir exceptions es que la programación para reaccionar ante fallas se hace más fácil (no hay que preverlas todas).

  19. Ejemplo de Exceptions en I/O (1) • Muchas veces el compilador OBLIGA a programar el código de modo de atrapar exceptions cuando estas pueden suceder con cierta probabilidad. Las más frecuentes son las de IO. import java.io.*; //importa clases de la biblioteca IO public class ProgrmaÍO{ public static void main(String args[]) { BufferedReader in; PrintWriter out; String line; try { in = new BufferedReader(new FileReader(“Origen.txt”))}; catch (IOException e) { System.out.println(“error en apertura”); System.exit(1);} try { out = new PrintWriter( new FileWriter(“Destino.txt”))}; catch (IOException e) { System.out.println(“error en creacion”); System.exit(1);} try { while( (line = in.readLine()) != null) out.println(line); catch (IOException e) { System.out.println(“problemas”);} } }

  20. Ejemplo de Exceptions en I/O (2) • Se puede omitir poner tantos try-catch si no importa donde sucedió import java.io.*; //importa clases de la biblioteca IO public class ProgrmaÍO2{ public static void main(String args[]) { BufferedReader in; PrintWriter out; String line; try { in = new BufferedReader( new InputStreamReader(System.in)); out = new PrintWriter( new FileWriter(“Destino.txt”)); System.out.println(“ingrese linea”); while( (line = in.readLine()) != “”){ out.println(line); System.out.println(“ingrese linea”); } catch (Exception e) { System.out.println(“problemas”); } } }

  21. Ejemplo de Exceptions en I/O (3) • También se puede evitar tener que preocuparse de las exceptions siempre y cuando el método que la pordría generar se declare como que “lanza” una excepción: import java.io.*; //importa clases de la biblioteca IO public class ProgrmaÍO3{ public static void main(String args[]) throws IOException{ BufferedReader in; PrintWriter out; String line; in = new BufferedReader(new FileReader(“Origen.txt”)); out = new PrintWriter( new FileWriter(“Destino.txt”)); while( (line = in.readLine()) != null) out.println(line); } } • Esto implica que el programa se caerá si hay una excepción durante la generación del programa. En otros casos se puede declarar que uno o más métodos lanzan una IOException y el programa o método principal se preocupa de escribir el Exception handler.

  22. Ejemplo de Exceptions en I/O (3) • También se puede evitar tener que preocuparse de las exceptions siempre y cuando el método que la pordría generar se declare como que “lanza” una excepción: import java.io.*; //importa clases de la biblioteca IO public class ProgrmaÍO3{ public static void main(String args[]) throws IOException{ BufferedReader in; PrintWriter out; String line; in = new BufferedReader(new FileReader(“Origen.txt”)); out = new PrintWriter( new FileWriter(“Destino.txt”)); while( (line = in.readLine()) != null) out.println(line); } } • Esto implica que el programa se caerá si hay una excepción durante la generación del programa. En otros casos se puede declarar que uno o más métodos lanzan una IOException y el programa o método principal se preocupa de escribir el Exception handler.

  23. La Clase InetAddress import java.io.*; //importa clases de la biblioteca IO public class ProgrmaÍO3{ public static void main(String args[]) throws IOException{ BufferedReader in; PrintWriter out; String line; in = new BufferedReader(new FileReader(“Origen.txt”)); out = new PrintWriter( new FileWriter(“Destino.txt”)); while( (line = in.readLine()) != null) out.println(line); } }

  24. La Clase URL Un URL es un UNIFORM RESOURCE LOCATOR. Consiste en una dirección de un recurso que un servidor en la internet pone a disposición de los usuarios, como por ej. http://www.arminco.com • En un objeto URL existen dos componentes principales: El descriptor de protocolo (ej. http) y el nombre del recurso (ej. www.arminco.com). http significa Hyper Text Transfer protocol pero hay otros protocolos de transferencia de datos en la internet como: el File Transfer protocol (ftp), Gopher, File o News. • En java es posible abrir una direccion de URL leer el contenido como si fuera un archivo cualquiera. Para ello debemos crear un objeto URL, con el nombre del protocolo y la dirección del recurso que queremos recuperar.

  25. La Clase URL (2) Existen varios constructores de URL: • URL unRUL = new URL(“http://www.arminco.com/index.html”); • unURL = new URL(“http”;”www.arminco.com”,”index.html”); • inURL = new URL(“http”,”www.arminco.com”,80,”index.html”); • Al crear una variable URL se puede producir una excepcion del tipo MalformedURLException por eso se deben tomar las medidas necesarias (como por ej: usar un bloque try-catch) try { URL miURL = new URL(....); } catch(MalFormedURLException e) { // codigo para atrapar la exception } • Métodos que se pueden aplicar a un objeto de la clase URL: getProtocol(), getHost(), getPort(), getFile(), openConnection()

  26. La Clase URL (3) Si sabemos a priori que el contenido de un URL es texto podemos leerlo de la siguiente manera: import java.net.*; import java,io.*; public class Leer URL { public static void main(String args[]) { try { URL miURL = new URL(“http://www.dcc.uchile.cl”); URLConnection c = miURL.openConnection(); BufferedReader in = new BufferedReader ( new InputStreamReader( c.getInputStream())); String line; while ((line = in.readLine() != null) System.out.prinln(line); c.close(); catch(MalFormedURLException e) { } } }

More Related