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 [email protected].
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