Une approche modulaire de l'initialisation ...
Document type :
Thèse
Title :
Une approche modulaire de l'initialisation d'objets pour Pharo
English title :
A Modular Approach to Object Initialization for Pharo
Author(s) :
Naddeo, Marco [Auteur]
Dipartimento di Informatica [Torino]
Analyses and Languages Constructs for Object-Oriented Application Evolution [RMOD]
Dipartimento di Informatica [Torino]
Analyses and Languages Constructs for Object-Oriented Application Evolution [RMOD]
Thesis director(s) :
Viviana Bono
Stéphane Ducasse
Stéphane Ducasse
Defence date :
2017-11-24
Jury president :
Oscar Nierstrasz
Julien Ponge
Aleksy Schubert
Elena Zucca
Julien Ponge
Aleksy Schubert
Elena Zucca
Jury member(s) :
Oscar Nierstrasz
Julien Ponge
Aleksy Schubert
Elena Zucca
Julien Ponge
Aleksy Schubert
Elena Zucca
Accredited body :
Dipartimento di Informatica, Università degli Studi di Torino
Inria Lille Nord Europe - Laboratoire CRIStAL - Université de Lille
Inria Lille Nord Europe - Laboratoire CRIStAL - Université de Lille
Keyword(s) :
Initialisation
Constructeur
Variables d'instances
Réutilisation
Modularité
Programmation orienté objet
Smalltalk-Pharo
Typage dynamique
Constructeur
Variables d'instances
Réutilisation
Modularité
Programmation orienté objet
Smalltalk-Pharo
Typage dynamique
English keyword(s) :
Object-oriented programming
Dynamic typing
Modularity
Reuse
Instance variables
Initialization
Constructor
Dynamic typing
Modularity
Reuse
Instance variables
Initialization
Constructor
HAL domain(s) :
Informatique [cs]/Langage de programmation [cs.PL]
French abstract :
La modularité du code favorise la réutilisation. Les concepteurs de langages de programmation se sont principalementconsacrés à la modularité des méthodes. À l’inverse, la modularité du code d’initialisation a souvent été ...
Show more >La modularité du code favorise la réutilisation. Les concepteurs de langages de programmation se sont principalementconsacrés à la modularité des méthodes. À l’inverse, la modularité du code d’initialisation a souvent été négligé. Le coded’initialisation de beaucoup de langages orientés objets à classe est laborieux dans plusieurs cas: par exemple, quandquelques champs (i.e., variables d’instances) ont plusieurs options d’initialisation (e.g., un rectangle peut être initialisé avecdes coordonnées Cartésiennes ou polaires), ont une initialisation optionnelle (e.g., un rectangle peut être positionné à unecoordonnée fournie ou à l’origine (0,0) si aucune coordonnée n’est fournie) ou héritent d’une initialisation de la super classe(e.g., un rectangle coloré doit redéfinir tous les constructeurs de sa super classe pour ajouter la notion de couleur). Dans detelles circonstances, le nombre de constructeurs augmente exponentiellement avec les options d’initialisation car l’approched’initialisation manque de modularité.Nous proposons une approche d’initialisation novatrice s’inspirant du langage prototypique Magda. Cette approche est baséesur des modules d’initialisation composables plus petits que les constructeurs classiques. De plus, le nombre de ces modulesaugmente linéairement avec les options d’initialisation. Nous appliquons cette approche à Pharo, un langage orienté objetsdynamiquement typé inspiré de Smalltalk. L’adaptation à Pharo de l’approche d’initialisation de Magda implique la résolutionde nouveaux défis issus du passage d’un contexte statiquement typé à un contexte dynamique.Show less >
Show more >La modularité du code favorise la réutilisation. Les concepteurs de langages de programmation se sont principalementconsacrés à la modularité des méthodes. À l’inverse, la modularité du code d’initialisation a souvent été négligé. Le coded’initialisation de beaucoup de langages orientés objets à classe est laborieux dans plusieurs cas: par exemple, quandquelques champs (i.e., variables d’instances) ont plusieurs options d’initialisation (e.g., un rectangle peut être initialisé avecdes coordonnées Cartésiennes ou polaires), ont une initialisation optionnelle (e.g., un rectangle peut être positionné à unecoordonnée fournie ou à l’origine (0,0) si aucune coordonnée n’est fournie) ou héritent d’une initialisation de la super classe(e.g., un rectangle coloré doit redéfinir tous les constructeurs de sa super classe pour ajouter la notion de couleur). Dans detelles circonstances, le nombre de constructeurs augmente exponentiellement avec les options d’initialisation car l’approched’initialisation manque de modularité.Nous proposons une approche d’initialisation novatrice s’inspirant du langage prototypique Magda. Cette approche est baséesur des modules d’initialisation composables plus petits que les constructeurs classiques. De plus, le nombre de ces modulesaugmente linéairement avec les options d’initialisation. Nous appliquons cette approche à Pharo, un langage orienté objetsdynamiquement typé inspiré de Smalltalk. L’adaptation à Pharo de l’approche d’initialisation de Magda implique la résolutionde nouveaux défis issus du passage d’un contexte statiquement typé à un contexte dynamique.Show less >
English abstract : [en]
Code modularity is important for code reuse. Language designers mainly focused on method code modularity. On thecontrary, initialization code modularity has usually been neglected. The initialization code of many class-based ...
Show more >Code modularity is important for code reuse. Language designers mainly focused on method code modularity. On thecontrary, initialization code modularity has usually been neglected. The initialization code of many class-based object-orientedlanguages becomes cumbersome in different situations: for example, when some fields have multiple initializationoptions (e.g., a rectangle can be positioned by providing Cartesian or polar coordinates), have optional initialization (e.g., arectangle can be positioned in the origin (0,0) if no other coordinates are provided), or have superclass initialization (e.g., acolored rectangle must redefine all the constructors of its rectangle superclass to add the notion of color). In such cases, thenumber of constructors increases exponentially in the size of the initialization options, since the initialization approach lacksmodularity.We propose a novel approach to field initialization, inspired by the prototypical language Magda. This approach is based oneasy-to-compose initialization modules, which result to be smaller compared to classical constructors. Moreover, theirnumber grows linearly in the size of the initialization options. We apply such approach to Pharo, a dynamically-typed object-orientedprogramming language inspired by Smalltalk. The adaptation to Pharo of Magda’s initialization approach impliessolving some new challenges related to moving from a statically typed context to a dynamically typed one.Show less >
Show more >Code modularity is important for code reuse. Language designers mainly focused on method code modularity. On thecontrary, initialization code modularity has usually been neglected. The initialization code of many class-based object-orientedlanguages becomes cumbersome in different situations: for example, when some fields have multiple initializationoptions (e.g., a rectangle can be positioned by providing Cartesian or polar coordinates), have optional initialization (e.g., arectangle can be positioned in the origin (0,0) if no other coordinates are provided), or have superclass initialization (e.g., acolored rectangle must redefine all the constructors of its rectangle superclass to add the notion of color). In such cases, thenumber of constructors increases exponentially in the size of the initialization options, since the initialization approach lacksmodularity.We propose a novel approach to field initialization, inspired by the prototypical language Magda. This approach is based oneasy-to-compose initialization modules, which result to be smaller compared to classical constructors. Moreover, theirnumber grows linearly in the size of the initialization options. We apply such approach to Pharo, a dynamically-typed object-orientedprogramming language inspired by Smalltalk. The adaptation to Pharo of Magda’s initialization approach impliessolving some new challenges related to moving from a statically typed context to a dynamically typed one.Show less >
Language :
Anglais
Collections :
Source :
Files
- https://hal.inria.fr/tel-01651738v2/document
- Open access
- Access the document
- https://hal.inria.fr/tel-01651738v2/document
- Open access
- Access the document
- https://hal.inria.fr/tel-01651738v2/document
- Open access
- Access the document
- document
- Open access
- Access the document
- NaddeoPhDthesis_revised_new.pdf
- Open access
- Access the document