Copy of https://perso.isima.fr/loic/java/exo_jse_base_parc.php
tete du loic

 Loïc YON [KIUX]

  • Enseignant-chercheur
  • Référent Formation Continue
  • Responsable des contrats pros ingénieur
  • Référent entrepreneuriat
  • Responsable de la filière F2 ingénieur
  • Secouriste Sauveteur du Travail
mail
loic.yon@isima.fr
phone
(+33 / 0) 4 73 40 50 42
location_on
Institut d'informatique ISIMA
  • twitter
  • linkedin
  • viadeo

local_cafe Véhicules local_cafe

 Cette page commence à dater. Son contenu n'est peut-être plus à jour. Contactez-moi si c'est le cas!

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();
    }
}

Utiliser un EDI

Utiliser JUnit