Vous êtes sur la page 1sur 5

Bienvenue sur OpenClassrooms !

En poursuivant votre navigation, vous acceptez l'utilisation de OK


cookies. En savoir plus


Accueil Cours Apprenez programmer en Java Les packages

Apprenez programmer en Java


40 heures
Difficile Licence

Les packages
Lorsque nous avons t confronts pour la premire fois aux packages, c'tait pour importer la classe
Scanner via l'instruction importjava.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
porte des classes Java.

Cration d'un package


L'un des avantages des packages est que nous allons y gagner en lisibilit dans notre package par
dfaut, 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 intressent !
Pour crer un nouveau package, cliquez simplement sur cette icne comme la figure suivante (vous
pouvez aussi effectuer un clic droit puis New>Package ).

Nouveau package

Une bote de dialogue va s'ouvrir et vous demander le nom de votre package, comme la figure
suivante.
Nom du package

Il existe aussi une convention de nommage pour les packages :

ceux-ci doivent tre crits entirement en minuscules ;


les caractres autoriss sont alphanumriques (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 prsent 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 Zro, 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 crer le package.
Et voil : celui-ci est prt l'emploi.

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 cration d'un package est trs simple. Cependant, je ne peux pas vous laisser
sans savoir que la porte de vos classes est affecte par les packages

Droits d'accs entre les packages


Lorsque vous avez cr votre premire classe, vous avez vu qu'Eclipse met systmatiquement le mot cl
public devant la dclaration de la classe. Je vous avais alors dit que publicclassVille et
classVille taient sensiblement diffrents et que le mot cl public influait sur la porte de
notre classe. En fait, une classe dclare avec le mot cl public sera visible mme l'extrieur de son
package, les autres ne seront accessibles que depuis l'intrieur du package : on dit que leur porte est
default .

Afin de vous prouver mes dires, je vous invite crer un second package : je l'ai appel com.sdz.test2 .
Dans le premier package, com.sdz.test , crez une classe A de porte public et une classe B
de porte default , comme ceci (j'ai volontairement dclar les variables d'instance public afin
d'allger l'exemple) :
java

java

Vous aurez remarqu que les classes contenues dans un package ont en toute premire
instruction la dclaration de ce package.

Maintenant que cela est fait, afin de faire le test, crez une classe contenant la mthode main , toujours
dans le mme package, comme ceci :
java

Ce code, bien qu'il ne fasse rien, fonctionne trs bien : aucun problme de compilation, entre autres.
Maintenant, faites un copier-coller de la classe ci-dessus dans le package com.sdz.test2 . Vous
devriez avoir le rsultat reprsent la figure suivante.
Problme de porte de classe

Vous pouvez constater qu'Eclipse n'aime ni l'instruction importcom.sdz.test.B , ni l'instruction


Bb=newB(); . Cela est d la dclaration de notre classe. J'irai mme plus loin : si vous essayez
de modifier la variable d'instance de l'objet A , vous aurez le mme problme. Donc, ceci :
a.b.str="toto"; n'est pas non plus autoris dans ce package ! La seule faon de corriger le
problme est de dclarer la classe B public . Rappelez-vous que seule la classe A avait t dclare
ainsi.

Un package est un ensemble de dossiers et de sous-dossiers.


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 dclares public sont visibles depuis l'extrieur du package qui les contient.
Les classes n'ayant pas t dclares public ne sont pas visibles depuis l'extrieur du package
qui les contient.
Si une classe dclare public dans son package a une variable d'un type ayant une porte
default , cette dernire ne pourra pas tre modifie depuis l'extrieur de son package.

Que pensez-vous de ce cours ?

J'ai termin ce chapitre et je passe au suivant

Modliser ses objets grce UML Les classes abstraites et les interfaces
Le professeur
Cyrille Herby
Spcialiste en dveloppement Java et curieux insatiable dinformatique et de programmation web.
Actuellement auditeur en scurit.

Dcouvrez aussi ce cours en...


Premium
eBook Livre papier PDF

OpenClassrooms Professionnels En plus


Qui sommes-nous ? Affiliation Crer un cours
Fonctionnement de nos coursPartenaires CourseLab
Recrutement For Business Conditions Gnrales d'Utilisation
Nous contacter Suivez-nous
Le blog OpenClassrooms

English Espaol