top of page

     Bienvenidos una vez de nuevo a este curso de programación en java, a partir de aquí, estas clases ya pertenecen al apartado intermedio / avanzado. Lo que veremos hoy en este curso serán los paquetes, que son los sistemas de java para organizar sus clases. Veamos ahora los paqutes, puedes compararlos con la organización en carpetas o directorios de un disco duro, incluso, ya veremos ahora adelante que cuando creemos un paquete tendremos que crear tambien un sistema de directorios con el mismo nombre, aun que desde netbeans lo hará perfectamente.

 

     Un paquete puede tener un número ilimitado de clases, clases que en un principio tendrian que estar relacionadas entre si de alguna manera, manera que es muy amplia, pueden estar relacionadas por su scope, por su tipo, etc... aun que ya veremos que cuando creemos paquetes por nosotros mismos, estas clases podran estar relacionadas por cualquier cosa que nosotros queramos, si utilizamos muy pocas clases para la creación de un programa, puede que ahora mismo no tenga mucho sentido que organicemos nuestras clases por paquetes, pero cuando comencemos a crear programas mucho mas complejos veremos la importancia y la utilidad de tener nuestras clases organizadas por paquetes. Otra ventaja para organizar nuestras clases por paquetes es el evitar que cuanto mayor sea el número de clases que estemos utilizando, mayor sea la posibilidad de que utilicemos el mismo nombre de clase que el de otro desarrollador lo que puede originar errores de compilación, utilizando paquetes en el caso de que dos clases compartan nombre en distintos paquetes no pasaría nada, por que java reconocería cada uno de los paquetes en el lugar donde estén y no habrá comflictos de compilación. Una tercera ventaja que nos proporciona la utilización de paquetes en java es para controlar el acceso de una mejor maneraque en el sistema por clases que ya veiamos anteriormente, y por último los paquetes tambien nos permiten identificar nuestros trabajos como únicos, ya veremos el sistema que se tiene para colocar el nombre de los paquetes en java.

 

 

¿Como usar paquetes?

 

     Usar paquetes no es nada nuevo, que ya sin saberlo ya lo hemos utilizado desde principio de curso, cada vez que utilizamos la palabra clave import, estamos utilizando un paquete. Puede darse el caso de que nosotros al querer llamar a una clase, resulte que esta en el paquete java.lang, pues bien, en el caso de que la clase en cuestión esté implementada dentro de la clase java.lang lo único que tendremos que hacer es colocar directamente el nombre de la clase. System, Date, String...

 

     Si la clase que queremos utilizar está dentro de un paquete que no sea el paquete java.lang, lo podemos hacer de dos formas o bien llamamos a la clase por el nombre completo, es decir 'java.awt.Fount' o tambien podemos directamente importar esa clase para no tener que estar scribiendolo cada dos por tres, o en su defecto, importar el paquete entero 'import java.awt.*'.

 

     Tambien puede pasar que la clase que queramos utilizar no esté definida en ningún paquete, java lo va a poner en un paquete por defecto sin nombre y nos podemos referir a ella colocando el nombre de la clase sin mas.

 

NOTA: Ha diferencia de otros lengüajes de programación orientada a objetos como C++, no existe la diferencia entre importar una clase o todas, no existe diferencia alguna.

 

 

 

 

 

Para crear un objeto o instancia de una clase que este en un paquete determinado lo hacemos casi del mismo modo:

 

java.awt.Fount ey = new java.awt.Font();

 

 

Y para hacer a una clase miembro de un paquete ponemos en la primera declaración de la clase:

 

package nombrePaquete;

 

 

     Y para entender esto bien, vamos a hacer un programa desde cero, primero creamos un nuevo proyecto de nombre paquetes, y ahora, encima de la carpeta 'paquetes de fuente' vamos a pulsar botón derecho y le damos a Java Package... y se nos abrirá una ventana donde seleccionar el nombre, vamos a llamarle com.laotracaradelhacker.libreria, y ahora vamos a ver un poco mas a fondo lo que ha hecho netbeans, si nos vamos a Documents\NetBeansProjects vemos que nos ha creado una carpeta de nombre paquetes, que es nuestro proyecto, y si le damos doble click veremos que hay una carpeta llamada src, que es donde va guardando los paquetes y las clases, si la abrimos vemos que dentro hay una carpeta llamada com, dentro una llamada laotracaradelhacker, y dentro librería.

 

 

     Para reconocer entre clases y paquetes tenemos que tener en cuenta que los paquetes nunca levan mayusculas y las clases si, ademas, recordemos que no podemos improtar de golpe varios paquetes aun que tengan nombres muy parecidos, por ejemplo, en este caso:

 

java.uti.*;

java.util.jar.*;

java.util.prefs.*;

 

 

     Y tampoco podemos probar cosas del estilo, poner import.l*; o cosas asi esperando que nos importe todas las clases que empiecen por l o algo asi, no, no se puede.

 

import static java.lang.Math.*;

public class ConstantesCortas{
    public static void main (String [ ] args) {
        System.out.println("PI: " + PI);
        System.out.println("PI * 3: " + PI*3);
    }
}

 

run:
PI: 3.141592653589793
PI * 3: 9.42477796076938
GENERACIÓN CORRECTA (total time: 1 second)

 

 

Esto esta muy bien, pero hay una situación en la que podemos tener problemas, como en este ejemplo:

 

import java.util.Date;

import java.sql.Date;

 

Date ahora = new Date();

 

 

     Esto nos daría inmediatamente un error de compilación ya que java no tiene ningún modo para reconocer a que clase se está refiriendo, pero sin embargo poniendo esto:

 

import java.util.Date;

import java.sql.Date;

 

java.util.Date ahora = new java.util.Date();

 

 

No nos daría ningún error de compilación.

 

 

¿Como crear paquetes?

 

     Antes de nada decir que crear un paquete no es mas dificil que crear por ejemplo una clase, la "norma" general para crear un paquete o al menos lo mas recomendable es ponerle el nombre de un dominio nuestro que tengamos solo que al rever, en mi caso pues si tengo un dominio que se llamase laotracaradelhacker.com pues el paquete es com.laotracaradelhacker, así, podemos asegurar que nuestro trabajo es único y evitamos que otros creen paquetes con el mismo nombre, aun que si solo es para crear un programa sin mas, tambien podemos utilizar un nombre que haga referencia a que se refiere ese paqeuete como musica, edition, o cosas así.

 

 

 

     Y para terminar, vamos a ver los controles de acceso a paquetes y clases. Las clases tienen el control de acceso por defecto si no se le indica otra cosa, esto significa que esta visible para las clases que estén dentro de su paquete, para utilizarlo, debemos definirlo como public;

 

public class visible {

    //Esta clase es visible.

}

 

 

     Bueno, esto es todo por hoy, en la próxima clase veremos a fondo las interfaces, que tambien es un punto importante de este curso.

Trabajar con Paquetes

bottom of page