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, traditionnellepublic 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 :
- Nommer la structure essentielle Ă tout programme Java.
- Comprendre le rĂŽle des accolades et des points-virgules pour sĂ©parer les parties dâun programme Java.
- Expliquer lâutilitĂ© dâune bonne indentation.
CritĂšres de succĂšs
- Je peux créer un fichier .java et écrire le code de base pour un programme Java.
- Je peux lancer un programme Java au terminal et résoudre des erreurs de syntaxe, au besoin, pour le faire fonctionner.
Exemple - un programme qui affiche âBonjourâ Ă la console
Voici les étapes pour produire ce programme :
- CrĂ©er un fichier qui sâappelle
Bonjour.java- lâextension.javaest 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 - DĂ©finir une mĂ©thode
main. Les deux accolades{}représentent les limites du contenu de la méthode.void main() {}Si vos outils Java sont activés, vous devrez voir deux liens :
Run | DebugapparaĂźtre au-dessus de la mĂ©thodemain. Cela signifie que le compilateur Java a reconnu la mĂ©thodemaincomme le point dâentrĂ©e du programme. - Câest utile de taper
EntrĂ©eentre 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 lignevoid 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.void main() { } - 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)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. - Lancez le programme avec le bouton
Run- soit celui au-dessus de la mĂ©thodemaindans lâĂ©diteur, soit le boutonPlayen 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 seraitjava Bonjour.java) mais la structure simplifiĂ©e prĂ©sentĂ©e ici exige une commande un peu plus complexe en date de Java23java --enable-preview NomDuFichier.java. - 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.
stringau lieu deString - mot mal écrit, p. ex.
print1n(le chiffre 1) au lieu deprintln(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
- Créez un fichier
Salut.javaet Ă©crivez le code pour afficher le message âSalut gang!â Ă la console. Assurez-vous que le code fonctionne. - CrĂ©ez un dossier
capturesdans votre rĂ©pertoire de travail. - 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. - 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 :
pratique-[votre nom]
|---captures
| `---4-1-Structure.png
|---README.md
`---Salut.java
-
mainnâ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. â© -
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