Programmation orientée prototype

Programmation orientée prototype

La programmation orientée prototype est une forme de programmation orientée objet sans classe, basée sur la notion de prototype. Un prototype est un objet à partir duquel on crée de nouveaux objets. Dans le langage de programmation orientée prototype Self, les propriétés d'un objet, qu'ils renvoient à des attributs ou à des méthodes, sont appelés slots ; il n'y a pas la distinction entre les slots de données et les slots de code qu'on a avec les classes. La grande différence avec la programmation objet à classes est qu'on peut remplacer le contenu des slots, en ajouter d'autres ou changer la hiérarchie d'héritage que cela soit prévu dans l'objet original ou pas.

Self fut le premier langage à prototypes. Il a été conçu dans les laboratoires de Sun dans les années 1990. Le plus connu actuellement est Javascript.

Sommaire

Comparaison des modèles à classes et à prototypes

Objets à classes :

  • Une classe définie par son code source est statique ;
  • Elle représente une définition abstraite de l'objet ;
  • Tout objet est instance d'une classe ;
  • L'héritage se situe au niveau des classes.

Objets à prototypes :

  • Un prototype défini par son code source est mutable ;
  • Il est lui-même un objet au même titre que les autres ;
  • Il a donc une existence physique en mémoire ;
  • Il peut être modifié, appelé ;
  • Il est obligatoirement nommé ;
  • Un prototype peut être vu comme un exemplaire modèle d'une famille d'objet ;
  • Un objet hérite des propriétés (valeurs et méthodes) de son prototype ;

Intérêt de la programmation orientée prototype

Un des intérêts majeurs des prototypes est l'héritage dynamique : tout objet peut changer de parent à l'exécution, n'importe quand.

On peut matérialiser les paradigmes objet à prototypes et objet à classes en constatant la différence d'utilisation de la mémoire.

Il existe à l'heure actuelle plusieurs langages à base d'objets à prototypes : Self, Lisaac, ou encore les langages implémentant la spécification Ecmascript (Javascript, ActionScript, JScript). Self et Javascript sont non typés et sont interprétés. Lisaac et ActionScript sont typés et compilés. À noter également qu'au sein de ActionScript 3.0, l’héritage de prototype ne constitue pas le principal mécanisme d’héritage car ce rôle incombe également à l'héritage de classe désormais présent dans cette version.

Exemple : l'héritage en JavaScript

Les propriétés des objets se recherchent, dans la chaîne des héritages, de la même façon que la valeur des variables dans la pile des contextes d'exécution.

En ECMAScript/JavaScript, l'écriture foo.bar s'interprète de la façon suivante:

  1. Soit contexte la liste des identifiants du code en cours d'exécution (déclarés par var);
  2. tant que contexte existe:
    1. rechercher la chaîne foo dans la liste des identifieurs de contexte;
    2. si foo ne s'y trouve pas, que contexte soit le contexte d'appel de contexte;
  3. si contexte n'existe pas, on a cherché jusque dans le contexte global, qui n'a pas de contexte d'appel: lancer une Erreur de Référence. C'est fini.
  4. si foo se réfère à autre chose qu'un objet, il n'a pas de propriétés; lancer une Erreur de Référence. C'est fini.
  5. Soit objet l'objet foo;
  6. Tant que objet existe:
    1. rechercher la chaîne bar dans la liste des propriétés d' objet;
    2. si bar ne s'y trouve pas, que objet soit le prototype du créateur d' objet;
  7. si objet n'existe pas, on a cherché jusque dans le prototype de l'objet Objet: renvoyer l'objet undefined (indéfini). C'est fini.
  8. renvoyer la référence correspondant à bar. C'est fini.

Il ne s'agit pas d'une copie statique de la variable; chaque fois que le compilateur rencontre l'identifiant, il l'interprête comme indiqué.

Une propriété déclarée dans l'objet étant trouvée en premier, elle masque celles de même nom qui auraient pu exister dans les prototypes dont l'objet hérite. Par exemple, le prototype de l'objet Object possède une méthode toString qui renvoie une description de l'objet, n'importe quel objet: "Object object". Les objets construits par Date() héritent du prototype de cette fonction une méthode toString qui renvoie des informations plus utiles; celle-ci masque la méthode toString de Object.prototype.

Un objet hérite du prototype de son constructeur. Si on ne se sert pas de constructeur pour initialiser un objet, on peut utiliser une fonction vide pour créer ce lien.

var A = {}; // identique à A =  new Object()
var B = ( function() {
        var F = function () {};
        F.prototype = A;
        return new F();
        }());         // à partir de JavaScript 1.8.5 Object.create(A) a le même effet
// à présent A est dans la chaîne de recherche d'identifiants de B
A.compte = 0;
A.separ = ": ";
B.separ = ", "
for ( A.compte = 0 ; A.compte < 10 ; A.compte++) {
     document.write(B.compte + B.separ) // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
}

Cet exemple montre l'héritage d'une propriété qui renvoie à une valeur de type Nombre; l'héritage de références à un objet, y compris une méthode, s'effectue de la même manière.

Langages

Voir aussi

Articles connexes

Liens externes

adobe, « Object - Référence du langage et des composants ActionScript 3.0 » sur help d'adobe, adobe, 2009. Consulté le 7 mai 2009


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Programmation orientée prototype de Wikipédia en français (auteurs)

Игры ⚽ Нужна курсовая?

Regardez d'autres dictionnaires:

  • Programmation orientee prototype — Programmation orientée prototype La programmation orientée prototype est une forme de programmation orientée objet sans classe, basée sur la notion de prototype. Un prototype est un objet à partir duquel on crée de nouveaux objets par clonage. En …   Wikipédia en Français

  • Programmation orientee objet — Programmation orientée objet La programmation orientée objet (POO) ou programmation par objet, est un paradigme de programmation informatique qui consiste en la définition et l assemblage de briques logicielles appelées objets ; un objet… …   Wikipédia en Français

  • Programmation orientée objet — La programmation orientée objet (POO), ou programmation par objet, est un paradigme de programmation informatique élaboré par Alan Kay dans les années 1970. Il consiste en la définition et l interaction de briques logicielles appelées… …   Wikipédia en Français

  • Orientée objet — Programmation orientée objet La programmation orientée objet (POO) ou programmation par objet, est un paradigme de programmation informatique qui consiste en la définition et l assemblage de briques logicielles appelées objets ; un objet… …   Wikipédia en Français

  • Programmation objet — Programmation orientée objet La programmation orientée objet (POO) ou programmation par objet, est un paradigme de programmation informatique qui consiste en la définition et l assemblage de briques logicielles appelées objets ; un objet… …   Wikipédia en Français

  • Programmation à objets — Programmation orientée objet La programmation orientée objet (POO) ou programmation par objet, est un paradigme de programmation informatique qui consiste en la définition et l assemblage de briques logicielles appelées objets ; un objet… …   Wikipédia en Français

  • Programmation — informatique Pour les articles homonymes, voir Programmation (homonymie). La programmation dans le domaine informatique est l ensemble des activités qui permettent l écriture des programmes informatiques. C est une étape importante de la… …   Wikipédia en Français

  • Programmation informatique — Pour les articles homonymes, voir Programmation (homonymie). La programmation dans le domaine informatique est l ensemble des activités qui permettent l écriture des programmes informatiques. C est une étape importante de la conception de… …   Wikipédia en Français

  • Programmation (homonymie) — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Informatique La programmation informatique est l ensemble des activités qui permettent l écriture des programmes informatiques. On distingue… …   Wikipédia en Français

  • Prototype — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Sommaire 1 Dans l industrie 2 En informatique …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”