Date de première publication : 2022/09/27
L'idée du TP est de montrer la structure d'un programme avec plusieurs classes, placées ou non dans des packages différents. Il faudra coder, compiler et exécuter les différents programmes tout d'abord à la main puis avec un environnement de développement intégré.
À la main
Nous allons voir TROIS manières de placer les classes / fichiers. Pour ce faire, il faudra trois répertoires principaux
Toutes les classes dans le même fichier
On vous propose de placer les classes Application
, Voiture
et Camion
dans un même fichier.
public class Application {
public static void main(String[] arg) {
Voiture v = new Voiture();
v.demarrer();
}
}
Une classe doit donner son nom au fichier, c'est la classe qui doit être déclarée public
Compilez la classe principale, cela va compiler les autres classes : vous pouvez voir des fichiers d'extension .class
pour toutes les classes
Exécutez le programme...
Toutes les classes dans le même répertoire
Lorsque l'on fait cela, les classes appartiennent au même package implicite (par défaut).
Vous aurez donc trois classes publiques dans trois fichiers.
Le compilateur Java va compiler la classe Application
et toutes les classes requises par Application
. Avec le code donné dans la section précédente, seules les classes Application
et Voiture
sont compilées.
Si Application
référence maintenant la classe Camion
, la classe est également compilée.
En ce qui concerne l'exécution, seule la classe qui contient la méthode main()
peut être lancée par la JVM (rien ne vous empêche d'avoir une méthode main()
dans toutes les classes si vous en avez envie.
Utilisation d'un package
Nous allons maintenant utiliser un package pour ranger nos classes. La classe Application
reste dans le répertoire principal et vous allez créer le package / répertoire vehicule
(tout en minuscules) pour placer les classes Voiture
et Camion
.
Comme pour la section précédente, si les classes sont correctement nommées, le compilateur va trouver les classes comme un grand et les compiler si nécessaire.
Voir le message d'erreur
Il faut donc maintenant préciser que les classes Voiture
et Camion
appartiennent au package vehicule
tant dans les classes elle-même qu'au niveau de la classe Application
.
package vehicule;
public class Voiture {
}
En étant dans le même package, les classes Voiture
et Camion
se connaissent directement. En ce qui concerne la classe Application
, vous pouvez utiliser l'instruction import
pour simplifier le nommage
// import vehicule;
public class Application {
public static void main(String[] arg) {
vehicule.Voiture v = new vehicule.Voiture();
v.demarrer();
}
}