Projet Java
Structure d’un projet Java
Exemple d’un projet simple
MyFirstProject/
├── .idea/ # fichiers de service d’IntelliJ IDEA, ne pas toucher
├── out/ # ici apparaissent les fichiers .class compilés
├── src/ # c’est ici que vit votre code source !
│ └── Main.java
|-- ressources/
| |-- config.txt
| |-- image.png
├── MyFirstProject.iml
└── README.mdDossier src
Dans ce dossier, on retrouve le code source. Toutes les classes y sont placées. Tous ce que l’on vient écrire se place dans ce dossier.
Organisation du code dans un projet
Une classe = un fichier
En Java, une classe public correspond à un fichier portant le même nom que la classe. Par exemple, une classe Person doit être dans un fichier Person.java.
Le nom de la classe doit être le même que le nom du fichier.
src/com/javarush/lesson05/Person.java
package com.codegym.lesson05;
public class Person {
String name;
}Stockage des ressources
Les images, fichiers texte, etc sont stocker dans un dossier séparé (ressources ou res).
Packages package
Les classes sont regroupées par package. C’est comme un dossier du system file, mais pour les classes. Les packages permettent d’éviter les conflits de noms, permettent de structurer logiquement le code et gère l’accès aux classes et aux méthodes.
Syntaxe de déclaration
Au début de chaque fichier Java, avant les import et class, on vient définir le package :
package com.codegym.lesson05;Cela signifie: la classe de ce fichier appartient au package com.codegym.lesson05.
Les dossier du system file doivent correspondrent au nom du package. Avec l’exemple, le chemin du fichier sera src/com/codegym/lesson05/Main.java
Nom complet d’une classe
Chaque classe se trouve forément dans un package. Par exemple:
- La classe
Scannerse trouve dans le packagejava.lang. Son nom complet estjava.lang.System - La classe
ArrayListse trouve dans le packagejava.util. Son nom complet estjava.util.ArrayList
Le nom complet d’une classe est constituer de nom du package + point + nom de la classe.
java.util.Scanner sc = new java.util.Scanner(System.in);
String name = sc.nextLine();
System.out.println("Bonjour, " + name);Ici, on écrit explicitement java.util.Scanner. Le compilateur comprend de quelle classe il s’agit, même s’il y a d’autre classes Scanner dans le programme.
Le nom complet d’une classe est toujours unique.
// ===================================================================
// deux classe ayant le même nom, mais avec le nom complet différent
// ===================================================================
java.util.Date d1 = new java.util.Date();
java.sql.Date d2 = new java.sql.Date(System.currentTimeMillis());Instruction import
Cette intruction permet de simplifier l’utilisation des noms complet de classe.
// ========================
// importation de la classe
// =========================
import java.util.Scanner;
// ==============================
// utilisation dans la classe
//===============================
Scanner sc = new Scanner(System.in);Import classique -> une classe
import java.util.Scanner;
import java.util.ArrayList;On peut ensuite utiliser des noms courts pour faire référence à la classe : Scanner, ArrayList
Import de tout un package - *
Le * signifie “Autoriser l’utilisation de toutes les classes du package `java.util” sans nom complet".
Cette syntaxe n’importe que les classes du package java.util, et pas celles de ses sous-packages.
import java.util.*;
Scanner sc = new Scanner(System.in);
ArrayList<String> list = new ArrayList<>();Classpath
Le classpath est l’itinéraire que Java parcourt pour trouver les classes lors du lancement du programme. C’est un peu comme une liste de dossiers où Java va chercher les fichiers .class.
Par défaut l’IDE ajoute lui même le dossier src au classpath.