Principaux Concepts
Bonnes pratiques
- Maintenir les données privées.
- Initialiser toujours les données.
- Ne fournissez de méthodes d’accès que si cela est nécessaire.
ATTENTION
La normalisation n’est pas définitive, elle peut encore évoluer. Vous pouvez consulter le site officiel pour connaitre les évaluations.
1 - Constructeur
class Exemple {
#x=0 // les attributs privés
y=0 // les attributs public
static z=9 // les attributs static
static #w=3 // les attributs privés et static
// constructeur
constructor(a, b) {
this.#x = a
this.y = b
}
// les méthodes dont toujours public
f1(a, b)
{
this.y = this.#x**a+b
return `${this.#x} ${this.y}`
}
}
const ex2 = new Exemple(20,30)
console.log(Exemple.z) //Retourne 9
ATTENTION
Les méthodes ne commencent pas par le mot function
.
2 - Autoréférence : le mot-clé this
À l’intérieur d’une méthode, le mot-clé this permet d’accéder à l’instance (l’objet) sur lequel la méthode est appelée
Lorsqu’il y a conflit de nom entre une variable locale et une variable d’instance, la variable locale l’emporte et
masque la variable d’instance. Pour contourner le masquage et utiliser la variable d’instance, il faut utiliser le mot
clef this
qui désigne l’instance courante :
this.variable_dinstance
3 - Accesseurs
Un accesseur est une méthode le plus souvent publique qui permet d’accéder à un attribut privé, en lecture
get
.
Voilà pourquoi on les appelle aussi des getters
class Exemple {
#x=0 // les attributs privés
y=0 // les attributs public
static #z=3 // les attributs privés et static
// constructeur
constructor(a, b) {
this.#x = a
this.y = b
}
// les méthodes dont toujours public
f1(a, b){
this.y = this.#x**a+b
return `${this.#x} ${this.y}`
}
// acesseur
get valX(){
return this.#x
}
}
console.log(ex2.valX) //Retourne la valeur de x
4 - Mutateurs
Un mutateur est une méthode le plus souvent publique qui permet d’accéder à un attribut privé, en écriture
set
.
Voilà pourquoi on les appelle aussi des setters
class Exemple {
#x=0 // les attributs privés
y=0 // les attributs public
static #z=3 // les attributs privés et static
// constructeur
constructor(a, b) {
this.#x = a
this.y = b
}
// les méthodes dont toujours public
f1(a, b){
this.y = this.#x**a+b
return `${this.#x} ${this.y}`
}
// acesseur
get valX(){
return this.#x
}
// mutateur
set valX(value){
this.#x=value
}
}
ex2.valX=5
5 - Héritage
Pour qu’une sous-classe hérite d’une autre classe, on utilisera le mot clé extends
.
Dans le cas d’un extends
, vous pouvez aussi appeler les méthodes parentes à l’aide du mot clef super
. On pourra
l’utiliser dans le constructeur ou n’importe quelle méthode.
class Heritexemple extends Exemple {
// constructeur
constructor(a, b,c) {
// le mot clé super est utilisé comme super contructeur. Il permet d'appeler
// et d'avoir accès aux méthodes du parent
super(a,b)
this.v=c //l'attribut v est déclaré en même temps que l'affectation
}
// les méthodes dont toujours public
f2(){
return super.f1(7,8)+`${this.#x} ${this.y}`
}
}
console.log(Heritexemple.f1(6,8))
console.log(Heritexemple.f2())