Download Organización del código en Java
Document related concepts
no text concepts found
Transcript
Organización y convenciones del código en Java Aclaración: este texto está en versión beta, es por esto que cualquier comentario/sugerencia será bienvenido en npaez@fi.uba.ar. Una vez instaladas las herramientas de desarrollo, es hora de empezar a escribir código, pero para ello primero debemos entender como se organiza el código en Java. Java requiere que cada clase pública sea almacenada en un archivo con el nombre de la clase, lo cual implica que no podremos poner más de una clase pública por archivo. O sea, si tenemos una clase pública llamada Figura, la misma deberá ser almacenada en un archivo llamado Figura.java A su vez las clases se agrupan en paquetes. El concepto de paquete en Java es similar al de unit en Pascal y al de namespace en C++. Los paquetes pueden nombrarse con varios nombres unidos por puntos, un nombre de paquete válido sería por ejemplo algo3.fiuba.ejemplos. Para indicar que una clase A pertenece a un paquete xxx.yyy , basta con incluir la sentencia package xxx.yyy; al comienzo del archivo de la clase A. Todas las clases que forman parte de un mismo paquete, deben estar en un mismo directorio con el nombre del paquete. Los puntos en el nombre del paquete determinan una estructura de directorios. Veamos un ejemplo: la clase A perteneciente al paquete xxx.yyy, determina la existencia de una archivo A.java, dentro de un directorio llamado yyy, dentro de un directorio xxx, osea xxx\yyy\A.java. La utilización de paquetes permite que existan clases con el mismo nombre, siempre y cuando pertenezcan a distintos paquetes. Personalmente siempre suelo decir que el nombre completo de una clase es: nombre paquete + nombre clase. Cuando desde una clase queremos utililizar otra clase perteneciente a un paquete distinto, debemos importar la clase. Para ello incluiremos la sentencia import seguida por el nombre completo de la clase que deseemos importar. En caso de querer importar todas las clases de un paquete xxx, podremos incluir la sentencia import xxx.*; Por el momento esto es tode en cuanto a la organización del código, en secciones siguientes volveremos sobre este tema para explicar los archivos JAR. Finalmente antes de comenzar a programar veamos algunas convenciones. A la hora de escribir código, existen ciertas convenciones en Java ampliamente aceptadas, que si bien no son de uso obligatorio son muy recomendables: Los paquetes se nombran con todas minúsculas: algo3.fiuba.ejemplos Las clases se nombran con primera letra mayúscula al igual que la primera letra de cada palabra compuesta (PascalCasing): ClaseUno Los métodos y atributos, con la primera letra minúscula y cada palabra compuesta con la primera letra mayúscula (camelCasing): metodoUno, atributoUno Finalmente para las constantes se utilizan todas mayúsculas, CONSTANTE_UNO Bien, hora del código, comencemos por algo clásico, un Hola mundo. Para ello crearemos una clase Ejemplo1 con un método darBienvenida, que nos diga el Hola Mundo. public class Ejemplo1 { public void darBienvenida(){ System.out.println("¡Hola mundo!"); } } Bien, esta clase la guarderemos en un archivo llamado Ejemplo1.java. Ahora deberíamos incluir un método main, para que java sepa por donde comenzar a ejecutar el programa y dentro de ese método crear una instancia de la clase Ejemplo1 e invocar al método darBienvenida. Dicho método podriamos incluirlo dentro de la misma clase Ejemplo1 y se veria asi: public static void main(String[] args){ Ejemplo1 ejemplo = new Ejemplo1(); ejemplo.darBienvenida(); } Finalmente compilamos el archivo, lo cual generará el archivo Ejemplo1.class javac Ejemplo1.java Ya estamos en condiciones de ejecutar nuestro ejemplo, para ello invocaremos a java indicandole el nombre de la clase que contiene el método main, en este caso: java Ejemplo1 Ahora le agregaremos algunos detalles al ejemplo para ir familiarizandonos con otros conceptos. Primero incluiremos la clase Ejemplo1 en el paquete algo3.fiuba.ejemplos, para lo cual incluiremos la siguiente sentencia al comienzo del archivo Ejemplo1.java package algo3.fiuba.ejemplos; Si volvemos a compilar, e intentamos ejecutar, obtendremos un error. Esto se debe a que la clase Ejemplo1 ahora pertenece al paquete algo3.fiuba.ejemplos y no se encuentra en el directorio correspondiente. Entonces lo que debemos hacer es crear la estructura de directorio algo3\fiuba\ejemplos y colocar nuestro archivo Ejemplo1.class dentro del directorio ejemplos. Luego estando ubicados fuera del directorio algo3 podremos ejecutar nuestro programa. Los pasos a seguir son: md algo3 cd algo3 md fiuba cd fiuba md ejemplos cd.. cd.. move Ejemplo1.class algo3\fiuba\ejemplos java algo3.fiuba.ejemplos.Ejemplo1 Si esto no llega a funcionar, verificar el tipeo recuerden que java distingue entre mayúsculas y minúsculas. Bien ahora, refactorizaremos la clase Ejemplo1 removiendo el método main y ubicandolo en una nueva clase llamada MiPrograma que almacenaremos en el archivo MiPrograma.java public class MiPrograma{ public static void main(String[] args){ Ejemplo1 ejemplo = new Ejemplo1(); ejemplo.darBienvenida(); } } Notese que no hemos declarado a que paquete pertenece esta clase, por lo cual java asumirá que pertenece al paquete por defecto y por tal razón no debemos colocarla en ningún directorio en particular. Si intentamos compilar esta clase obtendremos un error debido a que el compilador no podrá ubicar la clase Ejemplo1, porque la misma pertenece a otro paquete. Para que podamos compilar nuestra clase MiPrograma, deberemos importar la clase Ejemplo1, agregando la siguiente linea al comienzo del archivo MiPrograma.java: import algo3.fiuba.ejemplos.Ejemplo1; Si compilamos la clase MiPrograma obtendremo el archivo: MiPrograma.class Finalmente para ejecutar nuestra nueva versión del ejemplo bastará con tipear java MiPrograma