Métaobjet
# Métaobjet

Un métaobjet est la réification des entités d'un objet, comme son interface, sa classe, ses méthodes, etc.

## Description

En informatique, un méta-objet est un objet qui manipule, crée, décrit ou met en œuvre des objets (y compris lui-même). L'objet auquel le méta-objet se rapporte est appelé objet de base. Parmi les informations qu'un méta-objet peut définir figurent le type, l'interface, la classe, les méthodes, les attributs, l'arbre d'analyse, etc. de l'objet de base. Les métaobjets sont des exemples du concept informatique de réflexion, dans lequel un système a accès (généralement au moment de l'exécution) à sa propre structure interne. La réflexion permet à un système de se réécrire à la volée, de modifier sa propre mise en œuvre au fur et à mesure de son exécution.

## Protocole de métaobjet

Un protocole de métaobjet (MOP) fournit le vocabulaire (protocole) pour accéder et manipuler la structure et le comportement des systèmes d'objets. Les fonctions typiques d'un protocole de méta-objet sont les suivantes :

* Créer ou supprimer une nouvelle classe
* Créer une nouvelle propriété ou méthode
* Faire en sorte qu'une classe hérite d'une autre classe ("changer la structure de la classe")
* Générer ou modifier le code définissant les méthodes d'une classe.

Un protocole pour les métaobjets n'obéit pas à l'aspect fermé du principe ouvert/fermé, selon lequel les systèmes logiciels doivent être ouverts à l'extension, mais fermés à la modification. Au contraire, un protocole de métaobjet expose de manière transparente la composition interne des objets et la structure complète de tous les objets contenus dans un système.

## Applications

Dans un langage de programmation, un protocole pour les métaobjets fournit des facilités qui peuvent être utilisées pour mettre en œuvre la programmation orientée aspect.

