Skip to content

🔸5🔸Le mot-clé this

Voici une version améliorée de la classe Personne utilisant la classe LocalDate de Java pour gérer les dates.

import java.time.LocalDate;

public class Personne {
    private String nom;
    private String prenom;
    private LocalDate dateNaissance;

    // Constructeur complet
    public Personne(String nom, String prenom, LocalDate dateNaissance) {
        this.nom = nom;
        this.prenom = prenom;
        this.dateNaissance = dateNaissance;
    }

    // Constructeur qui appelle l'autre constructeur avec la date d'aujourd'hui
    public Personne(String nom, String prenom) {
        this(nom, prenom, LocalDate.now());
    }

    // Accesseurs et mutateurs
    public String getNom() {
        return nom;
    }

    public void setNom(String nom) {
        this.nom = nom;
    }

    public String getPrenom() {
        return prenom;
    }

    public void setPrenom(String prenom) {
        this.prenom = prenom;
    }

    public LocalDate getDateNaissance() {
        return dateNaissance;
    }

    public void setDateNaissance(LocalDate dateNaissance) {
        this.dateNaissance = dateNaissance;
    }

    // Méthode utilitaire pour calculer l'âge
    public int getAge() {
        return LocalDate.now().getYear() - dateNaissance.getYear();
    }
}

Utilisation

// Création avec date spécifique
LocalDate dateNaissance = LocalDate.of(2000, 1, 15);
Personne personne1 = new Personne("Dupont", "Jean", dateNaissance);

// Création sans date (utilisera la date d'aujourd'hui)
Personne personne2 = new Personne("Martin", "Marie");

Points importants dans cet exemple :

  • L’utilisation de this() pour appeler un autre constructeur
  • L’utilisation de LocalDate pour une gestion robuste des dates
  • Les attributs sont privés avec leurs accesseurs et mutateurs
  • Une méthode utilitaire getAge() qui calcule l’âge à partir de la date de naissance

Note

Le calcul de l’âge dans cet exemple est simplifié. Pour un calcul plus précis, il faudrait tenir compte des mois et des jours.

Le mot-clé this

this est une référence à l’objet courant, utilisable uniquement dans les méthodes d’instance (non-statiques). Il représente l’instance de la classe qui exécute le code.

Références et Objets

public class Personne {
    private String nom;

    public void setNom(String nom) {
        this.nom = nom;  // this.nom réfère à l'attribut de l'instance
    }
}

// Utilisation avec plusieurs références
Personne p1 = new Personne();
Personne p2 = p1;  // p2 réfère au même objet que p1

Différents Usages de this

1. Distinguer les attributs des paramètres :

public class Personne {
    private String nom;

    public Personne(String nom) {
        this.nom = nom;  // Sans this, nom référerait au paramètre
    }
}

2. Appeler un autre constructeur :

public class Personne {
    private String nom;
    private int age;

    public Personne(String nom) {
        this(nom, 0);  // Appelle l'autre constructeur
    }

    public Personne(String nom, int age) {
        this.nom = nom;
        this.age = age;
    }
}

Références Multiples

Personne p1 = new Personne("Alice");
Personne p2 = p1;  // Nouvelle référence au même objet
p2.setNom("Bob");  // Modifie l'objet via p2
System.out.println(p1.getNom());  // Affiche "Bob" car p1 et p2 réfèrent au même objet

Comportement des Références

public class ExempleReferences {
    public static void modifierPersonne(Personne p) {
        p.setNom("Charlie");  // Modifie l'objet original
        p = new Personne("David");  // Crée un nouvel objet, ne modifie pas la référence originale
    }

    public static void main(String[] args) {
        Personne p1 = new Personne("Alice");
        modifierPersonne(p1);
        System.out.println(p1.getNom());  // Affiche "Charlie"
    }
}

Dans cet exemple :

  • La modification via une référence affecte l’objet pour toutes les références
  • La réaffectation d’une référence n’affecte pas les autres références au même objet
  • this reste toujours une référence à l’objet courant, peu importe le nombre de références externes

Cette compréhension des références est fondamentale en POO car elle explique comment les objets sont partagés et modifiés à travers le programme.


Note

Page rédigée en partie avec l’aide d’un assistant IA, principalement à l’aide de Perplexity AI, avec le LLM Claude 3.5 Sonnet. L’IA a été utilisée pour générer des explications, des exemples et/ou des suggestions de structure. Toutes les informations ont été vérifiées, éditées et complétées par l’auteur.