I samband med statiskt maskinskrivna, klassbaserade språk undersöker vi klasser som kan utökas med egenskapssammansättning. Ett drag är en samling metoder utan stat; det kan betraktas som en ofullständig statslös klass. Traiter kan vara sammansatta i alla ordningar, men bara vettigt när de importeras av en klass som ger tillståndsvariabler och ytterligare metoder för att reda ut motstridiga namn som uppstår mellan de importerade egenskaperna. Vi introducerar FeatherTrait Java (FTJ), en konservativ förlängning av den enkla lätta klassbaserade kalkylen Featherweight Java (FJ) med statiskt typade egenskaper. I FTJ, klasser kan byggas med hjälp av egenskaper som grundläggande beteende tegelstenar; metodkonflikter mellan importerade egenskaper måste lösas explicit av användaren antingen genom i) aliasing eller utesluta metodnamn i egenskaper, eller genom ii) överskuggande explicit motstridiga metoder i klassen eller i egenskapen själv. Vi presenterar en operationell semantik med en uppslagningsalgoritm, och ett ljud typsystem som garanterar att utvärdering av ett välskrivet uttryck aldrig ger ett meddelande-inte-förstås runtime fel eller får tolken fast. Vi ger exempel på den ökade expressiva kraften i den dragbaserade arvsmodellen. Den resulterande kalkylen verkar vara en bra utgångspunkt för en rigorös matematisk analys av maskinskrivna klassbaserade språk med dragbaserat arv.
För sammansättning FeatherTrait Java (FTJ) REF förlänger Featherweight Java med egenskaper.
FeatherTrait: A modest extension of Featherweight Java
{'venue': 'TOPL', 'journal': None, 'mag_field_of_study': ['Computer Science']}