Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Java - Paquets

Les packages sont utilisés en Java afin d'éviter les conflits de noms, de contrôler l'accès, de faciliter la recherche/localisation et l'utilisation des classes, des interfaces, des énumérations et des annotations, etc.

Un forfait peut être défini comme un regroupement de types associés (classes, interfaces, énumérations et annotations) fournissant une protection d'accès et une gestion des espaces de noms.

Certains des packages existants en Java sont −

Les programmeurs peuvent définir leurs propres packages pour regrouper des groupes de classes/interfaces, etc. Il est recommandé de regrouper les classes liées que vous implémentez afin qu'un programmeur puisse facilement déterminer que les classes, les interfaces, les énumérations et les annotations sont liées.

Étant donné que le package crée un nouvel espace de noms, il n'y aura pas de conflits de noms avec les noms d'autres packages. En utilisant des packages, il est plus facile de fournir un contrôle d'accès et il est également plus facile de localiser les classes associées.

Création d'un paquet

Lors de la création d'un package, vous devez choisir un nom pour le package et inclure un package avec ce nom en haut de chaque fichier source contenant les classes, les interfaces, les énumérations et les types d'annotation que vous souhaitez inclure dans le package.

L'instruction package doit être la première ligne du fichier source. Il ne peut y avoir qu'une seule instruction de package dans chaque fichier source, et elle s'applique à tous les types du fichier.

Si une instruction de package n'est pas utilisée, la classe, les interfaces, les énumérations et les types d'annotation seront placés dans le package par défaut actuel.

Pour compiler les programmes Java avec des instructions de package, vous devez utiliser l'option -d comme indiqué ci-dessous.

javac -d Destination_folder file_name.java

Ensuite, un dossier avec le nom de package donné est créé dans la destination spécifiée, et les fichiers de classe compilés seront placés dans ce dossier.

Exemple

Regardons un exemple qui crée un package appelé animaux . Il est recommandé d'utiliser des noms de packages avec des lettres minuscules pour éviter tout conflit avec les noms de classes et d'interfaces.

L'exemple de package suivant contient une interface nommée animaux

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

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

Maintenant, implémentons l'interface ci-dessus dans le même package animaux

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();
   }
} 

Compilez maintenant les fichiers java comme indiqué ci-dessous −

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

Maintenant un package/dossier avec le nom animaux seront créés dans le répertoire courant et ces fichiers de classe y seront placés comme indiqué ci-dessous.

Vous pouvez exécuter le fichier de classe dans le package et obtenir le résultat comme indiqué ci-dessous.

Mammal eats
Mammal travels

Le mot clé d'importation

Si une classe souhaite utiliser une autre classe dans le même package, le nom du package n'a pas besoin d'être utilisé. Les classes d'un même package se trouvent sans syntaxe particulière.

Exemple

Ici, une classe nommée Patron est ajoutée au package de paie qui contient déjà Employé. Le patron peut alors faire référence à la classe Employé sans utiliser le préfixe de la paie, comme le montre la classe Patron suivante.

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

Que se passe-t-il si la classe Employé n'est pas dans le package de paie ? La classe Boss doit alors utiliser l'une des techniques suivantes pour faire référence à une classe dans un package différent.

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

Remarque − Un fichier de classe peut contenir n'importe quel nombre d'instructions d'importation. Les déclarations d'importation doivent apparaître après la déclaration de package et avant la déclaration de classe.

La structure du répertoire des packages

Deux résultats majeurs se produisent lorsqu'une classe est placée dans un package −

Voici un moyen simple de gérer vos fichiers en Java −

Placez le code source d'une classe, d'une interface, d'une énumération ou d'un type d'annotation dans un fichier texte dont le nom est le nom simple du type et dont l'extension est .java .

Par exemple −

// File Name :  Car.java
package vehicle;

public class Car {
   // Class implementation.   
}

Maintenant, placez le fichier source dans un répertoire dont le nom reflète le nom du package auquel appartient la classe −

....\vehicle\Car.java

Maintenant, le nom de classe qualifié et le chemin d'accès seraient les suivants −

En général, une entreprise utilise son nom de domaine Internet inversé pour ses noms de packages.

Exemple − Le nom de domaine Internet d'une entreprise est apple.com, alors tous ses noms de packages commenceraient par com.apple. Chaque composant du nom du package correspond à un sous-répertoire.

Exemple − L'entreprise avait un package com.apple.computers qui contenait un fichier source Dell.java, il serait contenu dans une série de sous-répertoires comme celui-ci −

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

Au moment de la compilation, le compilateur crée un fichier de sortie différent pour chaque classe, interface et énumération qui y sont définies. Le nom de base du fichier de sortie est le nom du type et son extension est .class .

Par exemple −

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

public class Dell {
}

class Ups {
}

Maintenant, compilez ce fichier comme suit en utilisant l'option -d −

$javac -d . Dell.java

Les fichiers seront compilés comme suit −

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

Vous pouvez importer toutes les classes ou interfaces définies dans \com\apple\computers\ comme suit −

import com.apple.computers.*;

Comme les fichiers source .java, les fichiers .class compilés doivent se trouver dans une série de répertoires qui reflètent le nom du package. Cependant, le chemin d'accès aux fichiers .class ne doit pas nécessairement être le même que le chemin d'accès aux fichiers source .java. Vous pouvez organiser vos répertoires source et classe séparément, comme −

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

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

En faisant cela, il est possible de donner accès au répertoire des classes à d'autres programmeurs sans révéler vos sources. Vous devez également gérer les fichiers source et de classe de cette manière afin que le compilateur et la machine virtuelle Java (JVM) puissent trouver tous les types utilisés par votre programme.

Le chemin d'accès complet au répertoire des classes, \classes, est appelé le chemin d'accès aux classes et est défini avec la variable système CLASSPATH. Le compilateur et la JVM construisent le chemin vers vos fichiers .class en ajoutant le nom du package au chemin de classe.

Supposons que \classes est le chemin d'accès aux classes et que le nom du package est com.apple.computers, puis le compilateur et la JVM rechercheront les fichiers .class dans \classes\com\apple\computers.

Un chemin de classe peut inclure plusieurs chemins. Les chemins multiples doivent être séparés par un point-virgule (Windows) ou deux-points (Unix). Par défaut, le compilateur et la JVM recherchent le répertoire courant et le fichier JAR contenant les classes de la plateforme Java afin que ces répertoires soient automatiquement dans le chemin des classes.

Définir la variable système CLASSPATH

Pour afficher la variable CLASSPATH actuelle, utilisez les commandes suivantes sous Windows et UNIX (bourne shell) −

Pour supprimer le contenu actuel de la variable CLASSPATH, utilisez −

Pour définir la variable CLASSPATH −


Java

  1. Mot-clé Java final
  2. Opérateur instanceof Java
  3. Classe statique imbriquée Java
  4. Classe anonyme Java
  5. Classe Java Singleton
  6. Réflexion Java
  7. Classe Java ObjectOutputStream
  8. Génériques Java
  9. Classe de fichier Java