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

Packages Java : Gestion des espaces de noms, accès et organisation du code

Les packages Java servent à : éviter les conflits de noms, contrôler l'accès, faciliter la recherche/localisation des classes, interfaces, énumérations et annotations.

Un package regroupe des types liés (classes, interfaces, énumérations, annotations) en fournissant protection d'accès et gestion d'espace de noms.

Packages standards

Les programmeurs peuvent créer leurs propres packages pour regrouper leurs classes liées.

Créer un package

  1. Choisir un nom (convention : minuscules, ex: com.monentreprise.projet)
  2. Ajouter package nomPackage; en première ligne de chaque fichier source
  3. Un seul package par fichier, s'applique à tous les types du fichier
  4. Sans package → package par défaut (sans nom)

Compilation avec -d


javac -d DossierDestination fichier.java

Crée un dossier avec le nom du package dans la destination, y place les fichiers .class.

Exemple : package animals


/* Animal.java */
package animals;

interface Animal {
    public void manger();
    public void voyager();
}

/* MammifereImpl.java */
package animals;

public class MammifereImpl implements Animal {
    public void manger() { System.out.println("Mammifère mange"); }
    public void voyager() { System.out.println("Mammifère voyage"); }
    public int nombrePattes() { return 0; }
    
    public static void main(String args[]) {
        MammifereImpl m = new MammifereImpl();
        m.manger(); m.voyager();
    }
}

Compilation


$ javac -d . Animal.java
$ javac -d . MammifereImpl.java

Crée le dossier animals/ avec les .class dedans.

Mot-clé import

Classes du même package : accès direct sans préfixe.

Classes de packages différents

Trois options :

  1. Nom pleinement qualifié : paquetage.Classe
  2. Import avec wildcard : import paquetage.*;
  3. Import classe unique : import paquetage.Classe;

Note : Les import viennent après package et avant la déclaration de classe.

Structure de répertoires des packages

Deux conséquences :

  1. Le nom du package fait partie du nom qualifié de la classe
  2. Le nom du package doit correspondre à la structure de répertoires du bytecode

Organisation recommandée


// Fichier source
// File Name : Car.java
package vehicle;
public class Car { }

// Arborescence source
....\vehicle\Car.java

// Nom qualifié → vehicle.Car
// Chemin → vehicle\Car.java (Windows)

Convention : nom de domaine inversé

Ex: domaine apple.com → packages com.apple.*


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

Compilation avec -d


$ javac -d . Dell.java
// Génère :
.\com\apple\computers\Dell.class
.\com\apple\computers\Ups.class

Import wildcard


import com.apple.computers.*;

Séparation sources / classes


\sources\com\apple\computers\Dell.java
\classes\com\apple\computers\Dell.class

Avantages : partager classes/ sans révéler sources/. Le compilateur et la JVM trouvent les .class via le classpath.

Variable d'environnement CLASSPATH

Chemin complet vers le dossier classes/. Le compilateur/JVM ajoutent le nom du package au classpath pour trouver les .class.

Exemple : classpath = /home/user/classes, package = com.apple.computers → recherche dans /home/user/classes/com/apple/computers.

Séparateurs : ; (Windows), : (Unix). Par défaut : répertoire courant + JAR plateforme Java.

Commandes CLASSPATH

ActionWindowsUnix (Bourne)
Afficherset CLASSPATHecho $CLASSPATH
Viderset CLASSPATH=unset CLASSPATH; export CLASSPATH
Définirset CLASSPATH=C:\users\jack\java\classesCLASSPATH=/home/jack/java/classes; export CLASSPATH

Java

  1. Comprendre le mot-clé final en Java : variables, méthodes et classes
  2. L'opérateur instanceof en Java : guide complet
  3. Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
  4. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  5. Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
  6. Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
  7. Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques
  8. Maîtriser les génériques Java : Construire du code réutilisable et type-safe
  9. Maîtriser les opérations sur les fichiers Java avec java.io – Création, lecture, écriture et suppression