Traiter erbjuder en finkornig mekanism för att komponera klasser från återanvändbara komponenter samtidigt som man undviker problem med skörhet som orsakas av flera arv och mixins. De drag som ursprungligen föreslogs är statslösa, dvs. de innehåller endast metoder, men inga exempelvariabler. Staten kan endast nås inom statslösa egenskaper av accessors, som blir nödvändiga metoder för egenskapen. Även om detta tillvägagångssätt fungerar någorlunda bra i praktiken, innebär det att många egenskaper, som betraktas som programvarukomponenter, är artificiellt ofullständiga, och klasser som använder sådana egenskaper kan innehålla betydande mängder limkod för pannplattor. Vi presenterar en strategi för statiska drag som är trogna den vägledande principen om statslösa drag: klienten behåller kontrollen över sammansättningen. Statiska drag består av en minimal utvidgning till statslösa drag där variablerna är rent lokala i ett drags omfattning, såvida de inte uttryckligen görs tillgängliga av den komponerande klienten till ett drag. Vi visar med hjälp av en formell objektkalkyl att man genom att lägga till tillstånd till egenskaper bevarar den tillplattande egenskapen: egenskaper som ingår i ett program kan sammanställas bort. Vi diskuterar och jämför två genomförandestrategier, och presenterar kortfattat en fallstudie där statiska egenskaper har använts för att refaktor den dragbaserade versionen av insamlingshierarkin Smalltalk.
Nyligen påpekade REF begränsningar i den egenskapsmodell som orsakas av det faktum att metoder som tillhandahålls av en egenskap endast kan få tillgång till staten genom accessor metoder (som blir nödvändiga metoder för egenskapen).
Stateful traits and their formalization
{'venue': 'Comput. Lang. Syst. Struct.', 'journal': 'Comput. Lang. Syst. Struct.', 'mag_field_of_study': ['Computer Science']}