> Manuales > Manual de Java

Java permite organizar las clases mediante agrupaciones o packages.

Efectivamente vamos a necesitar organizar nuestras clases en algún momento porque nuestro desarrollo puede ir creciendo, y tener un cúmulo de clases todas juntas en un directorio, sin ningún tipo de organización física ni lógica, no nos ayudará demasiado.

Java nos permite con los "Packages" evitar esta situación de un modo bastante elegante y ordenado. Un "Package" es básicamente una agrupación de clases, vemos por ejemplo que la versión 1.2 de Java incluye un total de 59 "Packages" para organizar todo su API.

Cualquier grupo de clases se puede organizar dentro de un "package" pero evidentemente lo más normal es que tus clases las organices por algún motivo. Las clases se suelen organizar según la relación entre ellas. Por ejemplo si tuviésemos un grupo de clases que permiten hacer una ordenación de elementos en un array podríamos organizarlas de este modo:

Quicksort.class; // Clase para ordenar arrays con el método quicksort
Burbuja.class; // Clase para ordenar arrays con el método de la burbuja
Seleccion.class; // Clase para ordenar arrays con el método de selección
Insercion.class; // Clase para ordenar arrays con el método de inserción directa

/* Podemos englobar estas clases en un package puesto que todas están relacionadas en su cometido. Crearemos por tanto el "package ordenaciones" para que podamos acceder a ellas de este modo: */

ordenacion.Quicksort.class; // Ejemplo acceso a quicksort en el package ordenación

/* Igualmente podríamos tener también clases para la búsqueda de un elemento en un array en tal caso repetiríamos el proceso y por ejemplo tendríamos el "package tratamientoArrays" de este modo: */

tratamientoArrays.ordenacion.Quicksort.class; // Ejemplo acceso a quicksort dentro del // package ordenación que a su vez está // dentro del package tratamientoArrays.


El uso de "Packages" no solo nos permite organizar nuestras clases, sino que nos permite diferenciar clases que siendo distintas tengan que tener el mismo nombre, es decir, ayuda a java con la resolución de nombres.

También como hemos visto por encima anteriormente nos permite ciertas normas para controlar el acceso a clases.

Veamos ahora como utilizar los "packages" para nuestras clases. Lo primero que tenemos que tener en cuenta es que todas las clases que van a pertenecer a un mismo "package" tienen que estar en un mismo directorio que debe coincidir en nombre con el nombre del "package". Vemos que por tanto el nombre completo de una clase de un "package" equivale a su ruta desde el directorio que tomemos de base para nuestras clases.

El directorio de base para nuestras clases es el definido por la variable de entorno CLASSPATH que introducimos en el segundo capitulo de este manual. Veamos el ejemplo:

tratamientoArrays.ordenacion.Quicksort.class
/* Equivale al acceso a la clase que se encuentra en el directorio:
$CLASSPATH/tratamientoArrays/ordenacion/Quicksort.class */


El convenio de nombres de Java establece también que los nombres de los "packages" empiecen por minúsculas.

En segundo lugar para utilizar los "packages" en nuestras clases tenemos que incluir al principio del fichero de la clase (antes de cualquier otra sentencia) la linea:

Package nombreDelPackage;

Por último veamos la sentencia "import". "import" permite importar un "package" a nuestra clase Java. Esto nos permite acceder (en caso de que sean accesibles) sin usar todo el nombre del "package" a cualquier clase dentro de él. Veámoslo en el siguiente ejemplo:

Import tratamientoArrays.ordenación.*; //Importamos todas las clases
//del "Package" de ordenación de
//arrays que teníamos organizado.

/*tiramos líneas de código en Java hasta que... */

Quicksort arrayQuick= new Quicksort(); //... En cualquier momento de nuestra clase // podemos hacer uso de la clase Quicksort sin
// utilizar toda la ruta del package.


Hay que tener también en cuenta que importando un "package" no importamos todos sus "subpackages" sino solo todas las clases de ese "package". También podemos simplemente importar solo una clase dentro de ese "package" poniendo en vez de un asterisco el nombre de la clase a importar.

Para acabar con este punto quiero hacer un comentario acerca del API de Java. Ya os he dicho que las clases del API de Java están organizadas en "packages" según su función. Hay "packages" preparados para acometer las mas variadas tareas. Es ejercicio del lector informarse de que "packages" le interesan en su desarrollo y del funcionamiento de las clases incluidas en estos. Nosotros veremos ciertos "packages" de uso habitual durante el manual.

Como ya os comenté, en java no se empieza desde cero, tenemos un conjunto de clases que podemos incluir en nuestro programa sin necesidad de importar ningún "package". Esas clases son las que pertenecen al "package" Java.lang. este "package" incluye las clases básicas de Java como por ejemplo la clase "Array" que utilizaremos muy habitualmente.

Victorino Blanco González

Forma parte del equipo DesarrolloWeb.com y MercadoProfesional.com

Manual