me ayudan con esta app de java
Publicado por
SinRostro (1 intervención) el 15/10/2019 20:09:19
Buenas tardes
QUÉ SON PAQUETES EN JAVA
Cuando hacemos programas más grandes, es normal que el número de clases vaya creciendo. Cada vez tenemos más y más clases. Meterlas todas en el mismo directorio no suele ser bonito. Es mejor hacer grupos de clases, de forma que todas las clases que traten de un determinado tema o estén relacionadas entre sí vayan juntas. Por ejemplo, si hacemos un programa de una agenda de teléfonos que los guarde en una base de datos, podemo meter todas las clases que tratan con la base de datos en un paquete (grupo), todas las de ventanas en otro, las de imprimir en otro, etc, etc.
Un paquete de clases es un grupo de clases que agrupamos juntas porque consideramos que están relacionadas entre sí o tratan de un tema común.
LA CLASE HOLA MUNDO EN UN PAQUETE
Java nos ayuda a organizar las clases en paquetes. En cada fichero .java que hagamos, al principio, podemos indicar a qué paquete pertenece la clase que hagamos en ese fichero.
Por ejemplo, si decidimos agrupar nuestros programas de pruebas, incluido el Hola Mundo, en un paquete "prueba", pondríamos esto en nuestro fichero HolaMundo.java
package prueba;
public class HolaMundo
{
public static void main (String [ ] args)
{
System.out.println ("Hola mundo");
}
}
El código es exactamente igual al de nuestro Hola Mundo original, pero hemos añadido la línea "package prueba;" al principio.
Hasta aquí todo correcto. Sin embargo, al hacer esto, para que todo funcione bien, java nos obliga a organizar los directorios, compilar y ejecutar de cierta forma.
ESTRUCTURA DE DIRECTORIOS ASOCIADA
Si hacemos que HolaMundo.java pertenezca al paquete prueba, java nos obliga a crear un subdirectorio "prueba" y meter el HolaMundo.java ahí.
Es decir, debemos tener esto así (unix y windows)
/<directorio_usuario>/mi_proyecto_HolaMundo/prueba/HolaMundo.java
C:\<directorio_usuario>\mi_proyecto_HolaMundo\prueba\HolaMundo.java
Nuevamente, las mayúsculas y minúsculas son importantes. Tal cual lo pongamos en "package", debemos poner el nombre del subdirectorio.
COMPILAR UNA CLASE QUE ESTÁ EN UN PAQUETE
Para compilar la clase que está en el paquete debemos situarnos en el directorio padre del paquete y compilar desde ahí
$ cd /<directorio_usuario>/mi_proyecto_HolaMundo
$ javac prueba/HolaMundo.java
C:\> cd C:\<directorio_usuario>\mi_proyecto_HolaMundo
C:\> javac prueba\HolaMundo.java
Si todo va bien, en el directorio "prueba" se nos creará un HolaMundo.class
EJECUTAR UNA CLASE QUE ESTÁ EN UN PAQUETE
Una vez generado el HolaMundo.class en el directorio prueba, para ejecutarlo debemos estar situados en el directorio padre de "prueba". El nombre "completo" de la clase es "paquete.clase", es decir "prueba.HolaMundo". Por ello, para ejecutar, debemos hacerlo así
$ cd /<directorio_usuario>/mi_proyecto_HolaMundo
$ java prueba.HolaMundo
Hola Mundo
C:\> cd C:\<directorio_usuario>\mi_proyecto_HolaMundo
C:\> java prueba.HolaMundo
Hola Mundo
Si todo va como debe, debería salir "Hola Mundo" en la pantalla
EL CLASSPATH CUANDO LAS CLASES ESTÁN EN PAQUETES
Cuando las clases están en paquetes, la variable CLASSPATH debe ponerse de tal forma que encuentre el paquete, NO la clase. Es decir, en nuestro ejemplo
$ CLASSPATH=/<directorio_usuario>/mi_proyecto_HolaMundo
$ export CLASSPATH
$ java prueba.HolaMundo
Hola Mundo
C:\> set CLASSPATH="C:\<directorio_usuario>\mi_proyecto_HolaMundo"
C:\> java prueba.HolaMundo
Hola Mundo
o bien, si usamos la opción -cp en la línea de comandos
$ java -cp /<directorio_usuario>/mi_proyecto_HolaMundo prueba.HolaMundo
Hola Mundo
C:\> java -cp "C:\<directorio_usuario>\mi_proyecto_HolaMundo" prueba.HolaMundo
Hola Mundo
PAQUETES ANIDADOS
Para poder organizar mejor las cosas, java permite hacer subpaquetes de los paquetes y subpaquetes de los subpaquetes y así sucesivamente. Por ejemplo, si quiero partir mis clases de prueba en pruebas básicas y pruebas avanzadas, puedo poner más niveles de paquetes separando por puntos
package prueba.basicas;
...
package prueba.avanzadas;
...
A nivel de subdirectorios tendría que crear los subdirectorios "basicas" y "avanzadas" debajo de "prueba" y meter ahí las clases que correspondan. Para compilar, en el directorio del proyecto habria que compilar poniendo todo el path hasta llegar a la clase. Idem para el CLASSPATH. Para ejecutar, el nombre de la clase va con todos los paquetes separados por puntos, es decir "prueba.basicas.HolaMundo" y "prueba.avanzadas.HolaMundoRemoto".
Es decir:
/<directorio_usuario>/mi_proyecto_HolaMundo/prueba/basicas/HolaMundo.java
$ cd /<directorio_usuario>/mi_proyecto_HolaMundo
$ javac prueba/basicas/HolaMundo.java
$ java -cp /<directorio_usuario>/mi_proyecto_HolaMundo prueba.basicas.HolaMundo
Hola Mundo
C:\<directorio_usuario>\mi_proyecto_HolaMundo\prueba\basicas\HolaMundo.java
C:\> cd C:\<directorio_usuario>\mi_proyecto_HolaMundo
C:\> javac prueba\basicas\HolaMundo.java
C:\> java -cp C:\<directorio_usuario>\mi_proyecto_HolaMundo prueba.basicas.HolaMundo
Hola Mundo