Prototype

Définition, exemples et bonnes pratiques

À retenir

  • C'est un objet concret qui sert de référence à d'autres objets.
  • Il permet l'héritage de propriétés et de méthodes de façon dynamique.
  • Il est plus flexible qu'un système de classes traditionnel car il peut être modifié en cours de route.

Un prototype est un modèle d'objet original qui sert de base pour créer de nouveaux objets. Au lieu de suivre un plan abstrait, on prend un objet existant et on s'en inspire pour en fabriquer d'autres qui partageront ses caractéristiques. C'est comme utiliser un moule à gâteaux : le moule définit la forme de base pour toutes les pâtisseries qui en sortiront.

Étymologie

Issu du grec ancien prōtotypon signifiant « premier modèle ». Initialement utilisé dans l'industrie pour désigner un premier exemplaire expérimental, le terme a été adopté en programmation (notamment avec le langage Self puis JavaScript) pour décrire un mécanisme où les objets héritent directement les uns des autres sans passer par des classes rigides.

Exemples d'usage

  • En JavaScript, chaque fonction possède une propriété prototype qui permet de partager des méthodes entre toutes les instances créées.
  • Un développeur crée un objet Vehicule avec une méthode rouler() ; il l'utilise ensuite comme prototype pour créer un objet Voiture qui saura alors automatiquement rouler.

Cas d'usage

Le prototype intervient principalement dans la programmation orientée objet (POO) dite « prototypale ». Il est essentiel pour optimiser la mémoire (une seule copie d'une fonction pour des milliers d'objets) et pour créer des structures de données flexibles qui peuvent évoluer durant l'exécution du programme.

Bonnes pratiques

Il est fortement déconseillé de modifier les prototypes des objets de base du langage (comme Array ou Object), une pratique risquée appelée « pollution de prototype » qui peut causer des bugs imprévisibles dans d'autres parties du code ou des bibliothèques tierces.

Synonymes

modèle archétype gabarit original

Antonymes

instance copie série

Conseil

Si vous venez de langages comme Java ou C#, ne voyez pas le prototype comme une classe déguisée. Visualisez-le plutôt comme une délégation : l'objet ne 'possède' pas forcément la fonction, il sait simplement à quel 'parent' (son prototype) demander quand il en a besoin.

Questions fréquentes

Quelle est la différence avec une classe ?

Une classe est un schéma théorique (comme un plan d'architecte), alors qu'un prototype est un objet déjà existant (comme une maison témoin) que l'on duplique ou que l'on lie.

C'est quoi la chaîne de prototypes ?

C'est le chemin que parcourt l'ordinateur : s'il ne trouve pas une information sur un objet, il regarde dans son prototype, puis dans le prototype du prototype, et ainsi de suite.