Définition des Classes et des Objets
Dans Java, une classe sert de modèle pour définir des objets partageant des caractéristiques communes. Un objet représente une instance concrète de cette classe.
Définition d'une Classe
public class NomClasse {
// Variables d'instance (attributs)
private String attribut1;
private int attribut2;
// Méthodes (comportements)
public void action() {
// Corps de la méthode
}
// Constructeurs
public NomClasse() {
// Constructeur par défaut
}
// Blocs de code et classes internes peuvent aussi être inclus
}
Création d'un Objet
NomClasse instance = new NomClasse();
Points Importants
- Une classe servant à modéliser un concept métier (classe JavaBean) ne contient pas de méthode main ; les classes avec main sont des classes de test.
- Les noms de classes commencent par une majuscule et suivent le format CamelCase, conformément aux conventions d'identifiants Java.
- Plusieurs classes peuvent être définies dans un fichier Java, mais une seule peut être publique, et son nom doit correspondre au nom du fichier. En pratique, il est recommandé de placer une classe par fichier.
- Les variables d'isntance n'ont pas besoin d'être initialisées explicitement ; elles reçoivent des valeurs par défaut.
Encapsulation
L'encapsulation implique de cacher les données internes d'un objet et d'exposer uniquement des interfaces contrôlées via des méthodes publiques. Cela permet de protéger l'intégrité des données.
Le Mot-clé private
Le modificateur d'accès private restreint l'accès aux membres d'une classe à cette classe uniquement. Toutes les variables d'instance devraient être déclarées private, avec des méthodes publiques d'accès (getters) et de modification (setters).
public class Personne {
private String nom;
public String getNom() {
return this.nom;
}
public void setNom(String nouveauNom) {
this.nom = nouveauNom;
}
}
Prinicpe de Proximité
Lorsqu'une variable locale et une variable d'instance portent le même nom dans une méthode, la variable locale a priorité. Pour accéder à la variable d'instance, utilisez le mot-clé this.
Constructeurs
Les constructeurs sont des méthodes spéciales utilisées pour initialiser des objets lors de leur création. Ils partagent le nom de la classe et n'ont pas de type de retour.
public class Exemple {
private int valeur;
// Constructeur sans paramètre
public Exemple() {
this.valeur = 0;
}
// Constructeur avec paramètre
public Exemple(int val) {
this.valeur = val;
}
}
Notes sur les Constructeurs
- Si aucun constructeur n'est défini, Java fournit un constructeur par défaut sans paramètres.
- La définition d'un constructeur explicite supprime le constructeur par défaut.
- Les constructeurs peuvent être surchargés (même nom, paramètres différents).
- Il est recommandé d'implémenter à la fois un constructeur sans paramètre et un avec tous les paramètres.
Classe JavaBean Standard
- Le nom de la classe doit être descriptif.
- Toutes les variables d'instance doivent être
private. - Fournir un constructeur sans paramètre et un avec tous les paramètres.
- Implémenter des méthodes getter et setter pour chaque variable d'instance.
Représentation en Mémoire d'un Objet
- Chargement du fichier de classe.
- Déclaration de la variable locale pointant vers l'objet.
- Allocation d'espace en mémoire heap.
- Initialisation par défaut des variables d'instance.
- Initialisation explicite des variables d'instance.
- Exécution du constructeur pour initialisation finale.
- Affectation de l'adresse mémoire à la variable.
Variables d'Instance vs Variables Locales
| Aspect | Variables d'Instance | Variables Locales |
|---|---|---|
| Position | Dans la classe, hors des méthodes | Dans des méthodes ou blocs de code |
| Initialisation | Valeurs par défaut (ex. 0, null) | Pas de valeur par défaut ; doit être initialisée avant utilisation |
| Mémoire | Mémoire heap | Mémoire stack |
| Cycle de Vie | Aussi longtemps que l'objet existe | Durant l'exécution de la méthode |
| Portée | Accessible dans toute la classe | Accessible uniquement dans la méthode déclarante |