Programmation Java/Extensions

Un livre de Wikilivres.
Aller à : navigation, rechercher


Les extensions, ou packages, permettent de grouper ensemble des classes rattachées, à la manière des dossiers qui permettent de classer des fichiers.

Utilisation[modifier | modifier le wikitexte]

Le fichier à inclure dans une extension doit contenir le mot-clé 'package' suivi du nom de l'extension.

Ce nom peut être composé de plusieurs mots séparés par un point ( . ).

Exemple[modifier | modifier le wikitexte]

pour inclure la classe Toto dans l'extension 'mesPackages.sousPackage1', écrire au début du fichier Toto.java :

package mesPackages.sousPackage1;
// ne pas oublier le point-virgule en fin de ligne

La structure des répertoires doit suivre le nom de l'extension, c'est-à-dire que le fichier Toto.java doit se situer dans un sous-répertoire mesPackages/sousPackage1/Toto.java.

Lorsqu'ensuite on désire utiliser la classe Toto depuis une autre classe, il faudra au préalable écrire :

import mesPackages.sousPackage1.Toto;

ou

import mesPackages.sousPackage1.*;
// importation de toutes les classes
// de l'extension mesPackage.sousPackage1

ou utiliser directement une référence à l'extension :

mesPackages.sousPackage1.Toto toto
    = new mesPackages.sousPackage1.Toto();

Remarques[modifier | modifier le wikitexte]

En Java, les programmeurs attribuent généralement un nom qui commence par une minuscule pour une extension, et un nom qui commence par une capitale pour une classe.

Les bibliothèques Java destinées à être distribuées regroupent leurs classes dans une ou plusieurs extensions dont le nom est normalement précédé par un nom de domaine (dans l'ordre inverse), par exemple :

package org.wikibooks.exemple;

Compilation[modifier | modifier le wikitexte]

L'utilisation d'une extension nécessite une structure des répertoires correspondant au nom de l'extension.

Par exemple, le fichier Toto.java définit la classe Toto de l'extension org.wikibooks.exemple débute par :

package org.wikibooks.exemple;
 
class Toto ...

et doit se situer dans le répertoire org/wikibooks/exemple.

Supposons que le chemin du fichier soit /home/me/javaprog/org/wikibooks/exemple/Toto.java. La compilation se fait en spécifiant le chemin du package racine (répertoire parent de org) comme classpath, et en spécifiant ensuite le chemin relatif à ce répertoire :

javac -classpath /home/me/javaprog org/wikibooks/exemple/Toto.java

Quand un programme Java utilise cette classe, il doit être compilé et exécuté en spécifiant /home/me/javaprog (package racine) pour le paramètre classpath, et le nom de la classe doit inclure le nom du package :

java -classpath /home/me/javaprog org.wikibooks.exemple.Toto

Import statique[modifier | modifier le wikitexte]

Pour utiliser les membres statiques publiques d'une classe, il faut nommer la classe où ils sont définis.

Exemple 1:

double r = Math.cos(Math.PI * theta);

L'import statique permet d'importer les membres statiques d'une classe afin de ne pas nommer la classe en question.

Exemple 1:

// importer le membre statique PI seulement
import static java.lang.Math.PI;
...
double r = Math.cos(PI * theta);

Exemple 2:

// importer tous les membres statiques de la classe java.lang.Math
import static java.lang.Math.*;
...
double r = cos(PI * theta);

L'abus d'import statique n'est pas conseillé car le code ne contient plus de référence à la classe définissant le membre statique utilisé. Il ne faut l'utiliser que si les membres statiques d'un petit nombre de classes sont utilisés fréquemment.