Sei sulla pagina 1di 12

4.

Paquetes (packages)

M.C. Emmanuel Zenn Rivera Blas Pgina 1
Contenido
USO DE PAQUETES ..................................................................................................................... 2
QU ES UN PAQUETE ................................................................................................................. 2
CREACIN Y USO DE PAQUETES (PACKAGE / IMPORT) ................................................... 3
BIBLIOTECAS DE LA API DE JAVA ....................................................................................... 11


4. Paquetes (packages)

M.C. Emmanuel Zenn Rivera Blas Pgina 2
USO DE PAQUETES

Como el Java se ha de usar para proyectos grandes es preciso tener unos mecanismos
que permitan hacer una particin del programa en mdulos tan independientes entre s
como sea posible, de tal manera que tengan una gran coherencia interna y unos
procedimientos de comunicacin bien definidos y poco numerosos.
Si todos los nombres de clase son accesibles desde cualquier parte del programa, se
produce con gran rapidez una saturacin del espacio de nombres. Si adems existen
varias personas o equipos trabajando de forma independiente en partes distintas del
desarrollo, los conflictos de nombres se vuelven casi inevitables.
Ojo: Con el fin de evitar los problemas de este tipo, Java proporciona los llamados
paquetes (packages), que permiten ocultar el conjunto de clases interrelacionadas e
interfaces, de modo que estas clases no son accesibles desde el exterior de cada
paquete (ocultacin de la implementacin).

QU ES UN PAQUETE

Los paquetes informticos son colecciones de clases. Siempre que se desea crear un
paquete de clases empleamos la palabra reservada package con la siguiente sintaxis:
package nombre_del_paquete;
Siendo esta definicin la primera lnea de cdigo no comentada dentro de un programa
de Java, salvo comentarios, dentro del archivo fuente.
Los paquetes pueden ser organizados, mediante importaciones, en una estructura
jerrquica anloga a la que se establece entre las clases al emplear los mecanismos de
herencia. De hecho, las propias libreras del lenguaje estn organizadas de este
modo. El nombre del paquete refleja su origen y el lugar que ocupa en la jerarqua.
La empresa Sun ha especificado un convenio de nombres que consiste en comenzar el
nombre de paquete con el nombre de dominio usado en Internet por los creadores del
paquete, pero con el orden invertido. Adems el dominio de ms alto nivel (com, mil,
org, mx, edu, etc.) se escriban en maysculas. A este nombre de dominio le sigue una
serie de nombres que especifican, en sentido descendente, la posicin del paquete en
la jerarqua. Las distintas partes del nombre van separadas por puntos. Todo se ver
ms claro con un ejemplo, el nombre:
mx.edu.universidad.curso.utilerias
Hace referencia a un paquete utilerias, el cual depende en la jerarqua de curso y est
desarrollado en el dominio universidad.edu.mx.
4. Paquetes (packages)

M.C. Emmanuel Zenn Rivera Blas Pgina 3
Este convenio hace posible evitar conflictos entre los nombres de los paquetes
desarrollados en diferentes lugares, al estar garantizada la no repeticin de los nombres
de dominio. Una ventaja adicional es la facilidad para localizar las ltimas versiones de
un paquete y para contactar con sus desarrolladores.

CREACIN Y USO DE PAQUETES (PACKAGE / IMPORT)
Como habamos dicho en la seccin anterior, siempre que se desea crear un paquete
de clases empleamos la palabra reservada package y sta debe ser la primera lnea de
cdigo no comentada dentro de un programa de java.
Es posible hacer que parte de las clases y las interfaces contenidos en un paquete sean
utilizados desde fuera del paquete. Para ello, es necesario que dichas clases e
interfaces hayan sido definidos como public.
Para acceder a una clase de otro paquete se emplea la palabra clave import del
siguiente modo:
import nombre_del_paquete.nombre_de_la_clase;
As, si se quiere importar la clase Escri del paquete cuyo nombre dbamos antes como
ejemplo, habra que hacer:
import mx.edu.universidad.curso.utilerias.Escri;
ojo: Una vez importada la clase, se puede usar su nombre sin el nombre del paquete, a
menos que exista ya una clase con el mismo nombre en el paquete que contiene el
import, o que exista un conflicto de nombres con otra clase importada desde otro
paquete.
Nota: Si se quieren importar varias clases de un mismo paquete, el hacerlo clase por
clase puede resultar muy engorroso. Con el fin de evitar stas repeticiones se ha
previsto la posibilidad de emplear un comodn en la parte del nombre de clase en la
sentencia import.
import mx.edu.universidad.curso.utilerias.*;
Esto hace que todas las clases e interfaces pblicas del paquete especificado sean
importados al paquete actual.

4. Paquetes (packages)

M.C. Emmanuel Zenn Rivera Blas Pgina 4
El siguiente ejemplo es ilustrativo:
Tenemos las dos clases pblicas A y P en la carpeta
D:\paquete\curso\universidad\mipaquete. Estas forman parte del paquete de
clases package universidad.mipaquete;


4. Paquetes (packages)

M.C. Emmanuel Zenn Rivera Blas Pgina 5
Ojo: Slo las clases e interfaces pblicas sern miembros del paquete. En ste
ejemplo slo la clase A es miembro del paquete universidad.mipaquete. Las clases C
y D no son miembros del paquete universidad.mipaquete.


package universidad.mipaquete;

public class A {//1er. clase publica
int i=0;

public A(){
System.out.println("Constructor universidad.mipaquete.A()");
}

public A(int i){
this.i= i;
System.out.println("Constructor universidad.mipaquete.A(int i), this.i= " + this.i);
}
}//~

class C{
public C(){
System.out.println("Constructor universidad.mipaquete.C()");
}
}//~

class D{
public D(){
System.out.println("Constructor universidad.mipaquete.D()");
}
}//~


Carpeta
paquete\curso
4. Paquetes (packages)

M.C. Emmanuel Zenn Rivera Blas Pgina 6
package universidad.mipaquete;

public class P {//2da. clase publica
public P(){
System.out.println("Constructor universidad.mipaquete.P()");
}

public static void escribe(String S){
System.out.println(S);
}
}//~


Al compilar los archivos A.java y P.java, JCreator automticamente crea las
carpetas correspondientes que se especificaron como sentencias (package
universidad.mipaquete;) en la primera lnea de los correspondientes archivos.
Se compilan y generan las unidades de compilacin A.class, C.class, D.class
y P.class.

Tenemos tambin una clase B en la carpeta
D:\paquete\curso\universidad\mipaquete (aunque puede ser cualquier
carpeta) que utiliza las clases publicas A y P disponibles en el paquete
universidad.mipaquete, gracias a la utilizacin de la instruccin:
import universidad.mipaquete.*;


Carpeta
paquete\curso
4. Paquetes (packages)

M.C. Emmanuel Zenn Rivera Blas Pgina 7
Nota: Slo las clases e interfaces pblicas sern miembros del paquete y son las que
puedes utilizar en tu programa. En ste ejemplo solo la clase A y P son miembro del
paquete universidad.mipaquete, y las importamos con el carcter comodn asterisco
(*). El archivo B.class puede ubicarse en cualquier directorio o carpeta de tu PC.

import universidad.mipaquete.A;
import universidad.mipaquete.P;

public class B {//1er. clase publica
public B(){
System.out.println("Constructor B()");
}

public static void main(String[] args){
A ojbA = new A();
A ojbA2= new A(20);
B ojbB= new B();
}
}///:~








Ahora para que todo est bien, tenemos que modificar la variable de ambiente
CLASSPATH agregndole D:\paquete\curso que es la carpeta donde inicia la
ruta de clases, al final de la instruccin de esa variable de ambiente, as:
CLASSPATH=.;C:\jdk1.3\bin;C:\jdk1.3\lib\dt.jar;C:\jdk1.3\lib;D:\paquete\curso
As tanto el compilador javac.exe y el intrprete java.exe pueden localizar las clases
definidas por el usuario en el paquete mencionado. Al compilar todos los programas y
ejecutarlos produce la salida que se muestra abajo.
En caso de utilizar JCreator crear un proyecto e implementar las tres clases para
ejecutar el ejemplo.
La salida del programa es la siguiente:
constructor universidad.mipaquete.A()
constructor universidad.mipaquete.A(int i), this.i= 20
constructor B()
4. Paquetes (packages)

M.C. Emmanuel Zenn Rivera Blas Pgina 8


4. Paquetes (packages)

M.C. Emmanuel Zenn Rivera Blas Pgina 9


4. Paquetes (packages)

M.C. Emmanuel Zenn Rivera Blas Pgina 10





EJERCICIO


Usar los mismos archivos A.java, B.java y P.java.
Cambiar los paquetes de los archivos A.java, P.java a
maestria.poo.tarea.
En el main() agregar dos nuevas invocaciones:
Invocar al constructor de la clase C.
Invocar al mtodo public static void escribe(String S).

4. Paquetes (packages)

M.C. Emmanuel Zenn Rivera Blas Pgina 11
BIBLIOTECAS DE LA API DE JAVA
A. Introduccin
Con cada una de las versiones que Sun lanza del JDK, se acompaa de una serie de
bibliotecas con clases estndar que valen como referencia para todos los
programadores en Java. Estas clases se pueden incluir en los programas Java, sin
temor a fallos de portabilidad. Adems, estn bien documentadas (mediante pginas
Web), y organizadas en paquetes y en un gran rbol de herencia.
A este conjunto de paquetes (o bibliotecas) se le conoce como la API de Java
(Application Programming Interface).
En este apartado explicaremos los paquetes bsicos de la API de Java, aunque algunos
de ellos tienen subpaquetes.
B. Paquetes de utilidades
java.lang: Fundamental para el lenguaje. Incluye clases como String o
StringBuffer, que se tratan ms en detenimiento en el captulo "III.2 Cadenas" de
este tutorial.
java.io: Para la entrada y salida a travs de flujos de datos, y ficheros del
sistema. Se estudia en el captulo "III.3 Entrada/Salida" de este tutorial.
java.util: Contiene colecciones de datos y clases, el modelo de eventos,
facilidades horarias, generacin aleatoria de nmeros, y otras clases de utilidad.
java.math: Clases para realizar aritmtica con la precisin que se desee.
java.text: Clases e interfaces para manejo de texto, fechas, nmeros y mensajes
de una manera independiente a los lenguajes naturales.
java.security: Clases e interfaces para seguridad en Java: Encriptacin RSA...
C. Paquetes para el desarrollo grfico
java.applet: Para crear applets y clases que las applets utilizan para comunicarse
con su contexto. Se estudia en el captulo "VI. Applets" de este tutorial.
java.awt: Para crear interfaces con el usuario, y para dibujar imgenes y grficos.
Se estudia en el captulo "IV. Bibliotecas grficas" de este tutorial.
javax.swing: Conjunto de componentes grficos que funcionan igual en todas las
plataformas que Java soporta. Se estudia en el captulo "IV. Bibliotecas grficas"
de este tutorial.
javax.accesibility: Da soporte a clases de accesibilidad para personas
discapacitadas.
java.beans: Para el desarrollo de JavaBeans.
D. Paquetes para el desarrollo en red
java.net: Clases para aplicaciones de red. Se estudia en el captulo "V. Java e
Internet" de este tutorial.
4. Paquetes (packages)

M.C. Emmanuel Zenn Rivera Blas Pgina 12
java.sql: Paquete que contiene el JDBC, para conexin de programas Java con
Bases de datos.
java.rmi: Paquete RMI, para localizar objetos remotos, comunicarse con ellos e
incluso enviar objetos como parmetros de un objeto a otro.
org.omg.CORBA: Facilita la posibilidad de utilizar OMG CORBA, para la
conexin entre objetos distribuidos, aunque est codificados en distintos
lenguajes.
org.omb.CosNaming : Da servicio al IDL de Java, similar al RMI pero en CORBA