Les Packages

Computer Science, Java Programming · notes

Voir tous les documents en programmation

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/apprenez­a­programmer­en­java/les­packages

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/apprenez­a­programmer­en­java/les­packages

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/apprenez­a­programmer­en­java/les­packages

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/apprenez­a­programmer­en­java/les­packages

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

PDF

OpenClassrooms

Professionnels

Participez

Qui sommes-nous ?

Affiliation

Créer un cours

https://openclassrooms.com/courses/apprenez­a­programmer­en­java/les­packages

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/apprenez­a­programmer­en­java/les­packages

6/6