Protocole à méta-objets
Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Un protocole à méta-objets est une technique en informatique qui consiste à faire de l'interprète d'un programme un objet de première classe, au même titre que ceux qui composent le programme. Il est ainsi possible de le réécrire afin de changer l'interprétation du programme. Cette technique est répandue notamment dans les interprètes des langages à objets, bien qu'elle ne soit pas spécifique à ce paradigme de programmation (La programmation dans le domaine informatique est l'ensemble des activités qui permettent l'écriture des programmes informatiques. C'est une étape importante...). Il faut également bien comprendre que même si cet article parle d'interprète, les protocoles à méta-objets ne sont pas spécifiques aux langages de programmation interprétés ou exécutés par une machine virtuelle (Le sens originel de machine virtuelle (ou Virtual Machine (VM) en anglais) est la création de plusieurs environnements d'exécution sur un seul ordinateur, dont...).

Pour détailler la notion de protocole à méta-objets (Un protocole à méta-objets est une technique en informatique qui consiste à faire de l'interprète d'un programme un objet de première classe, au même titre que ceux qui composent le programme. Il est ainsi possible de le...), prenons l'exemple d'un appel de méthode. Lorsqu'un programmeur (En informatique, un développeur (ou programmeur) est un informaticien qui réalise du logiciel en créant des algorithmes et en les mettant en œuvre dans un langage de programmation.) écrit par exemple l'instruction (Une instruction est une forme d'information communiquée qui est à la fois une commande et une explication pour décrire l'action, le comportement, la méthode ou la tâche qui devra commencer, se terminer, être conduit, ou...) suivante entier.ajouter(3, 7), il demande implicitement à l'interprète de l'objet (De manière générale, le mot objet (du latin objectum, 1361) désigne une entité définie dans un espace à trois dimensions, qui a une fonction précise,...) entier d'interpréter la méthode ajouter de cet objet avec les paramètres 3 et 7. Appelons entier.interprète l'objet qui encapsule l'interprète de l'objet entier. Ecrire entier.ajouter(3, 7) revient à écrire l'appel entier.interprète.appeler("ajouter", (3, 7)), la transformation (la réification (De manière générale, la réification consiste à transformer ou à transposer une abstraction en un objet concret, à appréhender un concept, comme une chose concrète. Le terme est aussi employé à propos des personnes vivantes.) de l'appel) étant réalisée automatiquement. C'est là que réside toute l'idée des protocoles à méta-objets: le programmeur a alors la possibilité d'utiliser n'importe quel objet pour l'attribut interprète et ainsi définir sa propre sémantique à l'appel de méthode (dans l'exemple). L'objet interprète est habituellement appelé méta-objet, c'est-à-dire objet qui traitent des objets.

Un méta-objet étant un objet comme les autres, il a lui-même un méta-objet associé qui l'interprète, ayant lui-même un méta-objet, et ainsi de suite. Pour éviter que le processus de réification des appels de méthode ne soit infini (Le mot « infini » (-e, -s ; du latin finitus, « limité »), est un adjectif servant à qualifier...), un mécanisme est généralement prévu pour permettre aux objets d'exister sans méta-objet associé. Un interprète auto-suffisant par défaut est alors utilisé pour terminer la récursivité.

Un protocole à méta-objets, c'est une spécification de la manière dont objets et méta-objets interagissent. Il précise en particulier la ou les interfaces que les méta-objets doivent satisfaire, et par la même les instructions de l'interprète qui peuvent être redéfinies. Dans l'exemple des langages à objets, sont inclus la plupart du temps (Le temps est un concept développé par l'être humain pour appréhender le changement dans le monde.) l'instanciation et l'appel de méthode, qui sont les deux instructions majeures (sinon les deux seules) du paradigme de la programmation orientée objet (La programmation par objet (du terme anglo-saxon Object-Oriented Programming ou OOP), est un paradigme de programmation, il consiste en la définition et l'assemblage de briques logicielles appelées...).

Langages de programmation possédant un protocole à méta-objets

  • CLOS de Common Lisp
  • la plupart des extensions objets de Scheme (tinyClos, Goop,...)
  • ...

Bibliographie

  • Gregor Kiczales (1991). The art of the metaobject protocol, ISBN 0-262-61074-4
Page générée en 0.076 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique