Detta dokument introducerar expanderaren, en ny objektorienterad (OO) programmeringsspråkkonstruktion utformad för att stödja objektanpassning. Expanderare tillåter att befintliga klasser inte invasivt uppdateras med nya metoder, fält och superinterfaces. Varje klient kan anpassa sin syn på en klass genom att uttryckligen importera ett antal expanders. Denna uppfattning gäller sedan för alla fall av den klassen, inklusive objekt som skickas till kunden från andra komponenter. En form av expander överskuggande gör det möjligt för expanderare att interagera naturligt med OO-stil arv. Vi beskriver designen, implementeringen och utvärderingen av eJava, en förlängning till Java supporting expanders. Vi illustrerar eJavas syntax och semantik genom flera exempel. Den statiska omfattningen av expander användning möjliggör en modulär statisk typ system som förhindrar flera viktiga klasser av fel. Vi beskriver detta modulära statiska typsystem informellt, formalisera eJava och dess typsystem i en förlängning till Featherweight Java, och bevisa en typ ljudstyrka teorem för formaliseringen. Vi beskriver också en modulär kompileringsstrategi för eJava, som vi har implementerat med hjälp av Polyglot extensible compilator framework. Slutligen illustrerar vi de praktiska fördelarna med eJava genom att använda denna kompilator i två experiment.
Warth och Al. presenterar Expanders REF, en ny programmeringsspråkkonstruktion som specificerar nya metoder, fält och gränssnitt.
Statically scoped object adaptation with expanders
{'venue': "OOPSLA '06", 'journal': None, 'mag_field_of_study': ['Computer Science']}