2.6 Librerías de objetos (paquetes)
Conforme nuestros programas se van haciendo más grandes, el número de clases va creciendo. Introducir todas las clases en un único directorio no ayuda a que estén bien organizadas, lo mejor es hacer grupos de clases, de forma que todas las clases que estén relacionadas o traten sobre un mismo tema estén en el mismo grupo.
Un paquete de clases es una agrupación de clases que consideramos que están relacionadas entre sí o tratan de un tema común.
Acceso a métodos de un mismo paquete
Las clases de un mismo paquete tienen un acceso privilegiado a los atributos y métodos de otras clases de dicho paquete. Es por ello por lo que se considera que los paquetes son también, en cierto modo, unidades de encapsulación y ocultación de información.
Java nos ayuda a organizar las clases en paquetes. En cada fichero .java que hagamos, al principio, podemos indicar a qué paquete pertenece la clase que hagamos en ese fichero.
Los paquetes se declaran utilizando la palabra clave package seguida del nombre del paquete.
Para establecer el paquete al que pertenece una clase hay que poner una sentencia de declaración como la siguiente al principio de la clase:
Por ejemplo, si decidimos agrupar en un paquete ejemplos un programa llamado Bienvenida, pondríamos en nuestro fichero Bienvenida.java lo siguiente:
El código es exactamente igual que como hemos venido haciendo hasta ahora, solamente hemos añadido la línea package ejemplos; al principio.
Sentencia import¶
Cuando queremos utilizar una clase que está en un paquete distinto a la clase que estamos utilizando, se suele utilizar la sentencia import. Por ejemplo, si queremos utilizar la clase Scanner que está en el paquete java.util de la Biblioteca de Clases de Java, tendremos que utilizar esta sentencia:
Se pueden importar todas las clases de un paquete, así:
Esta sentencia debe aparecer al principio de la clase, justo después de la sentencia package, si ésta existiese.
También podemos utilizar la clase sin sentencia import, en cuyo caso cada vez que queramos usarla debemos indicar su ruta completa:
Hasta aquí todo correcto. Sin embargo, al trabajar con paquetes, Java nos obliga a organizar los directorios, compilar y ejecutar de cierta forma para que todo funcione adecuadamente.
Librerías Java¶
Cuando descargamos el entorno de compilación y ejecución de Java, obtenemos la API de Java. Como ya sabemos, se trata de un conjunto de bibliotecas que nos proporciona paquetes de clases útiles para nuestros programas. Utilizar las clases y métodos de la Biblioteca de Java nos va ayudar a reducir el tiempo de desarrollo considerablemente, por lo que es importante que aprendamos a consultarla y conozcamos las clases más utilizadas. Ejemplo:
Los paquetes más importantes que ofrece el lenguaje Java son:
| Paquete o librería | Descripción |
|---|---|
| java.io | Contiene las clases que gestionan la entrada y salida, ya sea para manipular ficheros, leer o escribir en pantalla, en memoria, etc. Este paquete contiene por ejemplo la clase BufferedReader que se utiliza para la entrada por teclado. |
| java.lang | Contiene las clases básicas del lenguaje. Este paquete no es necesario importarlo, ya que es importado automáticamente por el entorno de ejecución. En este paquete se encuentra la clase Object, que sirve como raíz para la jerarquía de clases de Java, o la clase System que ya hemos utilizado en algunos ejemplos y que representa al sistema en el que se está ejecutando la aplicación. También podemos encontrar en este paquete las clases que "envuelven" los tipos primitivos de datos. Lo que proporciona una serie de métodos para cada tipo de dato de utilidad, como por ejemplo las conversiones de datos. |
| java.util | Biblioteca de clases de utilidad general para el programador. Este paquete contiene por ejemplo la clase Scanner utilizada para la entrada por teclado de diferentes tipos de datos, la clase Date, para el tratamiento de fechas, etc. |
| java.math | Contiene herramientas para manipulaciones matemáticas. |
| java.awt | Incluye las clases relacionadas con la construcción de interfaces de usuario, es decir, las que nos permiten construir ventanas, cajas de texto, botones, etc. Algunas de las clases que podemos encontrar en este paquete son Button, TextField, Frame, Label, etc. |
| java.swing | Contiene otro conjunto de clases para la construcción de interfaces avanzadas de usuario. Los componentes que se engloban dentro de este paquete se denominan componentes Swing, y suponen una alternativa mucho más potente que AWT para construir interfaces de usuario. |
| java.net | Conjunto de clases para la programación en la red local e Internet. |
| java.sql | Contiene las clases necesarias para programar en Java el acceso a las bases de datos. |
| java.security | Biblioteca de clases para implementar mecanismos de seguridad. |
Como se puede comprobar Java ofrece una completa jerarquía de clases organizadas a través de paquetes.