Génie Logiciel - Java (IGL245)
Thème :
Junior
1 vues ·2/10 leçons

3. Encapsulation

Principe : L’encapsulation consiste à protéger les données de l’objet en les déclarant privées (private) et en fournissant des méthodes publiques (getters/setters) pour y accéder ou les modifier.

Avantages :

  • Protège l’intégrité des données.
  • Permet de contrôler l’accès et la modification des attributs (ex: empêcher un âge négatif).

Exemple : Dans la classe Personne vue précédemment, les attributs nom et age sont déclarés en private. Seules les méthodes publiques getNom, setNom, etc., permettent d’y accéder.


4. Héritage

Principe : L’héritage permet à une classe (sous-classe) d’hériter des attributs et méthodes d’une autre classe (classe parente ou super-classe).

Utilisation du mot-clé extends :

public class Employe extends Personne {
    private double salaire;

    public Employe(String nom, int age, double salaire) {
        super(nom, age); // Appel du constructeur de la classe parente
        this.salaire = salaire;
    }

    public void afficherSalaire() {
        System.out.println("Salaire : " + salaire);
    }

    // Redéfinition de la méthode saluer (@Override)
    @Override
    public void saluer() {
        System.out.println("Bonjour, je suis l'employé " + getNom());
    }
}
  • super : permet d’appeler des membres (constructeur, méthodes) de la classe parente.
  • L’héritage favorise la réutilisation du code et la spécialisation des comportements.

Exercice 2 : Héritage et Polymorphisme

Objectif : Créer une classe Employe qui hérite de Personne et ajoute l’attribut salaire. Redéfinir la méthode saluer() pour afficher également le salaire. Dans le main, créez des instances de Personne et Employe.

Solution :

public class Employe extends Personne {
    private double salaire;

    // Constructeur qui appelle le constructeur de la classe parente
    public Employe(String nom, int age, double salaire) {
        super(nom, age);
        this.salaire = salaire;
    }

    // Getter et Setter pour 'salaire'
    public double getSalaire() {
        return salaire;
    }
    public void setSalaire(double salaire) {
        this.salaire = salaire;
    }

    // Redéfinition de la méthode saluer
    @Override
    public void saluer() {
        System.out.println("Bonjour, je suis l'employé " + getNom() + ", j'ai " + getAge() + " ans et je gagne " + salaire + " €.");
    }

    // Méthode main pour tester l'héritage
    public static void main(String[] args) {
        Personne p = new Personne("Alice", 30);
        Employe e = new Employe("Bob", 40, 3500.0);

        p.saluer(); // Appel de la méthode de Personne
        e.saluer(); // Appel de la méthode redéfinie dans Employe
    }
}

Prêt à passer à la suite ?

Vous avez terminé cette leçon sur 3. Encapsulation. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.