La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

F. Voisin : Introduction à Java 1 Introduction à Java - les paquetages - Frédéric VOISIN FIIFO - « Remise à Niveau »

Présentations similaires


Présentation au sujet: "F. Voisin : Introduction à Java 1 Introduction à Java - les paquetages - Frédéric VOISIN FIIFO - « Remise à Niveau »"— Transcription de la présentation:

1 F. Voisin : Introduction à Java 1 Introduction à Java - les paquetages - Frédéric VOISIN FIIFO - « Remise à Niveau »

2 F. Voisin : Introduction à Java 2 Les paquetages n Les équivalents Java des « librairies », i.e. des classes qui « vont ensemble » : u la hiérarchie java: java.lang, java.io, java.util, java.awt, java.rmi, … u dautres hiérarchies de paquetages: javax.*, org.*, sun.*, … n Dans un même paquetage ? u des composants « reliés » logiquement (fonctionnellement) u des classes qui doivent être implémentées « en même temps » : elles ne sont pas indépendantes sans être (forcément) liées par une relation dhéritage ! u un paquetage définit un niveau de visibilité supplémentaire : les classes dun même paquetage peuvent accéder de façon sélective à certains composants, indépendamment de tout relation dhéritage. n Ils permettent de gérer des « espaces de nommage »: u Éviter des conflits de noms (importation et/ou nommage explicite) u Structurer les bibliothèques de classes

3 F. Voisin : Introduction à Java 3 Les paquetages (suite) n On peut déclarer explicitement un paquetage de rattachement package dates; // ce qui suit appartient au paquetage dates ! // Convention : nom de paquetage en minuscules class RnDate {... } Attention: la déclaration de paquetage doit alors être la première instruction du fichier ! n Il existe un paquetage par défaut, si on nen indique pas explicitement u le paquetage « anonyme » u Cest celui quon a utilisé jusquà présent pour toutes nos classes : toutes nos classes appartenaient au même paquetage. n Un paquetage peut avoir des sous-paquetages package dates.gregorien ; Il faudra respecter une correspondance entre la structure en paquetages et larborescence des fichiers… Attention aussi à la variable CLASSPATH !

4 F. Voisin : Introduction à Java 4 Paquetages et espace de nommage n On peut toujours identifier une classe (publique) en la préfixant par son nom de paquetage java.util.ArrayList L = new java.util.ArrayList(); dates.RnDate maDate = new date.RnDate(); n Par défaut, son nom simple nest utilisable quà lintérieur de son paquetage package dates; // on se place dans le paquetage dates !... RnDate maDate = new RnDate(); n Les règles importations sont là pour autoriser la notation abrégée: import java.util.ArrayList; // importe la classe ArrayList ArrayList L = new ArrayList(); // autorisé: notation abrégée java.util.ArrayList L = new java.util.ArrayList(); // reste OK ! import java.util.*; // importe toutes les classes de java.util // nimporte pas les sous-paquetages !

5 F. Voisin : Introduction à Java 5 Paquetages et espace de nommage (suite) n Si on gère mal les importations, on peut avoir des conflits de noms quon résout par la notation qualifiée (explicite) : import paquetage1.*; // définit une classe maClasse import paquetage2.*; // définit une classe maClasse maClasse C = new maClasse(); // ambigu => refusé par le compilateur paquetage1.maClasse C = new paquetage1.maClasse(); // OK ! Par convention, toutes les classes et sous-paquetages de java.lang sont implicitement importés. Ne pas confondre directives dimportation Java et « include » à la C : « import » fournit une facilité dabréviation pour les noms des classes Retrouver la description de la classe relève de la gestion du CLASSPATH !

6 F. Voisin : Introduction à Java 6 Paquetage et visibilité Si on ne spécifie pas un niveau de visibilité explicite ( public, private, protected ), un membre est visible à lintérieur de son paquetage, que ce soit dans le même fichier ou non (visibilité « paquetage » ou « friend » par analogie avec C++) = cest la visibilité par défaut ! Pour une classe, les seules visibilités sont public et « paquetage ». Par défaut une classe nest donc visible que dans son paquetage. La visibilité protected est moins restrictive que « paquetage » : un champ protected est visible dans tout le paquetage indépendamment des relations dhéritage. n Pour quun champ soit visible, sa classe doit elle-même lêtre…

7 F. Voisin : Introduction à Java 7 Paquetage et visibilité (suite) Attention: on ne peut pas interdire que quelquun se place dans un paquetage donné, et donc bénéficie de la visibilité « paquetage » (et protected !). Pour vraiment encapsuler un champ, il faut le déclarer private. Champs private : on peut prévoir des méthodes public / protected ou encore « paquetage » pour y accéder en contrôlant lusage qui en est fait (ex: contrôler la valeur mise dans un champ). n Ne pas confondre règles de visibilité (qui a le droit de voir quoi) et règles dimportation (comment nomme-t-on la classe)

8 F. Voisin : Introduction à Java 8 package p1; public class A { public int pub; protected int prot; int paq; private int priv; } package p1; class D extends A {…} package p1; class C { … } paquetage p1 package p2; import p1.A; class B extends A { … } package p2; import p1.A; class E{…} paquetage p2 Exemple: Tableau des visibilités

9 F. Voisin : Introduction à Java 9 Exemple (suite) : Tableau des visibilités Daprès « Java et Internet: Concepts et Programmation », G. Roussel et E. Duris, Vuibert, 2000 pubprotpaqpriv class A OK class B OK class C OK class D OK class E OK

10 F. Voisin : Introduction à Java 10 Paquetages et structuration en fichiers (rappels) n Il doit y avoir une correspondance entre le découpage en paquetages et lorganisation en répertoires des fichiers u Permet de retrouver dynamiquement le fichier qui contient le bytecode dune classe u Important pour le téléchargement de classes ! A lexécution, la classe de nom pack1.pack2.maClasse doit se trouver dans une sous-arborescence se terminant par pack1/pack2/MaClasse.class (sous Unix) ou dans une archive.jar. Le tout est relatif au contenu de la variable CLASSPATH qui précise les répertoires à parcourir… ;-( Pas toujours évident de savoir où on trouve une classe ;-( pas toujours évident de savoir si les autres trouveront bien la même classe (même problème que pour le PATH Unix !)

11 F. Voisin : Introduction à Java 11 Paquetages et structuration en fichiers (suite) n Attention : au plus une unité (classe, interface) publique par fichier ! n Un paquetage peut être éclaté sur plusieurs fichiers et peut contenir plusieurs unités publiques et des unités non publiques. Un fichier.class par unité (publique ou non) n Convention: pour avoir un nom de paquetage réellement unique, on le préfixe par son nom de domaine Internet renversé… Important pour les paquetages mis à disposition sur le réseau et partagé ! ex: com.sun.image.codec.jpeg On peut regrouper un ensemble de fichiers.class dans un fichier darchive suffixé par.jar et créé par le gestionnaire darchives jar. Un tel fichier darchive peut aussi être mis dans la variable CLASSPATH


Télécharger ppt "F. Voisin : Introduction à Java 1 Introduction à Java - les paquetages - Frédéric VOISIN FIIFO - « Remise à Niveau »"

Présentations similaires


Annonces Google