Skip to content

Latest commit

 

History

History
189 lines (135 loc) · 3.44 KB

07-classe.md

File metadata and controls

189 lines (135 loc) · 3.44 KB

Classe

Définir une classe

Le mot clé class permet de créer une classe.

La méthode constructor définit le constructeur de la classe.

Il est possible de définir dynamiquement des champs.

Le mot clé this définit les champs d’une classe.

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

let robert = new Personne('Oddet','Rossi');

console.log(robert.nom); // Oddet
console.log(robert.prenom); // Rossi

// Définition dynamique
robert.sexe = 'M';

Définir une méthode

Une méthode se définit comme une fonction sans le mot clé function.

Les propriétés sont référencés via le mot clé this.

class Personne {

    constructor(nom,prenom) {
        this.nom = nom;
        this.prenom = prenom;
    }

    getFullname() {
        return this.prenom + ' ' + this.nom;
    }
}

let robert = new Personne('Oddet','Rossi');

console.log(robert.getFullname()); // Rossi Oddet

Getter / Setter

Les mots clé get et set permettent de définir des accesseurs pour une propriété.

Le mot clé this permet de référencer la propriété exposée.

Pas de visibilité privée pour les champs d’une classe.

class Personne {

    constructor(nom,prenom) {
        this.nom = nom;
        this.prenom = prenom;
    }

    get age(){
        return this._age;
    }

    set age(newAge) {
        this._age = newAge;
    }
}

let robert = new Personne('Oddet','Robert');
robert.age = 12; // set age 12
console.log(robert.age); // get age

Mot clé static

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

    // création d'une méthode static
    static getDefaultCivilite() {
        return 'Mademoiselle';
    }
}
console.log(Personne.getDefaultCivilite()); // Mademoiselle

Héritage

extends

Le mot clé extends permet de définir une relation d’héritage entre deux classes.

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

class Client extends Personne {
}

let c = new Client(); // Client {nom: undefined, prenom: undefined}

super

Le mot clé super permet de référencer des éléments de la classe parente.

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

class Client extends Personne {
    constructor(nom, prenom, matricule) {
        super(nom, prenom);
        this.matricule = matricule;
    }
}

let c = new Client('Ro','Jul','A01'); // Client {nom: "Ro", prenom: "Jul", matricule: "A01"}

Redéfinition des méthodes

Il est possible de redéfinir une méthode.

Voici un exemple ici getNomComplet.

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

    getNomComplet() {
        return this.nom + ' ' + this.prenom;
    }
}

class Client extends Personne {
    constructor(nom, prenom, matricule) {
        super(nom, prenom);
        this.matricule = matricule;
    }

    // redéfinition de méthode
    getNomComplet() {
        return super.getNomComplet() + ' ' + this.matricule;
    }
}

let c = new Client('Ro','Jul','A01'); // Client {nom: "Ro", prenom: "Jul", matricule: "A01"}

console.log(c.getNomComplet()); // Ro Jul A01