Blog ENI : Toute la veille numérique !
🎁 Jusqu'au 25/12 : 1 commande de contenus en ligne
= 1 chance de gagner un cadeau*. Cliquez ici
🎁 Jusqu'au 31/12, recevez notre
offre d'abonnement à la Bibliothèque Numérique. Cliquez ici
  1. Livres et vidéos
  2. Apprendre à développer avec JavaScript
  3. Approche
Extrait - Apprendre à développer avec JavaScript Des bases à l'utilisation de frameworks (5e édition)
Extraits du livre
Apprendre à développer avec JavaScript Des bases à l'utilisation de frameworks (5e édition) Revenir à la page d'achat du livre

Approche "objet" en JavaScript

Introduction

Bien que l’implémentation du modèle de programmation orientée objet (POO) ne soit pas aussi complète en JavaScript qu’en C++ ou Java, JavaScript propose les mécanismes principaux gérés par ces langages.

Rappelons les principes les plus importants de la POO :

  • Encapsulation : assemblage d’un ensemble de propriétés (aspect données) et de fonctions encore appelées méthodes (aspect traitements) au sein d’un objet type (on parle plutôt d’ailleurs de classe) avec ensuite la possibilité de créer (instancier) des objets à partir de cette classe.

  • Héritage : possibilité de "fabriquer" une nouvelle classe à partir d’une classe préexistante, cette nouvelle classe héritant des propriétés et des méthodes de la classe de base (ajout de nouvelles propriétés/méthodes envisageable sur la nouvelle classe).

  • Polymorphisme : une méthode de même nom associée à plusieurs classes peut avoir des comportements différents pour certaines de ces classes.

Programmation orientée objet au travers d’exemples

JavaScript a toujours été une brique essentielle dans les développements web, essentiellement pour la programmation côté "client", c’est-à-dire du côté navigateur. Souvent sans s’immerger dans le langage les développeurs produisent du code JavaScript de qualité médiocre en se contentant d’adapter des codes sources récupérés sur des sites Internet et manipulent les concepts POO a minima. 

En parallèle un grand nombre de librairies JavaScript sont apparues et leur utilisation permet de produire des applications de meilleure qualité. La maîtrise de ces librairies suppose toutefois des connaissances de base en POO sous JavaScript. 

L’exposé qui va suivre a donc pour objectif de vous présenter ce qu’il faut savoir sur le sujet. Les concepts vont être exposés au travers d’une série d’exemples.

Ceux d’entre vous qui ont déjà une forte expérience dans d’autres langages dits POO (PHP 5, Java, C++...) seront peut-être dans un premier temps perturbés par les spécificités de la POO sous JavaScript, la POO par prototypage.

1. Séquence 1 : Déclaration des objets JavaScript en méthode "Inline"

Il s’agit de la manière la plus simple de déclarer un objet en JavaScript.

/* Déclaration inline d'un objet JavaScript */ 
/* NB : Cette technique ne permet pas l'héritage à partir de l'objet 
par la suite */ 
var Addition = { 
    x : 5, 
    y : 10, 
    calcul : function() 
    { 
        return this.x + this.y; 
    } 
}; 
 
/* Utilisation de l'objet Addition */ 
document.write("Somme : " + Addition.calcul()); 

Le résultat obtenu à l’exécution sera le suivant :

Somme = 15 

Dans ce type de déclaration d’objet, il est possible de prévoir la spécification d’attributs (propriétés) et également de méthodes.

Le mot-clé this sert à indiquer que l’on fait référence aux attributs de l’objet lui-même.

Il est clair qu’avec ce type de déclaration, il ne sera pas possible de réutiliser ce type de définition pour créer un objet de mêmes caractéristiques (ou proches). Cette méthode sera donc finalement peu (ou pas) utilisée car elle ne permet pas l’héritage. Rassurez-vous, nous reviendrons sur cette notion dans le détail dans la suite de l’exposé.

2. Séquence 2 : Création des objets JavaScript par constructeur

Il est aussi possible de créer nos objets JavaScript par l’intermédiaire d’un constructeur (concept bien connu dans les langages dits POO). En JavaScript, il suffira d’écrire une fonction et de l’appeler ensuite avec le mot-clé new. La fonction jouera donc un peu le rôle d’une classe sans en être...