Evolution du comportement des objets dans les langages a classes reflexifs
暂无分享,去创建一个
L'approche objet concilie deux activites complementaires : la conception d'une application afin de produire un modele informatique et l'implementation de ce modele. La premiere favorise une approche plutot comportementale des objets tandis que la seconde doit prendre en compte leur structure. En nous basant sur les travaux anterieurs dans le domaine du genie logiciel, de l'intelligence artificielle, des bases de donnees, des systemes repartis, et des langages a classes, nous proposons de relacher la contrainte d'immutabilite habituellement posee sur les liens d'instanciation et d'heritage, et ceci dans le cadre des langages a classes reflexifs. Nous etudions alors en quoi cette nouvelle composante evolutive permet une meilleure integration des modelisations a base d'objets, reduisant le fosse qui existe entre la conception et l'implementation d'une application. Munis d'un protocole d'adoption d'instance autorisant tout objet a changer dynamiquement de classe, et d'un protocole permettant la modification dynamique de l'arbre d'heritage d'une classe, nous developpons des exemples d'evolutions caracteristiques. Nous nous interessons plus particulierement au changement dynamique de classe ou l'ancienne et la nouvelle classe sont dans une relation d'heritage. Le changement de classe en largeur traduit alors plus specifiquement des changements d'etat tels qu'ils apparaissent dans les modelisations par graphe de transition d'etat, alors que le changement en profondeur traduit des specialisations du comportement. Generalisant ce dernier type d'evolution, le pattern de specialisation dynamique autorise l'ajout/le retrait dynamique d'un comportement. Applique aux classes, il offre un cadre pour la composition dynamique de leurs proprietes, elles-memes representees par d'autres classes. Cette etude a donne lieu a une nouvelle version de classtalk - neoclasstalk - dont il partage notamment l'elegant noyau. Neoclasstalk integre les protocoles de changement dynamique de classe et de superclasse. De plus, il supporte la reification de l'envoi de messages ou plus exactement, de l'application des methodes. La realisation de neoclasstalk est faite en smalltalk en se basant sur ses principaux aspects reflexifs. Ainsi, poursuivant le travail accompli par classtalk, neoclasstalk se veut un outil de recherche pour l'etude des langages a classes reflexifs.