30/12/2015
Les packages
Accueil
Cours
Apprenez à programmer en Java
Les packages
Apprenez à programmer en Java
40 heures Difficile
Licence
LES PACKAGES
Lorsque nous avons été confrontés pour la première fois aux packages, c'était pour importer la classe Scanner via l'instruction import java.util.Scanner; . Le fonctionnement des packages est simple à comprendre : ce sont comme des dossiers permettant de ranger nos classes. Charger un package nous permet d'utiliser les classes qu'il contient.
Il n'y aura rien de franchement compliqué dans ce chapitre si ce n'est que nous reparlerons un peu de la portée des classes Java.
Création d'un package
L'un des avantages des packages est que nous allons y gagner en lisibilité dans notre package par défaut, mais aussi que les classes mises dans un package sont plus facilement transportables d'une application à l'autre. Pour cela, il vous suffit d'inclure le dossier de votre package dans un projet et d'y importer les classes qui vous intéressent ! Pour créer un nouveau package, cliquez simplement sur cette icône comme à la figure suivante (vous pouvez aussi effectuer un clic droit puis New > Package ).
Une boîte de dialogue va s'ouvrir et vous demander le nom de votre package, comme à la figure suivante.
Nouveau package
https://openclassrooms.com/courses/apprenezaprogrammerenjava/lespackages
1/6
30/12/2015
Les packages
Nom du package
Il existe aussi une convention de nommage pour les packages :
ceux-ci doivent être écrits entièrement en minuscules ;
les caractères autorisés sont alphanumériques (de a à z, de 0 à 9) et peuvent contenir des points (.) ;
tout package doit commencer par com, edu, gov, mil, net, org ou les deux lettres identifiant un pays (ISO Standard 3166, 1981) ; « fr » correspond à la France, « en » correspond à l'Angleterre (pour England)etc.
aucun mot clé Java ne doit être présent dans le nom, sauf si vous le faites suivre d'un underscore (« _ »), comme ceci : com.sdz.package_ .
Comme ce cours est issu du Site du Zéro, j'ai pris le nom à l'envers : « sdz.com » nous donne « com.sdz ». Pour le cas qui nous occupe, appelons-le com.sdz.test . Cliquez sur Finish pour créer le package. Et voilà : celui-ci est prêt à l'emploi.
Publicité
Je vous invite à aller voir dans le dossier où se trouvent vos codes sources : vous constaterez qu'il y a l'arborescence du dossier com/sdz/test dans votre dossier src .
Vous conviendrez que la création d'un package est très simple. Cependant, je ne peux pas vous laisser sans savoir que la portée de vos classes est affectée par les packages…
Droits d'accès entre les packages
Lorsque vous avez créé votre première classe, vous avez vu qu'Eclipse met systématiquement le mot clé public devant la déclaration de la classe. Je vous avais alors dit que public class Ville et class Ville étaient
https://openclassrooms.com/courses/apprenezaprogrammerenjava/lespackages
2/6
30/12/2015
Les packages
sensiblement différents et que le mot clé public influait sur la portée de notre classe. En fait, une classe déclarée avec le mot clé public sera visible même à l'extérieur de son package, les autres ne seront accessibles que depuis l'intérieur du package : on dit que leur portée est default .
Afin de vous prouver mes dires, je vous invite à créer un second package : je l'ai appelé « com.sdz.test2 ». Dans le premier package, com.sdz.test , créez une classe A de portée public et une classe B de portée default , comme ceci (j'ai volontairement déclaré les variables d'instance public afin d'alléger l'exemple) :
1 2 3 4 5
1 2 3 4 5
package com.sdz.test;
class B { public String str =""; }
package com.sdz.test;
public class A { public B b = new B(); }
Vous aurez remarqué que les classes contenues dans un package ont en toute première instruction la
déclaration de ce package.
Maintenant que cela est fait, afin de faire le test, créez une classe contenant la méthode main , toujours dans le même package, comme ceci :
1 2 3 4 5 6 7 8 9
package com.sdz.test;
public class Main { public static void main(String[] args){ A a = new A(); B b = new B(); //Aucun problème ici } }
Ce code, bien qu'il ne fasse rien, fonctionne très bien : aucun problème de compilation, entre autres. Maintenant, faites un copier-coller de la classe ci-dessus dans le package com.sdz.test2 . Vous devriez avoir le résultat représenté à la figure suivante.
java
java
java
https://openclassrooms.com/courses/apprenezaprogrammerenjava/lespackages
3/6
30/12/2015
Les packages
Problème de portée de classe
Vous pouvez constater qu'Eclipse n'aime ni l'instruction import com.sdz.test.B , ni l'instruction B b = new B(); . Cela est dû à la déclaration de notre classe. J'irai même plus loin : si vous essayez de modifier la variable d'instance de l'objet A , vous aurez le même problème. Donc, ceci : a.b.str = "toto"; n'est pas non plus autorisé dans ce package ! La seule façon de corriger le problème est de déclarer la classe B public . Rappelez- vous que seule la classe A avait été déclarée ainsi.
Un package est un ensemble de dossiers et de sous-dossiers.
Publicité
Le nom du package est soumis à une convention de nommage.
Si vous voulez utiliser un mot clé Java dans le nom de votre package, vous devez le faire suivre d'un underscore (« _ »).
Les classes déclarées public sont visibles depuis l'extérieur du package qui les contient.
Les classes n'ayant pas été déclarées public ne sont pas visibles depuis l'extérieur du package qui les contient.
Si une classe déclarée public dans son package a une variable d'un type ayant une portée default , cette dernière ne pourra pas être modifiée depuis l'extérieur de son package.
J'ai terminé ce chapitre et je passe au suivant
Modéliser ses objets grâce à UML
Les classes abstraites et les interfaces
Se désinscrire de ce cours
Comment ça marche ?
Java Orienté Objet
1. Votre première classe
2. L'héritage 3. Modéliser ses objets grâce à UML
4. Les packages
5. Les classes abstraites et les interfaces
6. Les exceptions
7. Les énumérations
https://openclassrooms.com/courses/apprenezaprogrammerenjava/lespackages
4/6
30/12/2015
Les packages
8. Les collections d'objets 9. La généricité en Java
10. Les flux d'entrée/sortie 11. Java et la réflexivité
Activité : Réalisez un garage
Quiz
Accéder au forum
Créé par
OpenClassrooms, 1ère plateforme e-Education en Europe
L'auteur
Publicité
Cyrille Herby
Spécialiste en développement Java et curieux insatiable d’informatique et de programmation web. Actuellement auditeur en sécurité.
Découvrez aussi ce cours en...
Premium
Premium
eBook
Livre papier
OpenClassrooms
Professionnels
Participez
Qui sommes-nous ?
Affiliation
Créer un cours
https://openclassrooms.com/courses/apprenezaprogrammerenjava/lespackages
5/6
30/12/2015
Les packages
Fonctionnement de nos cours
Entreprises
CourseLab
Recrutement
Nous contacter
Suivez-nous
Le blog OpenClassrooms
Universités et écoles
Aider à traduire
Conditions Générales d'Utilisation
https://openclassrooms.com/courses/apprenezaprogrammerenjava/lespackages
6/6