lunes, 9 de septiembre de 2024

■ Java package

Al programar siempre se trata de organizar el código de la forma más clara y lo mejor estructurada posible, esto es para que el código sea fácil de leer, manipular, corregir y aumentar.

En los dos puntos anteriores de este apartado de Clases en Java, se ve cómo se puede organizar el código en diferentes clases, ya sea en un mismo archivo o en archivos distintos, siendo esta última la mejor opción para no saturar un único archivo con mucho código sino separarlo en archivos distintos con menos código.

Hasta este punto se ha visto cómo separar el código en archivos distintos para cada clase que componga nuestro proyecto, y aunque esto es una buena práctica todos esos archivos quedan en la misma carpeta, lo cual no es muy ordenado.

En Java hay una forma de organizar nuestros archivos (que contienen cada clase) por carpetas, digamos la clase principal quedaría en la carpeta raíz, y las clases secundarias pueden organizarse en subcarpetas donde cada subcarpeta será un "package", y en la clase principal basta con importar dicho package para poder usar sus clases.


Estructura de los archivos al usar package
  • En la carpeta del proyecto se debe crear el archivo .java que será nuestra clase principal.
  • En esa misma carpeta se debe crear una subcarpeta que será el package que contendrá las clases secundarias.

Suponiendo que nuestra clase principal se llamará "ClasePrincipal.java" y nuestro package (la subcarpeta que contendrá las clases secundarias) se llamará "OtrasClases", la estructura en la carpeta del proyecto se vería así:


  • Y dentro de la carpeta OtrasClases que representa al package, quedarían las clases secundarias:
Esta estructura de package solo nos ayuda a organizar nuestros archivos del proyecto, pero al código le tenemos que decir que nuestras clases secundarias están en otra carpeta, para ello en el código de cada clase secundaria debemos escribir:
    package <nombre_de_la_carpeta>;

Donde el nombre_de_la_carpeta es el mismo de la carpeta que contiene las clases, en este caso "OtrasClases", de esta forma le indicamos a cada clase secundaria a qué package pertenece. Para este ejemplo en cada clase secundaria pondríamos:
    package OtrasClases;


En la clase principal se debe especificar que se usarán las clases de la subcarpeta, es decir, lo que sería nuestro package. Esto se hace con la instrucción "import" bajo la siguiente estructura:
    import <nombre_de_la_carpeta>.<nombre_de_la_clase>;

Donde nombre_de_la_carpeta ya sabemos que se refiere al package y es la carpeta donde están guardadas las clases secundarias. Y nombre_de_la_clase se refiere a cada archivo .java guardado en esa carpeta, es decir, nuestras clases secundarias. En este ejemplo quedaría así:

    import OtrasClases.SegundaClase;
    import OtrasClases.TerceraClase;


Visto en código se vería así:

ClasePrincipal.java

import OtrasClases.SegundaClase;
import OtrasClases.TerceraClase;

public class ClasePrincipal {
    public static void main(String[] args) {
        // Se crean los objetos de las clases secundarias
        SegundaClase objetoSegundaClase = new SegundaClase();
        TerceraClase objetoTerceraClase = new TerceraClase();
    }
}

SegundaClase.java

package OtrasClases;

class SegundaClase {
    // Código
}

TerceraClase.java

package OtrasClases;

class TerceraClase {
    // Código
}


Y como ya debes imaginar, se pueden crear más carpetas junto a OtrasCarpetas para separar las clases en diferentes package, haciendo esto el funcionamiento es el mismo, para cada carpeta con sus clases, en la ClasePrincipal se debe hacer el import de cada package con sus clases.

Por ejemplo si crearamos otro package llamado "ClasesExtra" con una clase llamada "ClaseExtra1", los imports en ClasePrincipal quedarían así:

    import OtrasClases.SegundaClase;
    import OtrasClases.Terceraclase;
    import ClasesExtra.ClaseExtra1;

Donde "ClasesExtra" sería el nombre de la carpeta y "ClaseExtra1" sería el archivo .java guardado en esa carpeta y que contiene la clase que queremos usar.

No hay comentarios:

Publicar un comentario