1 / 41

Java

Java. Java (1995) fue desarrollado en Sun Microsystems por James Gosling, Bill Joy y Guy Steele Influenciado por C++ Soporta clases, encapsulación, herencia simple, polimorfismo, interfaces, garbage collection. El Modelo Java.

menora
Télécharger la présentation

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. Java • Java (1995) fue desarrollado enSun Microsystems por James Gosling, Bill Joy y Guy Steele • Influenciado por C++ • Soporta clases, encapsulación, herencia simple, polimorfismo, interfaces, garbage collection

  2. El Modelo Java • Al compilar un programa Java, se genera un código de máquina intermedio definido por Sun, que recibe el nombre de bytecode

  3. El Modelo Java • El códigobytecodees portable entre diferentesplataformas

  4. Tipos de Archivos Java • Todo archivo define una clase o una interfaz • Clase: • Define e implementa un tipo de objeto • Variables (representación) • Procedimientos (funciones) • estáticos (especial: main) • y dinámicos (se ejecutan sobre un objeto) • Interfaz • Define la firma de un procedimiento

  5. Un archivo básico para hacer un programa que corra public class MiClase{ static public void main(String[] args) { Aquivan lasinstruccionesque se ejecutaráncuando se “eche a correr” la clase } } • El programadebe ser escrito en un archivollamadoMiClase.java (MiClasees el nombre de la “clase” y lo inventa el programador, porconvenciónempieza con mayúscula • Al compilarse se generará el archivoMiClase.class, quees el que se ejecuta • Si se cambia algo en el programa hay quecompilarlo de nuevoparaque se refleje el cambio en el archivo class

  6. Ejemplo 1 import java.util.*; //parausa Scanner public class MiClase { static public void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print(″Distancia (metros) ? ″); double d = s.nextDouble(); System.out.print(″Tiempo (segundos) ? ″); double t = s.nextDouble(); double v = (d/1000)/(t/3600); System.out.println(″Velocidad = ″+v+″ km/h″); } }

  7. Ejemplo 2 import java.util.*; //parausa Scanner public class ChequeoEdad { static public void main(String[] args) { Scanner s = new Scanner(System.in); System.out.print(″Cualestunombre ? ″); String nomb = s.nectLine(); System.out.print(″Quéañonasciste ? ″); int an = s.nextInt(); intmls = System.currentTimeMillis(); int ah = (int)(mls/1000/3600/24/365.25 +1970); System.out.print(nomb+″ tienecerca de “); System.out.print((an-ah)+” años “); } }

  8. Tipos, Valores y Variables • En Java existen 2 categorías de tipos: • Primitivos: boolean, char, byte, short, int, long, float, double • Referencias: objetos, interfaces, arreglos • Una variable es un espacio de memoria que puede almacenar:

  9. Tipos de DatosPrimitivos

  10. Constantes • Una vez inicializadas, no pueden ser modificadas • Se utiliza la palabra reservada final para definir una constante • Típicamente las constantes se definen como static, para no instanciarlas con cada objeto • Ejemplo class Circulo { static final double PI = 3.1416; }

  11. Conversión de Tipos • Java es fuertemente tipeado • Chequea compatibilidad de tipos en tiempo de compilación • Permite hacer cast entre tipos • Provee operadores para determinar el tipo de un objeto en tiempo de ejecución

  12. Conversion Implícita • Cualquier valor numérico puede ser asignado a una variable numérica que seoporte un rango de valores más amplio byte short int long float double más chico más grande • Ejemplo int i = 1000; double d = i;

  13. Cast Explícito • Cuando una conversión implícita no es posible, un cast explicita la conversión a realizar • Sólo se permiten casts que tienen sentido

  14. Cast de TiposPrimitivos • Puede perderse precisión double d = 20.5; long l = (long) d; System.out.println(l); • Pueden perderse dígitos long l = 1000000; short s; s = (short) l; System.out.println(s); 20 16960

  15. Bloque • Cualquier número de sentencias agrupadas entre un par de llaves { } • Puede ser usado en cualquier lugar donde se acepta una sentencia simple • El bloque define el ámbito (scope) de las variables • El bloque provee contornos para el control de flujo del procesamiento

  16. Ambito de Variables public class MiClase{ int a; static int b; public void miMetodo( ) { int c; if (condicion){ { int d; . . . } } d fuera de ámbito } c fuera de ámbito } a y b fuera de ámbito

  17. MétodosEstáticos • Se identifican con el selector static • Devuelven o no un resultado de un cierto tipo • Reciben un número determinado de parámetros de tipo determinado • Métodos de igual nombre pero con distinto número o tipo de parámetros son métodos distintos !

  18. Métodos en la mismaclase public class MiClase{ ststic public intsuma(int x, int y ) { return x+y; } static public intsuma(int x, int y, int z) { return x+y+z } static public void main(String[] args) { System.out.println(suma(5,4)+” “+suma(2,3,4)); } }

  19. Métodos en otraclase public class Sumas { //En archivo Sumas.java public intsuma(int x, int y ) { return x+y; } static public intsuma(int x, int y, int z) { return x+y+z } } public class MiClase{ //En archivo MiClase.java static public void main(String[] args) { System.out.println(Sumas.suma(5,4)+” “+ Sumas.suma(2,3,4)); } }

  20. Sentencias de Control de Flujo • if / else • switch • for • while • do / while

  21. if if ( result == 0 ) { System.out.println("No encontrado!"); }

  22. if / else if (rol.equals("administrador")) { // acceso a administración; } else { // no tieneacceso a administración }

  23. OperadoresRelacionales > Mayor >= Mayor o igual < Menor <= Menor o igual ==Igual != Distinto

  24. OperadoresLógicos && and || or ! not • Ejemplo boolean fin = eof || (str != null && str.equals(patron));

  25. if / else if / else public static diasVac(intaños) { if ( años < 0 || años > 100) vacaciones = -1; if ( años < 5 ) { vacaciones = 10; } else if ( años < 10 ) { vacaciones = 15; } else { vacaciones = 20; } return vacaciones; }

  26. Operador "?" • Expresión condicional: • condición ? expresión 1: expresión 2 • El valor de la expresión es expresión 1 si la condición es verdadera, y expresión 2 de lo contrario • Ejemplo montoNeto = hayImpuesto ? p * 1.05 : p; es equivalente a: if (hayImpuesto) { montoNeto = p * 1.05; } else { montoNeto = p; }

  27. Másejemplos: static public intfactorial(int x){ return x==0 ? 1 : x*factorial(x-1); } esequivalente a: static public intfactorial(int x){ if(x==0) return 1; else return x*factorial(x-1); } static public intdigitos(int x){ return x<10 ? 1 : 1+digitos(x/10); } esequivalente a: static public intdigitos(int x){ if(x<10) return 1; else return 1+digitos(x/10); }

  28. while y do while • Sintaxis 1: se ejecuta 0 o más veces while ( condición ) { sentencias } • Sintaxis 2: se ejecuta 1 o más veces do { sentencias } while ( condición );

  29. break • break causa el fin del ciclo en el que se encuentra while ( condición ) { sentencias… if (condición de salida) { break; } más sentencias… }

  30. continue • continuecausa el fin de la iteración actual y el paso a la siguiente while ( condición ) { sentencias… if (condiciónsiguienteiteración) { continue; } mássentencias… } (verejemplosinstruccionesespeciales)

  31. Programa que calcule el promedio de una cantidad indeterminada de números: Scanner s = new Scanner(System.in); double suma=0; int n=0; double numero=s.nextDouble(); while( numero != 0 ) { suma=suma+numero; n=n+1; System.out.println(“promedio=”+suma/n); numero=s.nextDouble(); }

  32. Refinamiento : La asignación como expresión Scanner s = new Scanner(System.in); double suma, numero; int n; suma = n = 0; while((numero=s.nextDouble())!=0) System.out.println(“promedio=” + (suma=suma+numero)/(n=n+1)); } //otra posibilidad System.out.println(“promedio=”+ (suma+=numero)/(n+=1));

  33. switch switch (<expresión>) { case <expresión>: ... break; case <expresión>: ... break; default: ... } • Selección múltiple • switch <expresión> debe evaluar un int • case <expresión> debe ser un literal o un campo static final • break abandona el bloque del switch (de otra manera los siguientes cases son ejecutados sin ser evaluados) • El bloque default es opcional

  34. Ejemplo de switch public static void main(String[] args) { switch (args.length) { case 0: FileEditor e = new FileEditor(); break; case 1: FileEditor e = new FileEditor(args[0]); break; default: // mensaje de error y fin } }

  35. Función que entregue el Nº de días de un mes static public intdiasMes(int x){ ... } Solución 1. Con if sin else int d=0; if( x==1 ) d=31; if( x==2 ) d=28; if( x==3 ) d=31; if( x==4 ) d=30; if( x==5 ) d=31; if( x==6 ) d=30; if( x==7 ) d=31; if( x==8 ) d=31; if( x==9 ) d=30; if( x==10 ) d=31; if( x==11 ) d=30; if( x==12 ) d=31; return d; evalúa 12 condiciones siempre

  36. Solución 2. Con selección múltiple if-elseif-...-else int d=0; if( x==1 ) d=31; else if( x==2 ) d=28 else if( x==3 ) d=31; else if( x==4 ) d=30; else if( x==5 ) d=31; else if( x==6 ) d=30; else if( x==7 ) d=31; else if( x==8 ) d=31; else if( x==9 ) d=30; else if( x==10 ) d=31; else if( x==11 ) d=30; else if( x==12 ) d=31; return d; evalúa x condiciones (12 en el peor caso)

  37. Solución 3. Con Instrucción switch (una evaluación) int d; switch(x){ case 1: d=31; break; case 2: d=28; break; case 3: d=31; break; case 4: d=30; break; case 5: d=31; break; case 6: d=30; break; case 7: d=31; break; case 8: d=31; break; case 9: d=30; break; case 10: d=31; break; case 11: d=30; break; case 12: d=31; break; default: d=0; } return d;

  38. Solución 4 int d=0; switch(x){ case 1:case 3:case 5:case 7:case 8:case 10:case 12: d=31; break; case 4:case 6:case 9:case 11: d=30; break; case 2: d=28; break; } return d; alternativamente: switch(x){ case 1:case 3:case 5:case 7:case 8:case 10:case 12: return 31; case 4:case 6:case 9:case 11: return 30; case 2: return 28; } return 0;

  39. for • Sintaxis for (inicialización; condición; reinicialización) { sentencias } • Nota • inicialización y reinicialización pueden ser listas de expresiones separadas por comas

  40. Ejemplo de for for ( x=0; x<10; x++ ) { // ejecuta el bloquemientras x < 10 } for ( x=0, y=0; y<20; x++, y+=x ) { // ejecuta el bloquemientras y < 20 }

  41. Ejemplo de for static public boolean primo(int x){ if(x%2==0) return x==2; for(inti=3; i<=(int)Math.sqrt(x); i+=2) if(x%i==0) return false; return true; } System.out.println(“primos terminados en 1:”); for(inti=1; i<=100; i+=10) if(primo(i)) U.println(i); System.out.println(“primos terminados en 3:”); for(inti=3; i<=100; i+=10) if(primo(i)) U.println(i); for(inti=1; i<=9; i+=2){ System.out.println(“primos terminados en “+i); for(int j=i; j<=100; j+=10) if(primo(j)) U.println(j); }

More Related