Java: organizando el código fuente en paquetes, directorios, ficheros y clases

2021-12-19 - Categorías: Java
Java

Sencillo codekata, apunte, resumen, o como queramos llamarlo, sobre cómo funciona la organización del código fuente en paquetes de Java. Esto se hace a base de nombres de directorios y ficheros. Es decir, un directorio es un package. Dentro de cada directorio, cada clase puede tener visibilidad de su mismo directorio o subdirectorios. Se organizan a base de la concatenación de nombres de directorio con subdirectorios y ficheros. Aparte de esto, dentro de cada fichero .java, debe haber una clase con el mismo nombre.

Sin más teoría, vamos al grano.. que es más fácil verlo con código.

Código fuente

Una estructura podría ser:

  • package1/
  • package1/sub1/
  • package1/sub1/ClassSub1.java
  • package1/Class1.java
  • package2/Class2.java

Las clases se establecen normalmente con nombres en Camel Case primera en mayúsculas. Los nombres de paquete en minúsculas. Dentro de cada fichero se establecen los llamados paquetes con la palabra package, y si se quiere acceder desde otro fichero se usa la palabra reservada import para tener visibilidad. Lo mismo se usa para los paquetes propios de Java que para los propios del proyecto.

Si por ejemplo desde Class2.java se quiere acceder a las clases del paquete package1 se haría tal que así:

package package2;

//import package1.Class1;
//import package1.sub1.ClassSub1;
import package1.*;
import package1.sub1.*;

public class Class2 {
    public static void main(String[] args) {
        Class1 class1 = new Class1();

        class1.printSomething();

        ClassSub1 sub1 = new ClassSub1();

        sub1.printSomething();
    }
}

Es opcional importar clase a clase o importar directorios completos. La importación de un directorio no implica los subdirectorios.

Contenido del Class1.java:

package package1;

public class Class1 {
    public void printSomething() {
        System.out.println("Something");
    }
}

Contenido del ClassSub1.java:

package package1.sub1;

public class ClassSub1 {
    public void printSomething() {
        System.out.println("Something");
    }
}

Resultado ejecutando:

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

 

© 2022 JnjSite.com - MIT license

Sitio hecho con WordPress, diseño y programación del tema por Jnj.