Object structure in the Emerald system
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Using prototypical objects to implement shared behavior in object-oriented systems
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Objects as closures: abstract semantics of object-oriented languages
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Organizing programs without classes
Lisp and Symbolic Computation
The revised report on the syntactic theories of sequential control and state
Theoretical Computer Science
The programming language jigsaw: mixins, modularity and multiple inheritance
The programming language jigsaw: mixins, modularity and multiple inheritance
Directness and liveness in the morphic user interface construction environment
Proceedings of the 8th annual ACM symposium on User interface and software technology
Object-oriented programming in the BETA programming language
Object-oriented programming in the BETA programming language
Back to the future: the story of Squeak, a practical Smalltalk written in itself
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Programming as an Experience: The Inspiration for Self
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
An Imperative, First-Order Calculus with Object Extension
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
Traits: A mechanism for fine-grained reuse
ACM Transactions on Programming Languages and Systems (TOPLAS)
Robust composition: towards a unified approach to access control and concurrency control
Robust composition: towards a unified approach to access control and concurrency control
User-changeable visibility: resolving unanticipated name clashes in traits
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Stateful traits and their formalization
Computer Languages, Systems and Structures
FeatherTrait: A modest extension of Featherweight Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
AmbientTalk: Object-oriented Event-driven Programming in Mobile Ad hoc Networks
SCCC '07 Proceedings of the XXVI International Conference of the Chilean Society of Computer Science
Type safe dynamic object delegation in class-based languages
Proceedings of the 6th international symposium on Principles and practice of programming in Java
Chai: traits for Java-like languages
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Ambient-Oriented programming in ambienttalk
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Scheme with classes, mixins, and traits
APLAS'06 Proceedings of the 4th Asian conference on Programming Languages and Systems
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Modular composition and state update in Plaid
Proceedings of the 4th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance
First-class state change in plaid
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Traits.js: robust object composition and high-integrity objects for ecmascript 5
Proceedings of the 1st ACM SIGPLAN international workshop on Programming language and systems technologies for internet clients
Using roles to model crosscutting concerns
Proceedings of the 12th annual international conference on Aspect-oriented software development
Context traits: dynamic behaviour adaptation through run-time trait recomposition
Proceedings of the 12th annual international conference on Aspect-oriented software development
Hi-index | 0.00 |
Traits are reusable building blocks that can be composed to share methods across unrelated class hierarchies. Original traits are stateless and cannot express visibility control for methods. Two extensions, stateful traits and freezable traits, have been proposed to overcome these limitations. However, these extensions introduce complexity and have not yet been combined to simultaneously add both state and visibility control to traits. This paper revisits the addition of state and visibility control to traits. Rather than extending the original traits model with additional operations, we allow traits to be lexically nested within other modules. Traits can then have (shared) state and visibility control by hiding variables or methods in their lexical scope. Although the Traits' "flattening property" has to be revisited, the combination of traits with lexical nesting results in a simple and expressive trait model. We discuss an implementation of the model in AmbientTalk and specify its operational semantics.