Une approche modulaire de l'initialisation ...
Type de document :
Thèse
Titre :
Une approche modulaire de l'initialisation d'objets pour Pharo
Titre en anglais :
A Modular Approach to Object Initialization for Pharo
Auteur(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]
Directeur(s) de thèse :
Viviana Bono
Stéphane Ducasse
Stéphane Ducasse
Date de soutenance :
2017-11-24
Président du jury :
Oscar Nierstrasz
Julien Ponge
Aleksy Schubert
Elena Zucca
Julien Ponge
Aleksy Schubert
Elena Zucca
Membre(s) du jury :
Oscar Nierstrasz
Julien Ponge
Aleksy Schubert
Elena Zucca
Julien Ponge
Aleksy Schubert
Elena Zucca
Organisme de délivrance :
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
Mot(s)-clé(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
Mot(s)-clé(s) en anglais :
Object-oriented programming
Dynamic typing
Modularity
Reuse
Instance variables
Initialization
Constructor
Dynamic typing
Modularity
Reuse
Instance variables
Initialization
Constructor
Discipline(s) HAL :
Informatique [cs]/Langage de programmation [cs.PL]
Résumé :
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é ...
Lire la suite >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.Lire moins >
Lire la suite >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.Lire moins >
Résumé en anglais : [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 ...
Lire la suite >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.Lire moins >
Lire la suite >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.Lire moins >
Langue :
Anglais
Collections :
Source :
Fichiers
- https://hal.inria.fr/tel-01651738v2/document
- Accès libre
- Accéder au document
- https://hal.inria.fr/tel-01651738v2/document
- Accès libre
- Accéder au document
- https://hal.inria.fr/tel-01651738v2/document
- Accès libre
- Accéder au document
- document
- Accès libre
- Accéder au document
- NaddeoPhDthesis_revised_new.pdf
- Accès libre
- Accéder au document