Skip to content

Les classes

Les classes en JavaScript, introduites avec ES6 (ECMAScript 2015), sont une manière plus claire et plus concise de créer des objets et de gérer l'héritage. Elles offrent une syntaxe plus familière pour ceux qui viennent d'autres langages de programmation orientés objet, comme Java ou C#. Les classes en JavaScript sont en réalité des "sucre syntaxique" sur le prototype existant de la fonction de base, fournissant ainsi une manière plus simple de créer des objets et de gérer l'héritage.

Déclaration de Classe

Une classe est définie en utilisant le mot-clé class, suivi du nom de la classe.

javascript
class Personne {
    constructor(nom, age) {
        this.nom = nom;
        this.age = age;
    }

    sePresenter() {
        console.log(`Je m'appelle ${this.nom} et j'ai ${this.age} ans.`);
    }
}
class Personne {
    constructor(nom, age) {
        this.nom = nom;
        this.age = age;
    }

    sePresenter() {
        console.log(`Je m'appelle ${this.nom} et j'ai ${this.age} ans.`);
    }
}

Dans cet exemple, Personne est une classe avec un constructeur pour initialiser l'objet, et une méthode sePresenter.

Instanciation d'Objets

Les objets sont créés à partir d'une classe en utilisant le mot-clé new.

javascript
let alice = new Personne("Alice", 25);
alice.sePresenter(); // "Je m'appelle Alice et j'ai 25 ans."
let alice = new Personne("Alice", 25);
alice.sePresenter(); // "Je m'appelle Alice et j'ai 25 ans."

Héritage de Classe

JavaScript prend en charge l'héritage, permettant à une classe de hériter des propriétés et méthodes d'une autre.

javascript
class Etudiant extends Personne {
    constructor(nom, age, cursus) {
        super(nom, age); // Appel du constructeur de la classe parente
        this.cursus = cursus;
    }

    sePresenter() {
        super.sePresenter(); // Appel de la méthode de la classe parente
        console.log(`J'étudie en ${this.cursus}.`);
    }
}

let bob = new Etudiant("Bob", 20, "Informatique");
bob.sePresenter();
// "Je m'appelle Bob et j'ai 20 ans."
// "J'étudie en Informatique."
class Etudiant extends Personne {
    constructor(nom, age, cursus) {
        super(nom, age); // Appel du constructeur de la classe parente
        this.cursus = cursus;
    }

    sePresenter() {
        super.sePresenter(); // Appel de la méthode de la classe parente
        console.log(`J'étudie en ${this.cursus}.`);
    }
}

let bob = new Etudiant("Bob", 20, "Informatique");
bob.sePresenter();
// "Je m'appelle Bob et j'ai 20 ans."
// "J'étudie en Informatique."

Getters et Setters

Les classes peuvent également inclure des getters et des setters pour accéder et modifier les propriétés.

javascript
class Personne {
    constructor(nom) {
        this._nom = nom;
    }

    get nom() {
        return this._nom;
    }

    set nom(value) {
        this._nom = value;
    }
}

let charlie = new Personne("Charlie");
console.log(charlie.nom); // "Charlie"
charlie.nom = "Charles";
console.log(charlie.nom); // "Charles"
class Personne {
    constructor(nom) {
        this._nom = nom;
    }

    get nom() {
        return this._nom;
    }

    set nom(value) {
        this._nom = value;
    }
}

let charlie = new Personne("Charlie");
console.log(charlie.nom); // "Charlie"
charlie.nom = "Charles";
console.log(charlie.nom); // "Charles"

Avantages des classes

  • Syntaxe Claire : La syntaxe des classes est plus propre et plus facile à comprendre, surtout pour les développeurs issus d'autres langages orientés objet.
  • Encapsulation : Les classes encouragent une meilleure encapsulation et organisation du code.
  • Réutilisabilité et Héritage : Elles facilitent la réutilisabilité du code et l'implémentation de l'héritage.