2. Temario
Paquetes como módulos
La variable CLASSPATH
Incluyendo una clase en un paquete
Estructura de directorios
Clases públicas y no públicas
Acceso y uso de paquetes
La sentencia import
Archivos .JAR
2
3. Paquete
Un paquete (package) es una colección de clases e interfaces
relacionadas
Un paquete puede asociarse al concepto de módulo en software
Mecanismo de agrupación con dos propósitos principales:
◦ Evitar conflictos de nombres (un gran problema al desarrollar código
reusable)
◦ Control del nivel de acceso (encapsulación)
3
5. Jerarquía de Paquetes
Los nombres de paquetes son jerárquicos
◦ Ejemplo: java.awt.event
Las clases deben residir en un subdirectorio que
mapea el nombre del paquete
◦ Ejemplo: Una clase que pertenece al paquete
java.awt.event debe estar ubicada en el subdirectorio
javaawtevent
Los subdirectorios donde comienzan los paquetes
pueden estar ubicados en cualquier parte del
sistema de archivos
5
6. La variable classpath
La variable classpath es utilizada para indicar la raíz de los paquetes que se
usarán durante la compilación/ejecución
Ej. javc/java –classpath directorio1;directorio2;… Programa.java
6
7. 7
Clases en un Paquete
1. Para agregar una clase a un paquete se utiliza la
sentencia package como la primera sentencia del
archivo fuente (convención para el nombre del
paquete: dominio de la empresa invertido + sistema
+ subsistema + …)
package cl.sii.renta;
public class Empresa {
// implementación de la clase
}
2. Se almacena la clase en un subdirectorio que mapea
el nombre del paquete
8. Estructura de Directorios
La empresa Taranis tiene un paquete gráfico con la
clase Rectangle
El archivo puede tener una clase pública y varias no
públicas; el compilador genera los archivos .class
8
9. Clases Públicas y No Públicas
Una clase debe declararse public para ser accesible por
clases de otros paquetes
package cl.sii.renta;
public class Empresa {
// implementación de la clase
}
Una clase no pública sólo es accesible por otras clases
del mismo paquete
9
10. Acceso a Paquetes
Una clase tiene acceso directo a:
◦ Clases que se encuentran en el paquete java.lang (ej: String)
◦ Otras clases del mismo paquete
Hay dos formas de acceder a clases que se encuentran en otros
paquetes:
◦ Usar nombres de clases totalmente calificados
◦ Utilizar la sentencia import
10
11. Nombres Calificados
Ejemplo
class MiApp {
public static void main(String[] args) {
com.msoft.math.Matrice m;
m = new com.msoft.math.Matrice();
...
}
}
Si CLASSPATH está definida así:
set CLASSPATH=C:javaclasses;C:lib;.
... entonces la clase Matrice es buscada en los siguientes
directorios:
◦ C:javaclassescommsoftmath
◦ C:libcommsoftmath
◦ .commsoftmath
11
12. Sentencia import
Facilita la referencia a clases de un paquete
Permite que las clases de un paquete sean referenciadas solamente por el
nombre de la clase
Es posible importar:
◦ una clase específica de un paquete
import com.msoft.math.Matrice;
◦ todas las clases de un paquete
import com.msoft.math.*;
12
13. Sentencia import
Ejemplo
import com.msoft.math.*;
class MiApp {
public static void main(String[] args) {
Matrice m = new Matrice();
...
}
}
Si CLASSPATH está definida así:
set CLASSPATH=C:javaclasses;C:lib;.
... entonces la clase Matrice es buscada en los siguientes
directorios:
◦ C:javaclasses, C:lib, .
◦ C:javaclassescommsoftmath, C:libcommsoftmath,
.commsoftmath
13
14. El Paquete Default
Una clase que no utiliza la sentencia package forma parte del "paquete
default", un paquete sin nombre
Es decir, todas las clases que no utilizan la sentencia package
pertenecen a un mismo paquete
14
15. Archivos JAR y ZIP
Es posible agregar archivos .JAR (formato similar a .ZIP)
y .ZIP a la variable CLASSPATH
SET CLASSPATH=
C:javaclasses;C:j2ee14libj2ee.jar
La estructura de directorios interna de los archivos .JAR
y .ZIP es utilizada como una estructura de directorios
normal
El comando jar, parte de los utilitarios de J2SDK,
permite manejar archivos .JAR.
15
16. Resumen
Un paquete (package) es una colección de clases e
interfaces relacionadas
Los nombres de paquetes son jerárquicos
La variable de ambiente CLASSPATH es usada para
indicar donde buscar los paquetes
La sentencia package es usada para incluir una
clase en un paquete
La sentencia import hace más sencillo hacer
referencia a clases en un paquete
16