Introducción a Java (2) Humberto Cervantes Maceda Alfonso Martínez Martínez 1 Marzo 2005 Indice Conceptos adicionales Java La clase Object Manejo de excepciones Buenas practicas de desarrollo Utilizar convenciones de nombrado Escribir documentación Usar siempre un package e importar sólo los necesarios Estructurar bien los proyectos 2 Conceptos adicionales de Java 3 La clase Object Clase a la raíz de la jerarquía de herencia Toda clase hereda de Object Ventajas de una clase de base Una variable de tipo Object puede almacenar una referencia hacia cualquier objeto Ej: colecciones La clase Object provee varios métodos útiles 4 clone equals finalize getClass toString Métodos de la clase Object clone Crea un duplicado del objeto equals Prueba si dos objetos son iguales finalize Llamado en el momento en que el objeto es colectado por el colector de basura getClass Obtiene una referencia a la clase del objeto toString Convierte el objeto en cadena 5 Manejo de excepciones Qué es? Mecanismo diseñado para manejar errores de ejecución u otros problemas dentro de un programa Estado actual se salva, y el la ejecución es retomada por un manejador (que “cacha” la excepción) En Java, las excepciones están representadas por clases y en ejecución por instancias de estas java.lang.Throwable Superclase de todos los errores y excepciones java.lang.Error: condición anormal que no debe ser cachada java.lang.Exception: condición anormal que es razonable manejar 6 Manejo de excepciones void minusculas(String a) { try { a.toLower(); } catch(NullPointerException ex) { System.out.println(“a es nulo!”); ex.printStackTrace(); } } 7 Lectura de excepciones Interpretación de salida Una excepción contiene una “fotografía” de la pila de ejecución al momento en que ocurre También contiene un mensaje ex.printStackTrace() muestra la imagen de la pila Es necesario saber interpretar estas salidas para entender los problemas del programa Ejemplo java.lang.NullPointerException at Prueba.minusculas(Prueba.java:13) at Prueba.main(Prueba.java:6) 8 Generación de excepciones Es posible crear nuestras propias clases de excepciones Si generamos una excepción dentro de un método, se debe declarar que el método 'lanza' la excepción throws Se puede relanzar una excepción que se cachó. Excepciones checadas vs. no checadas Si nuestra excepción es subclase de RuntimeException, el método no necesita declarar que la lanza Ej: NullPointerException 9 Manejo de excepciones 10 void minusculas(String a) throws Exception { try { a.toLower(); ... más código ... } catch(NullPointerException ex) { System.out.println(“a es nulo!”); } catch(Exception ex) { System.out.println(“hubo excepcion que no se puede manejar!”); throw ex; } } Ventajas de excepciones Separación de lógica aplicativa y manejo de errores Manejo de errores también está separado según tipo de error Propagación de errores Permite a distintas entidades encargarse antes de que la aplicación falle por completo 11 Buenas practicas de desarrollo 12 Buenas practicas de desarrollo Por qué? Es importante seguir buenas practicas de desarrollo desde el principio, por que facilitan el mantenimiento y la comprensión del código por otras personas Cuesta un poco más de trabajo al principio pero es más trabajo mantener un proyecto sin convenciones! Practicas que vamos a ver Utilizar convenciones de nombrado Escribir documentación Usar sólo los imports necesarios Estructurar bien los proyectos 13 Convenciones de nombrado Las que vimos ayer Clases: empiezan siempre con mayuscula MiClase Packages: siempre con minúsculas y nombre de organización al revés mx.uam.cursojava Métodos: empiezan siempre con minuscula miMetodo Atributos: conviene usar una convención que diferencie atributos de clase m_nombre 14 Escribir documentación Es muy importante documentar las clases Distintos tipos de comentario Javadoc /** Nombre @param */ Comentario multi-línea /* Aquí va mi comentario */ Comentario sobre una línea // Comentario 15 Packages Usar siempre un package Aunque Java lo permite, nunca se deben hacer clases sin espacios de nombres Importar sólo lo necesario Java permite importar todas las clases de un package import javax.swing.* No es recomendable hacerlo, ya que dos packages pueden contener una clase con el mismo nombre 16 Estructuración de proyecto Directorios de base src – fuentes build – en donde se ponen los archivos compilados bin – binarios, scripts dist – lo que se va a distribuir (ej. archivos Jar) doc – documentación lib – librerías 17 Síntesis Hoy vimos Conceptos adicionales Java Buenas practicas de desarrollo La buena noticia En la próxima sesión vamos a ver Eclipse que simplifica mucho el seguimiento de estas prácticas 18