Un mop smalltalk pour l'etude de la composition et de la compatibilite des metaclasses. Application a la programmation par aspects
Institution:
NantesDisciplines:
Directors:
Abstract EN:
Pas de résumé disponible.
Abstract FR:
Un langage a objets est dit reflexif s'il reifie les entites qui forment les programmes (les methodes, les classes,), et celles qui sont responsables de leur execution (la pile d'execution, la memoire,). La representation de ces entites sous forme d'objets permet de les manipuler et les specialiser via des protocoles qualifies de protocoles de meta-objets ou mops. Dans les langages a classes reflexifs, les classes sont reifiees et sont donc instances d'autres classes : les metaclasses. Ces metaclasses constituent un outil privilegie pour definir et expliciter les proprietes de classes. Pour etudier cet outil, nous proposons un nouveau mop pour smalltalk, qui decrit explicitement les mecanismes d'envoi de messages, de construction des instances et d'acces a leurs structures. Cependant, l'utilisation de ce mop se heurte a deux problemes : celui de la composition des metaclasses, des qu'il s'agit d'attribuer plusieurs proprietes a une meme classe, et celui de la compatibilite lorsque le couplage entre les liens d'heritage et d'instanciation n'est pas pris en compte a la definition de nouvelles (meta)classes. Nous proposons une solution - basee sur l'heritage - a chacun de ces problemes. Une application des metaclasses est leur utilisation comme support a la mise en uvre de la programmation par aspects (aop). L'idee maitresse de ce nouveau paradigme de programmation consiste a introduire une dimension de reutilisation qui complete celle de l'approche objet. Pour ce faire, les logiciels sont decoupes en modules orthogonaux, chacun d'eux decrivant un aspect particulier (distribution, concurrence,). Nous proposons de representer ces aspects a l'aide des metaclasses. Cette approche presente l'avantage de simplifier le probleme de composition d'aspects et de le ramener a un probleme connu - celui de la composition de metaclasses - pour lequel nous disposons d'une solution basee sur l'heritage.