Structure d`un projet et paquetages Paquetages Quelques

1
Structure d’un projet
et paquetages
Université de Nice - Sophia Antipolis
Richard Grin
Version 1.1.2 – 10/11/10
Paquetages
Richard Grin Paquetages page 2
Les classes qui sont liées et/ou qui traitent un
même point peuvent être regroupées en un
paquetage
Le JDK contient de nombreux paquetages
Richard Grin Paquetages page 3
Quelques paquetages du JDK
java.lang : paquetage qui contient le cœur du
langage Java, les classes les plus utilisées
(String, Math,…)
java.io : contient les classes qui permettent de
lire et d’écrire dans des fichiers (in/out)
java.awt : pour créer et utiliser des formulaires
pour la saisie de données par l’utilisateur
(abstract window toolkit)
java.sql : pour lancer des requêtes SQL
Richard Grin Paquetages page 4
Nom complet d’une classe
Le nom complet d’une classe contient le nom du
paquetage à laquelle elle appartient
Exemple : java.lang.Math,
java.lang.String, java.sql.Statement
Il est ainsi possible de distinguer 2 classes qui ont
le même nom mais qui n’appartiennent pas au
même paquetage
Exemple : java.awt.List (liste déroulante
utilisée dans les interfaces graphiques),
java.util.List (liste d’objet)
Richard Grin Paquetages page 5
Paquetage java.lang
Les classes de ce paquetage peuvent être
désignées sans les préfixer par leur nom de
paquetage :
double x = Math.cos(1.2);
Richard Grin Paquetages page 6
2
Importation d’une classe
Les classes des autres paquetages doivent être
désignées par leur nom complet
Pour éviter d’alourdir le code par des noms de
classes trop long, il est possible d’indiquer dans une
instruction « import » le nom complet d’une classe
qu’on va utiliser
Exemple :
import java.util.List;
Le code pourra alors utiliser la classe « importée »
sans préfixer son nom par le nom de son paquetage
Richard Grin Paquetages page 7
Exemple, sans import
public class Machin {
java.util.List liste = …
}
Richard Grin Paquetages page 8
Exemple, avec import
import java.util.List;
public class Machin {
List liste = …
}
Richard Grin Paquetages page 9
Importer toutes les classes
d’un paquetage
import java.util.*;
importe toutes les classes du paquetage java.util
Richard Grin Paquetages page 10
Mettre une classe dans un paquetage
Pour mettre une classe dans un paquetage il
suffit d’ajouter au début du code une instruction
indiquant le nom du paquetage :
package fr.unice.monpaquetage;
Cette ligne doit être placée avant toute autre
ligne, même avant les éventuels imports
Richard Grin Paquetages page 11
Paquetage par défaut
Par défaut une classe appartient au « paquetage
par défaut »
Ce paquetage
n’a pas de nom
toutes les classes qui sont dans le même
répertoire y appartiennent (sauf celles qui
appartiennent à un paquetage particulier)
Richard Grin Paquetages page 12
3
Nom d’un paquetage
Une convention est de mettre le nom en
minuscules
Pour éviter que ses classes aient le même nom
qu’une autre classe écrite par un autre, il vaut
mieux respecter aussi la convention suivante :
nom hiérarchique qui permet d’identifier le
paquetage parmi tous les autres paquetages
écrits par les autres développeurs :
package fr.unice.toto.liste;
Richard Grin Paquetages page 13
Exemple de classe
package fr.unice.du.toto.calculs;
import du.util.Console;
import java.util.Arrays;
public class GrosCalculs {
...
}
Richard Grin Paquetages page 14
Le
classpath
Indique où se trouvent les classes
Par défaut, c’est le répertoire courant
On peut indiquer un autre classpath avec l’option
-classpath des commandes javac et java
Le classpath peut contenir plusieurs répertoires
(on verra dans un autre cours qu’il peut aussi
contenir des fichiers compressés) :
java –classpath rep1/rep2:rep3:. …
Richard Grin Paquetages page 15
Positionnement des classes
d’un paquetage
Les fichiers .class doivent se situer dans
l’arborescence d’un des répertoires du classpath
Le nom relatif du répertoire par rapport au
répertoire du classpath doit correspondre au nom
du paquetage
Par exemple, les classes du paquetage
fr.unice.toto.liste doivent se trouver dans
un répertoire fr/unice/toto/liste
relativement à un des répertoires du classpath
Richard Grin Paquetages page 16
R. Grin Introduction à Java 17
Encapsulation d’une classe
dans un paquetage
Si la définition de la classe commence par
public class
la classe est accessible de partout
Sinon, la classe n’est accessible que depuis les
classes du même paquetage
Positionnement des fichiers
d’un programme –
compilation et exécution
Richard Grin Paquetages page 18
4
R. Grin Introduction à Java 19
Projet
Un projet est constitué de toutes les classes et
ressources diverses nécessaires à la compilation et
à l’exécution d’un programme
Les ressources peuvent, par exemple, être des
images, des fichiers de propriétés (par exemple
indiquant où se trouve la base de données utilisée)
Dans les IDE comme Eclipse ou NetBeans, il faut
commencer par créer un projet avant de pouvoir
écrire ses propres classes
R. Grin Introduction à Java 20
Compiler les classes d’un paquetage
javac -d répertoire-racine Classe.java
L’option « -d » permet d’indiquer le répertoire
racine où sera rangé le fichier compilé
Si on compile avec l’option « -d répertoire-racine »
un fichier source qui comporte l’instruction
«package nom1.nom2; »,
le fichier .class est rangé dans le répertoire
répertoire-racine/nom1/nom2
R. Grin Introduction à Java 21
Compiler les classes d’un paquetage
Si on compile sans l’option « -d », le fichier
.class est rangé dans le même répertoire que le
fichier .java (quel que soit le paquetage auquel
appartient la classe)
A éviter !
Pour distribuer facilement un programme, il vaut
mieux séparer les fichiers sources .java des fichiers
classe .class
R. Grin Introduction à Java 22
Compiler les classes d’un paquetage
Quand on compile les classes d’un paquetage avec
l’option -d, on doit le plus souvent indiquer où sont les
classes déjà compilées du paquetage avec l’option
-classpath (taper cette commande en une seule
ligne) :
javac -classpath répertoire-racine
-d répertoire-racine Classe.java
R. Grin Introduction à Java 23
Exécuter une classe d’un paquetage
On lance l’exécution de la méthode main d’une classe
en donnant le nom complet de la classe (préfixé par le
nom de son paquetage)
Par exemple, si la classe Cappartient au paquetage
p1.p2 :
java p1.p2.C
Le fichier C.class devra se situer dans un sous-
répertoire p1/p2 d’un des répertoires du classpath
Il faudra donc ajouter l’option -classpath si le fichier
C.class n’est pas dans le répertoire ./p1/p2
R. Grin Introduction à Java 24
Utilisation pratique des paquetages
Les premières tentatives de développement avec
paquetages conduisent à de grosses difficultés
pratiques pour compiler les classes
Ces difficultés peuvent être évitées
en respectant quelques principes simples pour le
placement des fichiers sources et classes
(exemple dans les transparents suivants)
en utilisant correctement les options –classpath
et –d
5
R. Grin Introduction à Java 25
Placements préconisés pour le
développement d’une application
Classes du
paquetage p1.p2
R. Grin Introduction à Java 26
Commandes à lancer
On se place dans le répertoire racine du projet
Pour compiler (en une seule ligne) :
javac –d classes –classpath classes
src/p1/p2/*.java
pour exécuter :
java –classpath classes p1.p2.C1
Option -src
Lorsqu’un projet a plusieurs paquetages il peut
être nécessaire de préciser le répertoire qui
contient les fichiers sources au moment de la
compilation
La commande de compilation devient alors (taper
cette commande sur une seule ligne) :
javac –src src –d classes
–classpath classes
src/p1/p2/Main.java
Richard Grin Paquetages page 27
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !