Paquetes

Vamos a juntar las dos piezas que hemos construido antes:
la comunidad del anillo y la librería

Ahora, un breve repaso a lo que hemos visto

Paquetes

  • Un paquete es un mecanismo de agrupación y organización de las clases
  • Tiene tres propósitos:
    • Mejorar la organización.
    • Reducir los problemas de colisión de los nombres entre las clases.
    • Controlar la visibilidad de las clases, los métodos y los atributos.

Paquetes

  • Un paquete alberga un conjunto de clases relacionadas.
  • Para ello, crea un nuevo espacio de nombres
  • Esto permite que dos clases con el mismo nombre existan, siempre que se encuentren en distintos paquetes.

Paquetes

Paquetes

Cómo crear un paquete

  • Para ello se utiliza la cláusula package.
  •                 package grafico;
                    public class Figura
                    { .. }
                
  • Debe de ser la primera sentencia del fichero.
  • Los nombres suelen escribirse en minúsclas y contienen un único concepto.
  • En caso de contener más de un concepto, separados por mayúsuclas.

Paquetes

Paquetes y directorios

  • Un paquete es un directorio
  • Luego nombre paquete = nombre directorio.
  • Paquetes anidados = subdirectorios
  • Los nombres suelen escribirse en minúsclas y contienen un único concepto.
  • Es decir:
    • En Windows
                          // package grafico.punto2D
                          cd proyecto\grafico\punto2D
                      
    • En Unix
                        // package grafico.punto2D
                        cd proyecto/grafico/punto2D
                      

Paquetes

Acceso a clases de otros paquetes

Dos maneras:

  • Usando el nombre completo:
                    class Dibujar{
                      grafico.punto2D.Punto p = new grafico.punto2D.Punto(1,1);
                      grafico.punto3D.Punto p = new grafico.punto3D.Punto(1,1,1);
                    }
                
  • Con la clausula import:
                    import grafico.punto2D.Punto;
                    import grafico.punto3D.*;
                    class Dibujar{
                      punto2D.Punto p = new punto2D.Punto(1,1);
                      punto3D.Punto p = new punto3D.Punto(1,1,1);
                    }
                
    • La cláusula import debe situarse entre la cláusula package y las definiciones de la clase.

Classpath

  • Define los lugares donde se encuentran las clases compiladas.
  • Estos lugares son los que utiliza la JVM para buscar las clases que necesita en la ejecución.
  • Se define de la siguiente manera:
    • En Windows
                          set CLASSPATH=path1;path2;path3;...
                      
    • En Unix
                          CLASSPATH=path1:path2:path3;...
                          export CLASSPATH
                      

Con todo esto, ya podemos convertirnos en ...