PAQUETES en Java
PAQUETES en Java A. Introducción Los paquetes son el mecanismo por el que Java faculta agrupar clases, interfaces, excepciones y constantes. De esta forma, se agrupan conjuntos de estructuras de datos y de clases con determinado tipo de relacion en comun. Con la idea de mantener la reutilizacion y facilidad de uso de los paquetes extendidos es conveniente que las clases e interfaces contenidas en los mismos tengan alguna relacion funcional. De esta forma los desarrolladores ya tendran una idea de lo que estan buscando y facilmente sabran que pueden descubrir dentro de un paquete. B. Creación de un paquete a.) Declaración Para declarar un paquete se emplea la sentencia package seguida del nombre del paquete que estemos creando: package NombrePaquete; La articula que ha de seguir un fichero fuente en Java es: Una única sentencia de paquete (opcional). Las sentencias de importación deseadas (opcional). La declaración de una (y sólo una) clase pública (public). Las clases privadas del paquete (opcional). Por lo tanto la sentencia de declaración de paquete ha de ser la primera en un archivo fuente Java. b.) Nomenclatura Para que los nombres de paquete puedan ser facilmente reutilizados en toda una compañia o inclusive en todo el mundo es conveniente darles nombres unicos. Esto puede ser una tarea realmente tediosa dentro de una mayor empresa, y plenamente imposible dentro de la comunidad de Internet. Por eso se propone asignar como paquetes y subpaquetes el nombre de dominio dentro de Internet. Se verá un ejemplo para un dominio que se llamase japon.magic.com, un nombre apropiado sería com.magic.japon.paquete. c.) Subpaquetes Cada paquete puede tener a su vez paquetes con contenidos parecidos, de manera que un programador probablemente estara interesado en estructurar sus paquetes de manera jerarquica. Para eso se determinan los subpaquetes. Para crear un subpaquete bastará con Guardar el paquete hijo en un directorio Paquete/Subpaquete. Así una clase dentro de un subpaquete como Paquete.Subpaquete.clase estará codificada en el fichero Paquete/Subpaquete.java. El JDK determina una variable de ámbito denominada CLASSPATH que gestiona las rutas en las que el JDK busca los subpaquetes. El directorio actual suele estar siempre incluido en la variable de ámbito CLASSPATH. Para más información sobre el JDK véase el "Apéndice I. JDK" de este tutorial. C. Uso de un paquete Con el fin de importar paquetes ya extendidos se emplea la sentencia import seguida del nombre de paquete o paquetes a importar. Se pueden importar todos los fundamentos de un paquete o sólo algunos. Para importar todas las clases e interfaces de un paquete se emplea el metacaracter *: import PaquetePrueba.*; Tambien tiene lugar la probabilidad de que se deseen importar solo determinadas de las clases de un cierto paquete o subpaquete: import Paquete.Subpaquete1.Subpaquete2.Clase1; Para alcanzar a los fundamentos de un paquete, no es indispensable importar explicitamente el paquete en que aparecen, sino que basta con referenciar el fundamento tras una especificacion completa de la ruta de paquetes y subpaquetes en que se encuentra. Paquete.Subpaquetes1.Subpaquete2.Clase_o_Interfaz.elemento En la API de Java se incluyen un conjunto de paquetes ya extendidos que se pueden incluir en cualquier aplicación (o applet) Java que se desarrolle. Estos paquetes son explicados con más detalle en el capítulo "III.1.Bibliotecas de la API de Java" de este tutorial. D. Ámbito de los fundamentos de un paquete Al introducir el concepto de paquete, aparece la duda de cómo proteger los fundamentos de una clase, qué visibilidad presentan respecto al resto de fundamentos del paquete, respecto a los de otros paquetes... Ya en la herencia se vieron los identificadores de visibilidad public (visible a todas las clases), private (no visible mas que para la particular clase), y protected (visible a clases hijas). Por defecto se estima los fundamentos (clases, variables y metodos) de un mismo paquete como visibles entre ellos (supliendo las denominadas clases amigas de C++).