ICS3U

Accueil > Programmer avec Java > Les bases de Java >

📚 Structure d’un projet Java

Survol et attentes

Définitions

Dans les programmes que nous écrirons, nous verrons des éléments de structure entre ‘expression’ et ‘méthode main’ de façon régulière. Occasionnellement nous aurons à utiliser une classe, un package ou un framework plus explicitement. Mais cette liste couvre les éléments d’un programme Java de la plus petite à la plus grande structure possible.

Expression
combinaison minimale de texte dans le code source qui respecte la syntaxe du langage de programmation. D’autre texte produit des erreurs de syntaxe. Les expressions Java peuvent être des valeurs littérales, des variables, des opérations sur les données, des appels de méthodes, etc.
Instruction
une expression ou combinaison d’expressions qui effectue une action. Les instructions Java se terminent toujours avec un point-virgule ;. Ils peuvent être des déclarations de variables, des appels de méthodes ou des opérations sur les données.
Bloc de code
un ensemble d’instructions associé à la même partie d’un programme. En Java, les blocs de code sont délimités par des accolades {}. Pour améliorer la lisibilité du code, les blocs de code sont souvent indentés. Les outils de votre éditeur de code peuvent vous aider à indenter automatiquement le code.
Méthode
un bloc de code nommé qui a un type (comme les variables) et qui peut recevoir des informations affectant son résultat. En programmation plus généralement, cette structure s’appelle une fonction. Dans Java, toutes les fonctions sont définies dans des classes et le nom officielle pour ce type de fonction est une méthode.
Méthode main
le point d’entrée du programme1 et le seul bloc de code qui doit absolument être déclaré dans tout programme Java. C’est la méthode que Java exécute automatiquement lorsqu’on lance le programme. Au plus simple2, elle a la signature void main() - ce que nous utiliserons dans nos programmes, mais cette signature peut se développer jusqu’à la signature complète, traditionnelle public static void main(String[] args). Ce cours n’expliquera pas tous les détails de la signature traditionnelle.
Classe
Une structure qui définit un objet, soit une unité de programmation qui a des données (nommées attributs) et des comportements (nommés méthodes). Java étant un langage orienté-objet, la classe est la plus petite structure autonome possible. Tous les programmes Java se tiennent à l’intérieur d’une ou de plusieurs classes.

Dans nos programmes, la classe unique sera déclarée automatiquement2 la plupart du temps, nous laissant définir les méthodes et attributs directement dans le fichier .java. Parfois, et de manière plus commune dans les grands projets Java, les classes sont des blocs de code déclarées avec le mot-clé class.

Package
un conteneur pour des classes Java, associé à un dossier sur le disque dur. Les packages sont utilisés pour organiser les classes en groupes logiques et gérer l’accès aux classes. Dans tous nos programmes, le package de notre code est implicite et ne sera pas déclaré dans le code source.
Module
un conteneur pour des packages Java (depuis Java9) associé à un fichier module-info.java. Les modules sont utilisés pour organiser les packages en groupes logiques pour créer des applications modulaires, n’utilisant que les packages nécessaires pour l’application. Dans tous nos programmes, le module de notre code est implicite et ne sera pas déclaré dans le code source.
Framework
une collection de modules Java qui fournissent des fonctionnalités prêtes à l’emploi pour des applications spécifiques. Les frameworks Java les plus connus sont JUnit (pour les tests unitaires), Spring (pour le développement web), Hibernate (pour la persistance des données) et JavaFX (pour les interfaces graphiques).
Application
une collection de modules Java - ceux du langage, ceux que vous avez écrits et ceux de divers frameworks - qui forment un programme complet.

Objectifs d’apprentissage

À la fin de cette leçon vous devrez être en mesure de :

Critères de succès

Exemple - un programme qui affiche “Bonjour” à la console

Voici les étapes pour produire ce programme :

  1. Créer un fichier qui s’appelle Bonjour.java - l’extension .java est important. D’autres éléments du nom seront expliqués dans la prochaine leçon.

    C’est possible que les outils de votre EDI suggèrent l’insertion d’une classe du même nom, p. ex. public class Bonjour { }, dès que le fichier s’ouvre dans l’éditeur. Vous devrez effacer ce code afin de maintenir la structure minimale pour ce programme.2

  2. Définir une méthode main. Les deux accolades {} représentent les limites du contenu de la méthode.
    1
    
     void main() {}
    

    Si vos outils Java sont activés, vous devrez voir deux liens : Run | Debug apparaître au-dessus de la méthode main. Cela signifie que le compilateur Java a reconnu la méthode main comme le point d’entrée du programme.

  3. C’est utile de taper Entrée entre les deux accolades pour créer un espace pour les instructions. Vous verrez que l’accolade fermante est placée directement sous le début de la ligne void main() tandis que le curseur est indenté vers la droite. Cela est une convention de format pour nous aider à voir que les accolades sont bien fermées pour les différents blocs de code.
    1
    2
    3
    
     void main() {
            
     }
    
  4. Ajouter des instructions à l’intérieur de la méthode main, soit entre ces deux accolades. Dans ce cas-ci, on inclut une seule instruction qui affiche le texte “Bonjour!” à la sortie du système (la console)
    1
    2
    3
    
     void main() {
          System.out.println("Bonjour!");
     }
    

    Notez que l’instruction se termine avec un point-virgule ;. C’est nécessaire pour toutes les instructions Java.

  5. Lancez le programme avec le bouton Run - soit celui au-dessus de la méthode main dans l’éditeur, soit le bouton Play en haut à droite de VS Code.

    Normalement, je préfère lancer les programmes au terminal avec ma propre commande soit java NomDuFichier.java (ici ce serait java Bonjour.java) mais la structure simplifiée présentée ici exige une commande un peu plus complexe en date de Java23 java --enable-preview NomDuFichier.java.

  6. Vous devriez voir le message “Bonjour!” affiché à la console, sinon un message d’erreur s’il y a un problème avec le code. Les messages d’erreur incluent plusieurs informations pour vous aider à trouver le problème, notamment le numéro de ligne où le programme a planté.

Indentation

L’indentation dans l’exemple ci-dessus est très important pour la lisibilité du code et pour vérifier que les accolades sont bien fermées. Notez que l’accolade fermante est visible directement en dessous de la définition de la structure qu’elle ferme (ici la méthode, mais il y en aura d’autres). C’est une convention de style très utile parce que c’est facile d’oublier ou d’effacer une accolade par accident.

VS Code devrait créer cette indentation automatiquement, mais c’est facile de le briser en modifiant ou en déplaçant du code. Utiliser régulièrement la commande “Mettre le document en forme” (dans VS Code : Alt+Shift+F ou clic droit > “Mettre le document en forme”) pour maintenir une indentation correcte. Voici des moments quand vous devriez utiliser cette commande :

  • après avoir copié-collé un exemple de code
  • après avoir déplacé des instructions ou un bloc de code que vous avez écrit
  • si vous ne voyez plus les accolades fermantes sous la signature du bloc de code (comme void main()) parce qu’il y a d’autre code dans le chemin
  • si toutes vos instructions dans un même bloc de code ne sont pas alignées verticalement
  • avant de rendre un programme lors d’une évaluation

Erreurs de syntaxe communes

Notez que “Mettre le document en forme” ne fonctionne pas s’il y a des erreurs de syntaxe, soit du code qui n’est pas compris par le compilateur Java. Si les outils Java sont activés, ces erreurs seront signalés pendant que vous tapez votre code : l’endroit de l’erreur est souligné en rouge. Si vous passez votre curseur sur cet endroit, vous pouvez lire dans une info-bulle un message décrivant l’erreur. Si les outils Java ne sont pas activés, vous verrez le même message d’erreur et des informations sur son endroit dans le code quand vous tentez de lancer le programme.

Voici quelques exemples d’erreurs communes :

  • des {, (, ; ou des " manquants ou de surplus dans le code
  • mauvaise capitalisation d’un mot, p. ex. string au lieu de String
  • mot mal écrit, p. ex. print1n (le chiffre 1) au lieu de println (la lettre L minuscule)
  • du texte qui n’est pas emballé dans des guillemets (") -> ce texte est alors interprété comme le nom de quelque chose qui devrait exister dans le code mais qu’on ne trouve pas.

Exercices

📚 Tester la compréhension

Quiz de vérification sur la structure d’un programme Java

🛠️ Pratique

Travaillez dans le répertoire GitHub partagé par votre enseignant pour la pratique et les exercices

  1. Créez un fichier Salut.java et écrivez le code pour afficher le message “Salut gang!” à la console. Assurez-vous que le code fonctionne.
  2. Créez un dossier captures dans votre répertoire de travail.
  3. Prenez une capture d’écran du lancement réussi de votre programme au terminal et l’enregistrez dans “captures”. Nommez le fichier 4-1-Structure.png.

    Sur Windows, l’outil de capture d’écran se lance avec la touche Windows + Shift + S. Une fois l’image capturé, cliquez sur l’icône de notification pour ouvrir l’éditeur des captures. Enregistrez l’image dans le dossier “captures” de ce dossier.

  4. Faites un commit et synchronisez vos changements avec GitHub.

À la fin de cet exercice, votre répertoire devrait avoir la structure et le contenu suivants :

1
2
3
4
5
pratique-[votre nom]
|---captures
|   `---4-1-Structure.png
|---README.md
`---Salut.java
  1. main n’est pas juste le point d’entrée pour les programmes Java. C’est une convention qui se trouve implicitement ou explicitement dans un grand nombre de langages, comme Python, C++, C#, Go, etc. 

  2. La déclaration implicite d’une classe (ne pas avoir à déclarer une classe dans le code source) est une simplification permise pour les petits projets depuis Java22 et le JEP463. Cette simplification permet aussi une méthode void main() comme point de départ pour le programme.  2 3