La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.

Presentaciones similares


Presentación del tema: "Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores."— Transcripción de la presentación:

1 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 2 Java es un lenguaje interpretado Compilador de java (específico x plataforma) javac P1.java P1.javaP1.class Intérprete de java (específico x plataforma) java P1 (class) Salida del Prog.

3 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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 Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - Email: hthiemer @ cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores 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) { } }


Descargar ppt "Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) 698 8427 - cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores."

Presentaciones similares


Anuncios Google