1. 2. Paquetes y API
Paquetes
¿Para qué sirven?
Características
Cómo crearlos e importarlos
Localización de paquetes
Visibilidad de clases
Classpath
API de Java
Programación III Tema 2 - Paquetes y API
2. ¿Para qué sirven los paquetes?
• Un paquete es un mecanismo Java de agrupación y
organización de clases
• Tres propósitos:
– Mejorar la organización de las clases
– Reducir los problemas de colisión de nombres entre clases
– Controlar la visibilidad de las clases, atributos y métodos de él
• Las propias clases del núcleo de Java (API) se encuentran
organizadas en paquetes:
– package java.applet
– package java.awt
– package java.beans
– package java.io
– package java.lang
– package java.sql
– package java.util
– ...
Programación III Tema 2 - Paquetes y API
3. Características de los paquetes
• Paquete conjunto de clases relacionadas
– Un paquete crea un nuevo espacio de nombres
• Dos clases con el mismo nombre:
– NO en un mismo paquete
– SÍ en distintos paquetes
– Los paquetes se anidan formando jerarquías
• (similar a los directorios)
• Toda clase debe pertenecer a un
paquete Paquete java
– En caso de no especificar Paquete awt
explícitamente ningún paquete, existe
un paquete por defecto (sin Paquete geom
Clase Arc2D
nombre) al que pasará a pertenecer la Clase Point2D
clase Clase Line2D
Clase Ellipse2D
Clase Rectangle2D
Programación III Tema 2 - Paquetes y API
4. Cómo crear un paquete
• Cláusula package
package graphics;
class Circle
{ ... }
class Rectangle
{ ... }
– Primera sentencia del fichero
– Los nombres de paquetes suelen escribirse todo en minúsculas y no suelen
contener más de un concepto. Cada cambio de concepto la primera letra
con mayúsculas.
– Todos los nombres del fichero pertenecen al paquete
– Pueden definirse ‘n’ ficheros con el mismo paquete
• En un fichero Circle.java
package graphics;
class Circle
{ ... }
• En un fichero Rectangle.java
package graphics;
class Rectangle
{ ... }
Programación III Tema 2 - Paquetes y API
5. Nombres y localización de paquetes
• Nombre Completo de una Clase
– Incluye como prefijo el nombre completo del paquete al que pertenece:
• graphics.Circle
• graphics.Rectangle
• Para ejecutarlas:
java graphics.Circle
• Para hacer referencia a ellas desde un programa:
graphics.Rectangle
• Correspondencia entre paquetes y directorios
– Paquete = Directorio
– Nombre paquete = nombre directorio. Todas las clases del paquete en el
directorio
– Paquetes anidados = subdirectorios
• Ejemplos:
– Clases de java.awt.geom -- en el directorio ...javaawtgeom
– Clases de graphics -- en el directorio …graphics
– Clase graphics.Circle - en …graphicsCircle.class
Programación III Tema 2 - Paquetes y API
6. Importar un paquete (1)
– Para acceder a las clases de otro paquete: nombre completo
package otroPaquete;
class MiClase
{
...
graphics.Circle c = new graphics.Circle();
graphics.Rectangle r = new graphics.Rectangle();
java.util.Vector v = new java.util.Vector();
...
}
– Para simplificar esto, podemos utilizar import:
package otroPaquete;
import graphics.Circle;
import graphics.Rectangle;
import java.util.Vector;
class MiClase
{
...
Circle c = new Circle();
Rectangle r = new Rectangle();
Vector v = new Vector();
...
}
Programación III Tema 2 - Paquetes y API
7. Importar un paquete (2)
• import debe estar al principio, entre package (si lo hay) y
las definiciones de clase
– También se pueden usar caracteres comodín (*) para importar todas
las clases de un paquete. Recordar que “import” no importa
paquetes, sino clases.
package otroPaquete;
import graphics.*;
import java.util.*;
import java.awt.*;
class MiClase
{
...
Circle c = new Circle();
Rectangle r = new Rectangle();
Vector v = new Vector();
Windows w = new Windows();
...
}
• Java importa automáticamente las clases del paquete
java.lang
Programación III Tema 2 - Paquetes y API
8. Visibilidad de clases
• Una clase puede ser declarada como:
– De acceso package (por defecto), sólo en su paquete
– De acceso public, accesible por cualquier otra
• Del mismo paquete
• De cualquier otro con un import
• Ejemplo:
package contenedores;
public class Lista //acceso public
{
private Nodo raiz;
public void add(Object dato){ ... }
...
}
class Nodo //acceso package
{
Object dato;
Nodo siguiente;
}
– En cada fichero de código fuente sólo podrá haber una clase con
acceso public. Si en un fichero hay una clase public, el fichero debe
llamarse exactamente igual que la clase.
Programación III Tema 2 - Paquetes y API
9. La variable classpath (1)
• Una aplicación Java...
– Se compone de un conjunto de clases (.class)
– Pueden estar en cualquier directorio de la máquina local
• ¿Dónde las busca la JVM?
• La JVM usa la variable de entorno CLASSPATH
– classpath contiene una serie de carpetas donde la JVM
debe buscar las clases Java compiladas
– Configuración en Windows y DOS:
set classpath = path1;path2;...
• Se debe indicar el directorio donde está la
estructura del paquete
Programación III Tema 2 - Paquetes y API
10. La variable classpath (2)
• El classpath se usa para que tanto el compilador como la JVM conozcan
las clases compiladas (el byteCode). Se puede indicar en la variable de
entorno o directamente en el propio comando de
compilación/ejecución.
– Compilación:
• javac –classpath PATH CLASES.JAVA
– Ejecución:
• java –cp PATH CLASE
• NOTA: es muy importante indicar correctamente el nombre de la clase (nunca
indicar la extensión .class) y que hay que indicar la jerarquía de paquetes.
• Ejemplo:
package universidad.eside;
public class Alumno
{
...
}
– Si el directorio es
• c:programacionuniversidadesideAlumno.class
– Configuración classpath:
• set classpath=c:programacion
– Ejecución:
• java universidad.eside.Alumno
Programación III Tema 2 - Paquetes y API
11. ¿Qué es el API de Java?
• Un conjunto de clases Java que SUN proporciona
para ser usadas por el programador.
• SUN desarrolla dos tipos de APIs:
– El API núcleo (Core API) que es el conjunto mínimo de
clases que los programadores en Java pueden asumir
presentes en todas las plataformas. Disponibles con el
JDK.
– El API non-core incluido también en el JDK.
– Extensiones adicionales.
• Existen otras muchas librerías de clases
desarrolladas por terceras entidades y disponibles
en Internet.
Programación III Tema 2 - Paquetes y API
12. Org. del Core API del JDK (1/3)
• Las clases del API del JDK se encuentran organizadas en
paquetes. Estos son algunos de los principales:
– java.lang
– java.util
– java.io
– java.awt
• La documentación del API del JDK está disponible por web
en la dirección:
Dir_JDKdocsapiindex.html
• Organización de la documentación del API
– En el frame superior izquierdo se presentan todos los paquetes de los
que consta el API. [Se muestran en orden alfabético]
Programación III Tema 2 - Paquetes y API
13. Org. del Core API del JDK (2/3)
– En el frame inferior izquierdo se presentan todas
las clases e interfaces que pertenecen al paquete
seleccionado en el frame superior izquierdo. [Se
muestran en orden alfabético]
• Existe una opción en el frame superior izquierdo (“All
Classes”) que si se selecciona mostrará en el frame
inferior izquierdo y por orden alfabético todas las
clases e interfaces que contiene el API
independientemente del paquete al que pertenezcan.
– Con esta opción, los interfaces se distinguen por aparecer en
cursiva.
Programación III Tema 2 - Paquetes y API
14. Org. del Core API del JDK (3/3)
– En el frame derecho se muestran las características de la
clase o interface seleccionado en el frame inferior
izquierdo.
• Se muestra el paquete al que pertenece la clase seleccionada.
• Se muestra la jerarquía de clases en la que participa la clase
seleccionada (todas las clases de las que desciende)
• Se muestran los interfaces que implementa esa clase.
• Se muestra una pequeña descripción de la clase.
• Se muestra desde qué versión del JDK esa clase está incluida en el
API.
• Se muestran las clases que están relacionadas de alguna forma
con ella.
• Por último se muestran los atributos, constructores y métodos de
la clase, junto con una pequeña descripción de cada uno de
ellos.
– Pulsando sobre cualquiera de ellos se obtendrá una descripción más
detallada de cada uno.
• Al final se enumeran los métodos de cada una de sus clases
padres.
Programación III Tema 2 - Paquetes y API
15. Ejercicios propuestos
• Mirar la documentación de la clase
java.lang.String.
• Mirar la documentación de la clase
java.util.Vector.
• Mirar la documentación de la clase
java.util.Calendar.
• Mirar la documentación de la clase
java.util.Random.
Programación III Tema 2 - Paquetes y API