Semana9b Vbr

771 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
771
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Semana9b Vbr

  1. 1. Ing. Victor Barrientos Rodriguez [email_address] [email_address] PROGRAMACIÓN WEB SI189
  2. 2. Lenguaje Java <ul><li>Nomenclatura habitual </li></ul><ul><ul><li>Variables </li></ul></ul><ul><ul><ul><li>Tipos de variables </li></ul></ul></ul><ul><ul><ul><li>Tipos primitivos </li></ul></ul></ul><ul><ul><ul><li>Referencias </li></ul></ul></ul><ul><ul><ul><li>Arrays </li></ul></ul></ul><ul><ul><li>Operadores </li></ul></ul><ul><ul><ul><li>Operadores de Java </li></ul></ul></ul><ul><ul><ul><li>Precedencia de operadores </li></ul></ul></ul><ul><ul><li>Sentencias de control </li></ul></ul><ul><ul><ul><li>Sentencias condicionales </li></ul></ul></ul><ul><ul><ul><li>Sentencias de repetición </li></ul></ul></ul><ul><ul><ul><li>Sentencias break y continue </li></ul></ul></ul>
  3. 3. Nomenclatura habitual <ul><li>Los nombres de Java son sensibles a las letras mayúsculas y minúsculas </li></ul><ul><li>Normas recomendadas: </li></ul><ul><ul><li>Los nombres de clases e interfaces comenzarán siempre por mayúscula. Ej: HolaMundo. </li></ul></ul><ul><ul><li>Los nombres de objetos, métodos y variables empezarán por minúscula. Ej: main, x, y, ... </li></ul></ul><ul><ul><li>Los nombres de variables finales (constantes) se definirán siempre en mayúsculas. Ej: PI </li></ul></ul><ul><ul><li>Si un nombre consta de varias palabras, se pondrá en mayúscula la 1ª letra de la palabra que sigue a otra. Ej: HolaMundo, xCentro, yCentro,... </li></ul></ul>
  4. 4. Variables <ul><li>Tipos de variables </li></ul><ul><ul><li>Según la información que contienen: </li></ul></ul><ul><ul><ul><li>Tipos primitivos: char, byte, short, int, long, float, double y boolean </li></ul></ul></ul><ul><ul><ul><li>Referencias: guardan la dirección de memoria donde se almacena un objeto o un array </li></ul></ul></ul><ul><ul><li>Según su funcionalidad: </li></ul></ul><ul><ul><ul><li>Variables miembro de una clase: se definen en una clase, fuera de cualquier método. </li></ul></ul></ul><ul><ul><ul><li>Variables locales: se definen dentro de un método o dentro de cualquier bloque entre llaves {}. Se crean dentro del bloque y se destruyen al finalizar el bloque. </li></ul></ul></ul>
  5. 5. Tipos primitivos (i)
  6. 6. Tipos primitivos (ii) <ul><li>El tipo boolean no es un valor numérico </li></ul><ul><ul><li>Sólo admite los valores true o false </li></ul></ul><ul><ul><li>No se identifica con el igual o distinto de 0, como en C/C++ </li></ul></ul><ul><li>El tipo char contiene caracteres en código UNICODE </li></ul><ul><ul><li>Incluye el código ASCII </li></ul></ul><ul><ul><li>Comprende los caracteres de casi todos los idiomas </li></ul></ul><ul><li>Los tipos de variables en Java están definidos en todas las plataformas (a diferencia de C/C++) </li></ul><ul><ul><li>Ej: un int ocupa la misma memoria y tiene el mismo rango de valores en cualquier plataforma </li></ul></ul>
  7. 7. Declaración e inicialización <ul><li>Declaración: </li></ul><ul><ul><li>tipo nombreVariable; </li></ul></ul><ul><ul><li>Ej: int x; </li></ul></ul><ul><li>Inicialización: </li></ul><ul><ul><li>Puede especificarse un valor en la declaración. </li></ul></ul><ul><ul><ul><li>Ej: int y = 10; </li></ul></ul></ul><ul><ul><li>Si no se especifica nada: </li></ul></ul><ul><ul><ul><li>Las variables de tipos primitivos se inicializan a 0 (excepto boolean, que se inicializa a false, y char, que se inicializa a ‘’) </li></ul></ul></ul><ul><ul><ul><li>n Las variables de tipo referencia se inicializan a null. </li></ul></ul></ul>
  8. 8. Referencias <ul><li>Una referencia es una variable que indica dónde está guardado un objeto en la memoria del ordenador </li></ul><ul><ul><li>Java no permite acceder al valor de la dirección (se han eliminado los punteros) </li></ul></ul><ul><li>Al declarar una referencia no apunta a ningún objeto en particular, por lo que se le asigna el valor null. </li></ul><ul><ul><li>Ejemplo: MiClase unaRef; </li></ul></ul><ul><li>Si se desea que la referencia apunte a un nuevo objeto, es necesario crear el objeto utilizando el operador new. </li></ul><ul><ul><li>Ejemplo: MiClase otraRef = new MiClase(); </li></ul></ul>
  9. 9. Arrays <ul><li>Un array o un vector es un tipo particular de referencia. Puede ser de variables primitivas o de objetos. En la declaración hay que incluir los corchetes []. </li></ul><ul><li>Ejemplos: </li></ul><ul><ul><li>int [] vector; // Declaración de un array, inicializado a null </li></ul></ul><ul><ul><li>vector = new int [10]; // Vector de 10 enteros, inicializados a 0 </li></ul></ul><ul><ul><li>double [] v = {1.23,5.45,3.45}; // Declaración e inicialización de un vector de 3 elementos </li></ul></ul><ul><ul><li>MiClase [] lista = new MiClase[5]; // Vector de 5 referencias a objetos. Las 5 referencias inicializadas a null </li></ul></ul><ul><ul><li>lista[0]=unaRef; </li></ul></ul>
  10. 10. Operadores <ul><li>Aritméticos </li></ul><ul><li>Incrementales </li></ul><ul><li>Relacionales </li></ul><ul><li>Lógicos </li></ul><ul><li>De asignación </li></ul>
  11. 11. Operadores aritméticos
  12. 12. Operadores incrementales
  13. 13. Operadores relacionales
  14. 14. Operadores lógicos
  15. 15. Operadores de asignación
  16. 16. Otros operadores <ul><li>Operador condicional ?: </li></ul><ul><ul><li>expresiónBooleana ? op1 : op2 </li></ul></ul><ul><ul><li>Devuelve op1 si expresiónBooleana es true, y op2 si es false. </li></ul></ul><ul><ul><li>Ejemplo: </li></ul></ul><ul><ul><ul><li>double a=10.3, b=20.5, mayor=0; </li></ul></ul></ul><ul><ul><ul><li>mayor = (a>b) ? a : b; // mayor = 20.5; </li></ul></ul></ul><ul><li>Operador instanceof </li></ul><ul><ul><li>nombreObjeto instanceof NombreClase </li></ul></ul><ul><ul><li>Devuelve true si el objeto pertenece a la clase, y false si no pertenece </li></ul></ul>
  17. 17. Precedencia de operadores
  18. 18. Sentencias de control <ul><li>Sentencias condicionales </li></ul><ul><ul><li>If </li></ul></ul><ul><ul><li>if else </li></ul></ul><ul><ul><li>if elseif else </li></ul></ul><ul><ul><li>switch </li></ul></ul><ul><li>n Sentencias de repetición: </li></ul><ul><ul><li>While </li></ul></ul><ul><ul><li>do while </li></ul></ul><ul><ul><li>for </li></ul></ul><ul><li>Sentencias break y continue </li></ul>
  19. 19. Sentencias condicionales (i) <ul><li>Sentencia if </li></ul><ul><ul><li>if (expresiónBooleana) { </li></ul></ul><ul><ul><li>// instrucciones si se cumple la condición </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>Sentencia if else </li></ul><ul><ul><li>if (expresiónBooleana) { </li></ul></ul><ul><ul><li>// instrucciones si se cumple la condición </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>else { </li></ul></ul><ul><ul><li>// instrucciones si no se cumple la condición </li></ul></ul><ul><ul><li>} </li></ul></ul>
  20. 20. Sentencias condicionales (ii) <ul><li>Sentencia if elseif else </li></ul><ul><ul><li>if (expresiónBooleana1) { </li></ul></ul><ul><ul><li>// instrucciones </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>else if (expresiónBooleana2) { </li></ul></ul><ul><ul><li>// instrucciones </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>else { </li></ul></ul><ul><ul><li>// instrucciones </li></ul></ul><ul><ul><li>} </li></ul></ul>
  21. 21. Sentencias condicionales (iii) <ul><li>Sentencia switch </li></ul><ul><ul><li>switch (expresión) { </li></ul></ul><ul><ul><ul><li>case valor1: // instrucciones si la expresión vale valor1 </li></ul></ul></ul><ul><ul><ul><ul><li>break; </li></ul></ul></ul></ul><ul><ul><ul><li>case valor2: // instrucciones si la expresión vale valor2 </li></ul></ul></ul><ul><ul><ul><ul><li>break; </li></ul></ul></ul></ul><ul><ul><ul><li>case valor3: // instrucciones si la expresión vale valor3 </li></ul></ul></ul><ul><ul><ul><ul><li>break; </li></ul></ul></ul></ul><ul><ul><ul><li>default: // instrucciones si la expresión vale </li></ul></ul></ul><ul><ul><ul><li>// cualquier otro valor </li></ul></ul></ul><ul><ul><li>} </li></ul></ul>
  22. 22. Sentencias de repetición <ul><li>El bucle while </li></ul><ul><ul><li>while (expresiónBooleana){ </li></ul></ul><ul><ul><ul><li>sentencia; // se ejecuta mientras la expresión sea cierta </li></ul></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>El bucle do while </li></ul><ul><ul><li>do { </li></ul></ul><ul><ul><ul><li>sentencia; // se ejecuta mientras la expresión sea cierta </li></ul></ul></ul><ul><ul><li>}while (expresiónBooleana); </li></ul></ul><ul><li>El bucle for </li></ul><ul><ul><li>for (inicialización; condición; incremento) { </li></ul></ul><ul><ul><ul><li>sentencia; // se ejecuta mientras la condición sea cierta </li></ul></ul></ul><ul><ul><li>} </li></ul></ul>
  23. 23. Sentencias break y continue <ul><li>Sentencia break </li></ul><ul><ul><li>Finaliza inmediatamente la ejecución de una sentencia switch o de un bucle </li></ul></ul><ul><li>Sentencia continue </li></ul><ul><ul><li>Finaliza la iteración que se esté ejecutando en un bucle, volviendo al comienzo del bucle y continuando en la siguiente iteración </li></ul></ul><ul><ul><li>Ejemplo: </li></ul></ul><ul><ul><ul><li>for (int n=0;n<=100;n++){ </li></ul></ul></ul><ul><ul><ul><li>if(n%5!=0) continue; </li></ul></ul></ul><ul><ul><ul><li>System.out.println(n + “ “); </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul>
  24. 24. Clases en JAVA (i) <ul><li>Clases </li></ul><ul><ul><li>Concepto de clase y objeto </li></ul></ul><ul><ul><li>Variables miembro de objeto y de clase </li></ul></ul><ul><ul><li>Variables finales </li></ul></ul><ul><ul><li>Métodos. Paso de argumentos </li></ul></ul><ul><ul><li>Métodos de clase </li></ul></ul><ul><ul><li>Control de acceso </li></ul></ul><ul><ul><li>Métodos sobrecargados </li></ul></ul><ul><ul><li>Constructores y destructores </li></ul></ul><ul><li>Packages </li></ul>
  25. 25. Concepto de clase <ul><li>Tipo definido por el usuario que describe los atributos y los métodos de los objetos que se crearán a partir de la misma. </li></ul><ul><ul><li>Los atributos son los datos que definen el estado del objeto </li></ul></ul><ul><ul><li>Los métodos son las operaciones que definen su comportamiento </li></ul></ul><ul><li>Definición: </li></ul><ul><ul><li>[public] class NombreClase </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>//definición de datos y métodos </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><ul><ul><ul><li>* Si no se define public, la clase sólo es visible para las </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>demás clases del package </li></ul></ul></ul></ul></ul>
  26. 26. Concepto de objeto <ul><li>Es un ejemplar concreto de una clase (una instancia) </li></ul><ul><ul><li>Clases: “tipos de variables” </li></ul></ul><ul><ul><li>Objetos: “variables concretas” de un tipo determinado </li></ul></ul><ul><li>Creación objetos: </li></ul><ul><ul><li>NombreClase unObjeto; </li></ul></ul><ul><ul><li>unObjeto = new NombreClase(); </li></ul></ul><ul><ul><li>NombreClase otroObjeto; </li></ul></ul><ul><ul><li>otroObjeto = new NombreClase(); </li></ul></ul>
  27. 27. Ejemplo (i) <ul><li>class Circulo </li></ul><ul><li>{ </li></ul><ul><ul><li>public static final double PI = 3.14159265; </li></ul></ul><ul><ul><li>private double x,y; </li></ul></ul><ul><ul><li>private double radio; </li></ul></ul><ul><ul><li>public Circulo(double cx, double cy, double r) </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><ul><li>x = cx; </li></ul></ul></ul><ul><ul><ul><li>y = cy; </li></ul></ul></ul><ul><ul><ul><li>radio = r; </li></ul></ul></ul><ul><li>} </li></ul><ul><ul><li>public Circulo() </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><ul><li>this(0.0,0.0,1.0); </li></ul></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>public double perimetro() </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><ul><li>return 2.0*PI*radio; </li></ul></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>public double area() </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><ul><li>return PI*radio*radio; </li></ul></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>} </li></ul>
  28. 28. Variables miembro de objeto <ul><li>Pueden ser de tipos primitivos o referencias a objetos </li></ul><ul><li>Van precedidas por modificadores de acceso: </li></ul><ul><ul><li>public, private, protected o package </li></ul></ul><ul><li>Ejemplo: </li></ul><ul><ul><li>private double x, y; </li></ul></ul><ul><ul><li>private double radio </li></ul></ul><ul><li>Cada objeto posee sus propias variables miembro. </li></ul><ul><li>Para acceder a ellas se utiliza el operador punto (.) </li></ul><ul><ul><li>Ejemplo: circulo1.radio </li></ul></ul><ul><li>Se inicializan de forma automática, incluso antes de </li></ul><ul><li>llamar al constructor </li></ul>
  29. 29. Variables miembro de clase <ul><li>Variables de clase (variables static): son variables propias de la clase y no de cada objeto </li></ul><ul><ul><li>Permiten definir variables que sólo tienen sentido para toda la clase. </li></ul></ul><ul><li>Es lo más parecido que Java tiene a las variables globales de C/C++ </li></ul><ul><li>Ejemplo: contador de círculos creados </li></ul><ul><ul><li>Definición: static int numCirculos = 0; </li></ul></ul><ul><ul><li>Uso: Circulo.numCirculos </li></ul></ul><ul><li>Si no se les da un valor en la declaración, se inicializa </li></ul><ul><li>con los valores por defecto para los tipos primitivos, </li></ul><ul><li>y con null si es una referencia </li></ul>
  30. 30. Variables finales <ul><li>No pueden cambiar su valor a lo largo de la ejecución </li></ul><ul><li>del programa </li></ul><ul><ul><li>Pueden considerarse constantes </li></ul></ul><ul><li>Ejemplo: </li></ul><ul><ul><li>public static final double PI = 3.14159265; </li></ul></ul><ul><li>Es posible separar la definición de la inicialización: </li></ul><ul><ul><li>La inicialización puede hacerse en tiempo de ejecución </li></ul></ul><ul><ul><li>La variable es constante, pero no tiene por qué tener el mismo valor en todas las ejecuciones del programa </li></ul></ul>
  31. 31. Métodos <ul><li>Son funciones definidas dentro de una clase </li></ul><ul><li>Ejemplo: </li></ul><ul><ul><li>public double perimetro() </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>return 2.0*PI*radio; </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>Declaración: </li></ul><ul><ul><li>modificador_acceso tipo_devuelto nombreMétodo </li></ul></ul><ul><li>(lista_argumentos) </li></ul><ul><li>Se aplican a un objeto a través del operador punto </li></ul><ul><li>( .). Dicho objeto es su argumento implícito. </li></ul><ul><ul><li>circulo1.perimetro() </li></ul></ul>
  32. 32. Paso de argumentos <ul><li>Los argumentos de los tipos primitivos se pasan por valor </li></ul><ul><ul><li>El método recibe una copia del argumento </li></ul></ul><ul><li>Las referencias se pasan también por valor, pero a través de ellas se pueden modificar los objetos referenciados </li></ul><ul><li>No se pueden pasar métodos como argumentos a otros métodos </li></ul><ul><ul><li>En C/C++ se pueden pasar punteros a función como argumentos </li></ul></ul>
  33. 33. Métodos de clase <ul><li>Los métodos de clase (static) no actúan sobre objetos concretos a través del operador punto (.) </li></ul><ul><li>Se crean anteponiendo la palabra static </li></ul><ul><li>Para llamarlos se suele utilizar el nombre de la clase </li></ul><ul><li>Ejemplo: </li></ul><ul><ul><li>Métodos matemáticos de la clase </li></ul></ul><ul><ul><li>java.lang.Math: sin, cos, exp, pow,... </li></ul></ul><ul><ul><li>Math.sin(ang); // Calcula el seno de ang </li></ul></ul>
  34. 34. Control de acceso <ul><li>Modificadores de acceso </li></ul><ul><li>Indican el tipo de acceso permitido a cada miembro de la clase </li></ul><ul><li>Modificadores: public, private, protected y package (por defecto) </li></ul>
  35. 35. Métodos sobrecargados <ul><li>Java permite métodos sobrecargados </li></ul><ul><ul><li>Tienen el mismo nombre, pero se diferencian por el número y tipo de los argumentos </li></ul></ul><ul><li>Ejemplo: </li></ul><ul><ul><li>public void calcula (int dato1) </li></ul></ul><ul><ul><li>public void calcula (int dato1, float dato2) </li></ul></ul><ul><ul><li>public void calcula (int dato1, float dato2, double dato3) </li></ul></ul><ul><li>No es posible crear dos métodos sobrecargados que sólo difieran en el valor de retorno </li></ul><ul><li>Constructores sobrecargados: </li></ul><ul><ul><li>public Circulo() </li></ul></ul><ul><ul><li>public Circulo(double cx, double cy, double r) </li></ul></ul>
  36. 36. Constructores (i) <ul><li>Constructor: método que se llama automáticamente </li></ul><ul><li>cada vez que se crea un objeto de una clase </li></ul><ul><ul><li>Misión: reservar memoria e inicializar las variables miembro de la clase </li></ul></ul><ul><ul><li>No tiene valor de retorno </li></ul></ul><ul><ul><li>Su nombre es el mismo que el de la clase </li></ul></ul><ul><li>Constructor por defecto: </li></ul><ul><ul><li>No tiene argumentos </li></ul></ul><ul><ul><li>Si no se especifica, el compilador crea uno, inicializando las variables de tipos primitivos a su valor por defecto, y las referencias a null </li></ul></ul><ul><li>Un constructor puede llamar a otro definido por medio de la palabra this </li></ul>
  37. 37. Constructores (ii)
  38. 38. Constructor copia <ul><li>Permite crear un objeto a partir de otro objeto de la </li></ul><ul><li>misma clase </li></ul><ul><li>Ejemplo: </li></ul><ul><ul><li>public Punto(Punto pto) </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><ul><li>x = pto.x; </li></ul></ul></ul><ul><ul><ul><li>y = pto.y; </li></ul></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>Llamada: </li></ul><ul><ul><li>Punto pt3 = new Punto(pt2); </li></ul></ul>
  39. 39. Constructores en clases derivadas <ul><li>El constructor de una clase derivada puede llamar al </li></ul><ul><li>constructor de su clase base mediante la palabra super </li></ul><ul><ul><ul><li>Subclase(lista_parámetros) </li></ul></ul></ul><ul><ul><ul><li>{ </li></ul></ul></ul><ul><ul><ul><ul><li>super(lista_parámetros); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>// sentencias adicionales </li></ul></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><li>Si no se llama explícitamente al constructor de la </li></ul><ul><li>clase base, se llama automáticamente al constructor </li></ul><ul><li>por defecto de la clase base </li></ul><ul><li>Previamente se ha definido la Clase heredado del superior con el comando extends. </li></ul>
  40. 40. Ejemplo constructor <ul><li>class Rectangulo </li></ul><ul><li>{ </li></ul><ul><ul><ul><li>public int alto,ancho; </li></ul></ul></ul><ul><ul><ul><li>Rectangulo(int alto,int ancho) </li></ul></ul></ul><ul><ul><ul><li>{ </li></ul></ul></ul><ul><ul><ul><ul><li>this.alto = alto; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>this.ancho = ancho; </li></ul></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>class Cuadrado extends Rectangulo </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>Cuadrado(int tam) </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>super(tam,tam); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>} </li></ul>
  41. 41. Packages (ii) <ul><li>import nombrePaquete; </li></ul><ul><li>Evita tener que utilizar nombres largos </li></ul><ul><ul><li>import java.io.*; </li></ul></ul><ul><ul><li>Se puede acceder a la clase FileReader simplemente con el nombre FileReader en lugar de con el nombre java.io.FileReader </li></ul></ul><ul><li>No hace que se carguen todas las clases (sólo se cargan las clases public) </li></ul><ul><li>No se importan los subpaquetes </li></ul><ul><ul><li>import java.awt; // no importa java.awt.event </li></ul></ul><ul><li>Los packages hacen referencia a los ficheros compilados *.class </li></ul>
  42. 42. Destructores: liberación de memoria <ul><li>En Java no hay destructores </li></ul><ul><li>El sistema libera la memoria de los objetos que han perdido la referencia  garbage collection (recogida de basura) </li></ul><ul><li>No se sabe exactamente cuando se va a activar el garbage collector. </li></ul><ul><ul><li>Si no falta memoria es posible que no se active en ningún momento </li></ul></ul>
  43. 43. Packages (ii) <ul><li>Un package es una agrupación de clases </li></ul><ul><ul><li>API Java 1.1  22 packages </li></ul></ul><ul><ul><li>API Java 1.2  59 packages </li></ul></ul><ul><li>Para que una clase forme parte del package llamado </li></ul><ul><li>nombrePaquete: </li></ul><ul><ul><li>package nombrePaquete; //1ª línea del fichero </li></ul></ul><ul><li>El nombre de un package puede constar de varios </li></ul><ul><li>nombres unidos por puntos </li></ul><ul><ul><li>Ej: java.awt.event </li></ul></ul><ul><li>Todas las clases que forman parte de un package deben estar en el mismo directorio </li></ul>
  44. 44. Packages (ii) <ul><li>import nombrePaquete; </li></ul><ul><li>Evita tener que utilizar nombres largos </li></ul><ul><ul><li>import java.io.*; </li></ul></ul><ul><ul><li>Se puede acceder a la clase FileReader simplemente con el nombre FileReader en lugar de con el nombre java.io.FileReader </li></ul></ul><ul><li>No hace que se carguen todas las clases (sólo se cargan las clases public) </li></ul><ul><li>No se importan los subpaquetes </li></ul><ul><ul><li>import java.awt; // no importa java.awt.event </li></ul></ul><ul><li>Los packages hacen referencia a los ficheros compilados *.class </li></ul>
  45. 45. Exception <ul><li>Los errores se representan mediante dos tipos de </li></ul><ul><li>clases derivadas de la clase Throwable: Error y Exception: </li></ul><ul><li>1.Clase Error: </li></ul><ul><ul><li>Relacionada con errores de compilación, del sistema o de la </li></ul></ul><ul><ul><li>JVM  son irrecuperables </li></ul></ul><ul><li>2.Clase Exception: </li></ul><ul><ul><li>RuntimeException: Excepciones frecuentes (implícitas). El </li></ul></ul><ul><ul><li>propio lenguaje chequea y lanza las excepciones que derivan </li></ul></ul><ul><ul><li>de esta clase </li></ul></ul><ul><ul><li>Ej: recibir una referencia null en un método </li></ul></ul><ul><ul><li>Ej: sobrepasar el tamaño de un array </li></ul></ul><ul><ul><li>Resto de clases derivadas: Excepciones explícitas. Deben </li></ul></ul><ul><ul><li>gestionarse por el programador </li></ul></ul>
  46. 46. Exception Por heredar de Throwable, todos los tipos de excepciones pueden usar los métodos: String getMessage()  Devuelve el mensaje de error asociado a la excepción String toString()  Devuelve una breve descripción del objeto void printStackTrace()  Imprime una traza de la pila
  47. 47. Lanzar Exception Proceso de lanzamiento: Crear un objeto Exception de la clase adecuada Lanzar la excepción con la sentencia throw seguida del objeto creado Ejemplo: MiExcepcion miExc = new MiExcepcion(“Mensaje”); throw miExc; Al lanzar la excepción el método termina de inmediato sin devolver ningún valor
  48. 48. Capturar una Exception Si en un método se produce una Exception, el programa no compilará mientras no se haga una de estas cosas: Gestionar la excepción con una construcción del tipo try/catch/finally Relanzar la excepción hacia un método anterior en la pila, utilizando la construcción throws en la cabecera del método El compilador obliga a capturar las excepciones explícitas
  49. 49. Bloque try/catch/finally

×