Java Medio 1: Clases y paquetes, organización en ficheros

Vamos a ver cómo organizar los programas Java, en clases u objetos como prefiramos llamarlos. Cómo dividir los códigos fuentes en distintos ficheros o cómo plantearse la creación de un programa bien grande estructurándolo para poder hacerlo poco a poco, repartiendo el trabajo o haciéndolo en partes más simples.

Todo son clases en Java, y estas clases se organizan packetes, llamados packages en inglés. Podemos crear clases a partir de otras clases utilizando el extends. Y cada clase la podemos separar individualmente en cada fichero. Por otro lado los paquetes de clases los podemos importar para usarlos en una clase mediante la instrucción import. Resumiendo ésto es todo, a continuación lo veremos explicado.


Cada fichero se debe nombrar con el nombre de la clase principal. Un ejemplo que nos va a servir para comprender varios conceptos es el siguiente:


package javaMedio;

import java.util.Date;

public class JavaMedio1ClasesPaquetes {

public static void main(String[] args) {
Persona p = new Persona();
p.nombre = “Pepito”;
p.escribir();
}

}

class Persona {
String nombre = new String();
Date fechaCreacion = new Date();

public void escribir() {
String aux = new String();
aux = “Objeto de tipo Persona con nombre: ” + nombre + “n” 
+ “Creado en fecha: ” + fechaCreacion;
System.out.println(aux);
}
}

Éste programa de aquí arriba debemos guardarlo en un fichero llamado JavaMedio1ClasesPaquetes.java para que funcione y no nos de error. Para empezar escribimos el paquete al que pertenece una clase mediante una línea como la que sigue:

package JavaMedio;

Podemos tener muchas clases dentro del paquete JavaMedio, y si queremos usar todas las clases del paquete en una nueva clase deberemos importar el paquete mediante la instrucción import. En el ejemplo, a continuación, vemos que se ha importado la clase fecha (Date en inglés), que está dentro del paquete de utilidades que proporciona Java de la siguiente manera:

import java.util.Date;

Si queremos importar todas las utilidades de Java, lo haríamos de la forma siguiente:

import java.util.*;

A continuación se declara la clase principal con la función main principal, porque es una aplicación de consola, es decir, se ejecuta en línea de comandos:


public class JavaMedio1ClasesPaquetes {

public static void main(String[] args) {
Persona p = new Persona();
p.nombre = “Pepito”;
p.escribir();
}

}

Podemos leer la clase JavaMedio1ClasesPaquetes es una clase pública, es así porque tiene el main. Y dentro del main tenemos que se declara la variable p de tipo Persona, se reserva memoria, se le pone el nombre Pepito y a continuación se llama a la función escribir() de la clase Persona.

Hay varios tipos de clases que son: abstract, final, public y synchronizable. Abstract son clases que se usan para hacer otras con ellas. Final son clases con las que no se pueden hacer otras a partir de ellas. Las public son las normales. Y las synchronizable son clases que no se pueden usar en paralelo desde dos hilos de ejecución distintos. Para más información sobre las clases de tipo synchronizable acudir a la programación multihilos de Java.

En la declaración de la clase Persona podemos ver que no es una clase pública, esto se hace así porque la he puesto dentro del mismo fichero, y no debe haber más que una clase pública en cada fichero. Vamos a analizar el código de la clase:


class Persona {
String nombre = new String();
Date fechaCreacion = new Date();

public void escribir() {
String aux = new String();
aux = “Objeto de tipo Persona con nombre: ” + nombre + “n” 
+ “Creado en fecha: ” + fechaCreacion;
System.out.println(aux);
}
}

Vemos que la clase Persona tiene dos variables: nombre y fechaCreacion. Y tiene una función pública: escribir(). La función lo que hace es escribir las variables internas de Persona. La variable nombre podemos acceder a ella desde fuera, es decir, es pública, como podemos observar en el main:

p.nombre = “Pepito”;

Ésta instrucción nos lo permite. Siempre que una variable no se le ponga el tipo de control de acceso permitido, se supone pública. Podríamos haber escrito mejor en la clase Persona:


class Persona {
public String nombre = new String();
public Date fechaCreacion = new Date();

Así estaría más claro el nivel de acceso desde fuera de la clase.

El control de acceso dentro de una clase se especifica mediante las palabras public, protected y private. Public indica que la variable o función se puede usar desde fuera. Private es lo contrario que public, protected indica que sólo acceder si la clase que accede es del mismo paquete.

Si queremos usar la clase Persona desde otras clases o ficheros deberíamos separar en un fichero la clase, quedaría un fichero llamado Persona.java que tendría lo siguiente:

package javaMedio;

import java.util.Date;

public class Persona {
public String nombre = new String();
public Date fechaCreacion = new Date();

public void escribir() {
String aux = new String();
aux = “Objeto de tipo Persona con nombre: ” + nombre + “n”
+ “Creado en fecha: ” + fechaCreacion;
System.out.println(aux);
}

}

Entonces el primer fichero llamado JavaMedio1ClasesPaquetes.java quedaría:
package javaMedio;

public class JavaMedio1ClasesPaquetes {

public static void main(String[] args) {
Persona p = new Persona();
p.nombre = “Pepito”;
p.escribir();
}

}

Podemos ver que tanto la clase JavaMedio1ClasesPaquetes como Persona están en el mismo paquete, entonces para usar Persona en el fichero JavaMedio1ClasesPaquetes.java no hace falta usar el import.

Para terminar, saber que algunos de los paquetes principales que proporciona Java son los siguientes para el que quiera continuar investigando:

java.applet Para la creación de Applets.
java.io Para manejo de la entrada y salida.
java.lang Paquete de clases variadas.
java.net Aquí tenemos clases que usan TCP/IP.
java.util Utilidades variadas.
java.awt Para hacer interfaces de usuario con botones, ventanas, etcétera.
java.swing Más compatible con los distintos Sistemas Operativos que la AWT, yo usaría ésta en vez de la AWT porque te aseguras de que tu programa va a funcionar en más plataformas.

Por ahora queda terminado este minitutorial sobre clases y paquetes.
Saludos;}

Compartir..

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *