Raffinement de Classes dans les Langages à Objets Statiquement Typés
Abstract
lasses and specialisation bring simultaneously structure and flexibility to object oriented programs. However, many propositions for model extension (aspects, modules, etc.) prove that these qualities are often considered insufficient. This article proposes two binded notions of class refinement and modules, the former improves flexibility whereas the latter improves structure. Modules contain a coherent set of class definitions and can modify classes defined in modules they depend. This proposition focuses on statically typed languages where modules can be separately compiled. It is based on a module metamodel analogue to the class one and problems with multiple specialisation and refinement are managed like those in multiple inheritance.
Les classes et la spécialisation apportent simultanément structuration et souplesse aux programmes objets. Ces deux qualités sont, malgré tout, souvent considérées comme insuffisantes, comme en témoignent les nombreuses propositions d'extension du modèle (aspects, modules,etc.). Cet article propose deux notions couplées de raffinement de classes et de modules, la première apportant la souplesse et la seconde, la structuration. Les modules regroupent un ensemble cohérent de définitions de classes et ont également la capacité de modifier les classes définies dans les modules dont ils dépendent. Cette proposition se place dans un cadre de typage statique, où les modules sont compilables séparément. Elle est basée sur un méta-modèle des modules analogue à celui des classes et les problèmes liés à la spécialisation ou au raffinement multiple sont traités de façon similaire à l'héritage multiple.
Domains
Other [cs.OH]
Loading...