Saisir un mot clé:
 
 

Réflexion_(informatique)

Ce site est un miroir du site http://fr.wikipedia.org/wiki/Accueil

google_ad_height = 15; google_ad_format = "728x15_0ads_al"; google_ad_channel =""; google_color_border = "f9f9f9"; google_color_bg = "FFFFFF"; google_color_link = "0000FF"; google_color_url = "008000"; google_color_text = "000000"; //-->

Un article de Wikipedia.y-project.com.

En programmation informatique, la réflexion est la capacité d'un programme à examiner, et éventuellement à , ses structures internes de haut niveau (par exemple ses objets) lors de son exécution.

Sommaire

[] Introspection et intercession

On distingue deux techniques utilisés par les systèmes dotés de réflexion :

  • l'introspection, qui est la capacité d'un programme à examiner sur son propre état.
  • l'intercession, qui est la capacité d'un programme à son propre état d'exécution ou d'altérer sa propre interprétation ou signification.

L'introspection est utilisée pour effectuer des mesures de performance, inspecter des modules ou déboguer un programme. Elle est implémentée dans des langage comme SmallTalk ou Java qui fournissent des outils pour connaître la classe d'un objet, ses attributs, ses méthodes, etc. L'introspection n'existe pas dans des langages comme le C ou le Pascal.

L'intercession permet à un programme d'évoluer automatiquement en fonction des besoins et de l'environnement. Cette propriété apparaît dans des langages comme SmallTalk ou Python, mais elle n'existe pas dans des langages comme Java.

[] Réflexion structurelle et réflexion comportementale

Parallèlement aux concepts d'introspection et d'intercession, il existe deux types de réflexion : la réflexion structurelle et la réflexion comportementale.

La réflexion structurelle consiste à réifier le code d'un programme et tous les types abstraits accessibles par ce programme. Dans le premier cas, la réification du code d'un programme permet de manipuler ce programme pendant l'exécution. Il est possible ainsi de maintenir un programme même lorsque celui effectue des tâches. Dans le deuxième cas, la réification des types abstraits permet au programme permet d'examiner et de la structure de types complexes. On peut ainsi, par exemple, mettre au point des algorithmes génériques de sérialisation.

La réflexion comportementale (ou réflexion de comportement) concerne plus particulièrement l'exécution du programme et l'environnement du programme. Par ce type de réflexion, un programme a moyen de savoir comment est-ce qu'il est interprété et a la possibilité de sa façon d'être exécuté, en intervenant sur les structures de données de l'évaluateur du programme et sur l'évaluateur lui-même. De cette manière, le programme peut par exemple obtenir des informations sur son implémentation ou même s'auto-réorganiser afin de s'adapter au mieux à un « environnement ».

[] Réflexion et programmation objet

En programmation orientée objet, l'architecture réflexive est implémentée par le concept des métaobjets. Ceux-ci représentent des éléments des programmes orientés objets comme les classes, les messages et les fonctions génériques. La manipulation ces métaobjets se fait par un protocole à métaobjets qui permet de décider des comportements du langage. CLOS est le premier langage à avoir implémenté un protocole à métaobjets.

[] Langage réflexif

Les langages suivant supportent la réflexion :

Dans les langages ou il n'y a pas de disctinction entre la compilation et l'éxecution (Lisp par exemple), il n'y a pas de différence entre l'interprétation du code et la réflexion.

[] Exemple

L'exemple suivant est écrit en Java :

// Sans utiliser la réflexion
Foo foo = new Foo ();
foo.hello ();
// En utilisant la réflexion
Class cl = Class.forName ("Foo");
Method method = cl.getMethod ("hello", null);
method.invoke (cl.newInstance (), null);

Les deux morceaux de code créent une instance de la classe Foo et appellent leur méthode hello.

Dans le premier programme, le nom des classes et des méthodes est codé en dur, il n'est pas possible d'utiliser le nom d'une autre classe. Dans le second programme, en revanche, le nom des classe et des méthodes peut varier à l'execution.

[] Bibliographie

  • D. G. Bobrow, R. G. Gabriel, and J. L. White. Object oriented programming: the CLOS perpective. MIT Press, 1993.
  • G. Kickzales, J. des Rivières, and D. G. Bobrow. The art of the metaobject protocol. MIT Press, 1991.

[] Voir aussi

 
Le Texte ci-dessus est disponible sous GNU Free Documentation License.
La source est wikipedia http://fr.wikipedia.org/wiki/Réflexion (informatique)
Home

Données
A la une
Articles
Formatons en lignes
Téléchargement
Licence GNU
Encyclopedie
Portail logiciels libres

Partenaires

beyrouthsurseine.com
Sonnerie & Logos
Photos-Video
Ringtones-Sonnerie
Actualite.org
Terrain tennis

  
Décembre 2008
L
M
M
J
V
S
D
1234567
891011121314
15161718192021
22232425 262728
293031
     
Tous les Logos et Marques sont déposés, les commentaires sont sous la responsabilité de ceux qui les ont publiés, le reste © technicmania.com