Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Java - Paquetes

Los paquetes se utilizan en Java para evitar conflictos de nombres, controlar el acceso, facilitar la búsqueda/ubicación y el uso de clases, interfaces, enumeraciones y anotaciones, etc.

Un paquete se puede definir como una agrupación de tipos relacionados (clases, interfaces, enumeraciones y anotaciones) que proporciona protección de acceso y gestión de espacios de nombres.

Algunos de los paquetes existentes en Java son −

Los programadores pueden definir sus propios paquetes para agrupar grupos de clases/interfaces, etc. Es una buena práctica agrupar clases relacionadas implementadas por usted para que un programador pueda determinar fácilmente que las clases, interfaces, enumeraciones y anotaciones están relacionadas.

Dado que el paquete crea un nuevo espacio de nombres, no habrá ningún conflicto de nombres con nombres en otros paquetes. Usando paquetes, es más fácil proporcionar control de acceso y también es más fácil localizar las clases relacionadas.

Creación de un paquete

Al crear un paquete, debe elegir un nombre para el paquete e incluir un paquete declaración junto con ese nombre en la parte superior de cada archivo fuente que contiene las clases, interfaces, enumeraciones y tipos de anotaciones que desea incluir en el paquete.

La declaración del paquete debe ser la primera línea en el archivo fuente. Solo puede haber una declaración de paquete en cada archivo fuente y se aplica a todos los tipos en el archivo.

Si no se utiliza una instrucción de paquete, la clase, las interfaces, las enumeraciones y los tipos de anotación se colocarán en el paquete predeterminado actual.

Para compilar los programas Java con declaraciones de paquetes, debe usar la opción -d como se muestra a continuación.

javac -d Destination_folder file_name.java

Luego, se crea una carpeta con el nombre de paquete dado en el destino especificado y los archivos de clase compilados se colocarán en esa carpeta.

Ejemplo

Veamos un ejemplo que crea un paquete llamado animales . Es una buena práctica usar nombres de paquetes con letras minúsculas para evitar conflictos con los nombres de clases e interfaces.

El siguiente paquete de ejemplo contiene una interfaz llamada animals

/* File name : Animal.java */
package animals;

interface Animal {
   public void eat();
   public void travel();
}

Ahora, implementemos la interfaz anterior en el mismo paquete animals

package animals;
/* File name : MammalInt.java */

public class MammalInt implements Animal {

   public void eat() {
      System.out.println("Mammal eats");
   }

   public void travel() {
      System.out.println("Mammal travels");
   } 

   public int noOfLegs() {
      return 0;
   }

   public static void main(String args[]) {
      MammalInt m = new MammalInt();
      m.eat();
      m.travel();
   }
} 

Ahora compile los archivos java como se muestra a continuación −

$ javac -d . Animal.java 
$ javac -d . MammalInt.java

Ahora un paquete/carpeta con el nombre animales se creará en el directorio actual y estos archivos de clase se colocarán en él como se muestra a continuación.

Puede ejecutar el archivo de clase dentro del paquete y obtener el resultado como se muestra a continuación.

Mammal eats
Mammal travels

La palabra clave de importación

Si una clase quiere usar otra clase en el mismo paquete, no es necesario usar el nombre del paquete. Las clases en el mismo paquete se encuentran entre sí sin ninguna sintaxis especial.

Ejemplo

Aquí, se agrega una clase denominada Boss al paquete de nómina que ya contiene Employee. Entonces, el Jefe puede hacer referencia a la clase Empleado sin utilizar el prefijo de nómina, como se demuestra en la siguiente clase Jefe.

package payroll;
public class Boss {
   public void payEmployee(Employee e) {
      e.mailCheck();
   }
}

¿Qué sucede si la clase Empleado no está en el paquete de nómina? Entonces, la clase Boss debe usar una de las siguientes técnicas para hacer referencia a una clase en un paquete diferente.

payroll.Employee
import payroll.*;
import payroll.Employee;

Nota − Un archivo de clase puede contener cualquier número de declaraciones de importación. Las declaraciones de importación deben aparecer después de la declaración del paquete y antes de la declaración de la clase.

La estructura de directorios de los paquetes

Dos resultados principales ocurren cuando una clase se coloca en un paquete:

Esta es una forma sencilla de administrar sus archivos en Java −

Coloque el código fuente de una clase, interfaz, enumeración o tipo de anotación en un archivo de texto cuyo nombre sea el nombre simple del tipo y cuya extensión sea .java .

Por ejemplo −

// File Name :  Car.java
package vehicle;

public class Car {
   // Class implementation.   
}

Ahora, coloque el archivo fuente en un directorio cuyo nombre refleje el nombre del paquete al que pertenece la clase −

....\vehicle\Car.java

Ahora, el nombre de la clase calificada y el nombre de la ruta serían los siguientes −

En general, una empresa utiliza su nombre de dominio de Internet invertido para los nombres de sus paquetes.

Ejemplo − El nombre de dominio de Internet de una empresa es apple.com, entonces todos los nombres de sus paquetes comenzarían con com.apple. Cada componente del nombre del paquete corresponde a un subdirectorio.

Ejemplo − La empresa tenía un paquete com.apple.computers que contenía un archivo fuente Dell.java, estaría contenido en una serie de subdirectorios como este −

....\com\apple\computers\Dell.java

En el momento de la compilación, el compilador crea un archivo de salida diferente para cada clase, interfaz y enumeración definida en él. El nombre base del archivo de salida es el nombre del tipo y su extensión es .class .

Por ejemplo −

// File Name: Dell.java
package com.apple.computers;

public class Dell {
}

class Ups {
}

Ahora, compile este archivo de la siguiente manera usando la opción -d −

$javac -d . Dell.java

Los archivos se compilarán de la siguiente manera −

.\com\apple\computers\Dell.class
.\com\apple\computers\Ups.class

Puede importar todas las clases o interfaces definidas en \com\apple\computers\ de la siguiente manera −

import com.apple.computers.*;

Al igual que los archivos fuente .java, los archivos .class compilados deben estar en una serie de directorios que reflejen el nombre del paquete. Sin embargo, la ruta a los archivos .class no tiene que ser la misma que la ruta a los archivos fuente .java. Puede organizar sus directorios fuente y clase por separado, como −

<path-one>\sources\com\apple\computers\Dell.java

<path-two>\classes\com\apple\computers\Dell.class

Al hacer esto, es posible dar acceso al directorio de clases a otros programadores sin revelar sus fuentes. También debe administrar los archivos fuente y de clase de esta manera para que el compilador y la máquina virtual Java (JVM) puedan encontrar todos los tipos que usa su programa.

La ruta completa al directorio de clases, \clases, se denomina ruta de clases y se establece con la variable de sistema CLASSPATH. Tanto el compilador como la JVM construyen la ruta a sus archivos .class agregando el nombre del paquete a la ruta de clase.

Digamos que \classes es la ruta de clases y el nombre del paquete es com.apple.computers, luego el compilador y JVM buscarán archivos .class en \clases\com\apple\computers.

Una ruta de clase puede incluir varias rutas. Las rutas múltiples deben estar separadas por un punto y coma (Windows) o dos puntos (Unix). De forma predeterminada, el compilador y la JVM buscan el directorio actual y el archivo JAR que contiene las clases de la plataforma Java para que estos directorios estén automáticamente en la ruta de clases.

Establecer variable de sistema CLASSPATH

Para mostrar la variable CLASSPATH actual, use los siguientes comandos en Windows y UNIX (Bourne shell) −

Para eliminar el contenido actual de la variable CLASSPATH, use −

Para configurar la variable CLASSPATH −


Java

  1. Paquete Python
  2. Palabra clave final de Java
  3. Operador de instancia de Java
  4. Herencia de Java
  5. Clase estática anidada de Java
  6. Clase anónima de Java
  7. Clase única de Java
  8. Reflexión Java
  9. Clase Java ObjectOutputStream
  10. Genéricos de Java
  11. Clase de archivo Java