Encapsulation and inheritance in object-oriented programming languages
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Organizing programs without classes
Lisp and Symbolic Computation
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Objective ML: an effective object-oriented extension to ML
Theory and Practice of Object Systems - Third workshop on foundations of object-oriented languages (FOOL 3)
Extreme programming explained: embrace change
Extreme programming explained: embrace change
Enhancement for multiple-inheritance
OOPWORK '86 Proceedings of the 1986 SIGPLAN workshop on Object-oriented programming
Software product lines: practices and patterns
Software product lines: practices and patterns
Featherweight Java: a minimal core calculus for Java and GJ
ACM Transactions on Programming Languages and Systems (TOPLAS)
JTS: Tools for Implementing Domain-Specific Languages
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
Jam---designing a Java extension with mixins
ACM Transactions on Programming Languages and Systems (TOPLAS)
Applying traits to the smalltalk collection classes
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Supporting Java traits in Eclipse
eclipse '04 Proceedings of the 2004 OOPSLA workshop on eclipse technology eXchange
Removing duplication from java.io: a case study using traits
OOPSLA '05 Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Identifying traits with formal concept analysis
Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering
Traits: A mechanism for fine-grained reuse
ACM Transactions on Programming Languages and Systems (TOPLAS)
EMF: Eclipse Modeling Framework 2.0
EMF: Eclipse Modeling Framework 2.0
The Definitive ANTLR Reference: Building Domain-Specific Languages
The Definitive ANTLR Reference: Building Domain-Specific Languages
The java module system: core design and semantic definition
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)
Redesigning with traits: the Nile stream trait-based library
ICDL '07 Proceedings of the 2007 international conference on Dynamic languages: in conjunction with the 15th International Smalltalk Joint Conference 2007
A trait based re-engineering technique for Java hierarchies
Proceedings of the 6th international symposium on Principles and practice of programming in Java
Traits at work: The design of a new trait-based stream library
Computer Languages, Systems and Structures
Derivation and Refinement of Textual Syntax for Models
ECMDA-FA '09 Proceedings of the 5th European Conference on Model Driven Architecture - Foundations and Applications
Featherweight Jigsaw: A Minimal Core Calculus for Modular Composition of Classes
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Implementing software product lines using traits
Proceedings of the 2010 ACM Symposium on Applied Computing
MontiCore: a framework for compositional development of domain specific languages
International Journal on Software Tools for Technology Transfer (STTT)
A prototypical Java-like language with records and traits
Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java
DSL evolution through composition
Proceedings of the 7th Workshop on Reflection, AOP and Meta-Data for Software Evolution
Incremental reasoning with lazy behavioral subtyping for multiple inheritance
Science of Computer Programming
Language boxes: bending the host language with modular language changes
SLE'09 Proceedings of the Second international conference on Software Language Engineering
Chai: traits for Java-like languages
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
GTTSE'05 Proceedings of the 2005 international conference on Generative and Transformational Techniques in Software Engineering
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Combining traits with boxes and ownership types in a Java-like setting
Science of Computer Programming
Implementing Java-like languages in Xtext with Xsemantics
Proceedings of the 28th Annual ACM Symposium on Applied Computing
Pure trait-based programming on the Java platform
Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools
Hi-index | 0.00 |
Traits have been designed as units for fine-grained reuse of behavior in the object-oriented paradigm. Records have been devised to complement traits for fine-grained reuse of state. In this paper, we present the language TraitRecordJ, a Java dialect with records and traits. Records and traits can be composed by explicit linguistic operations, allowing code manipulations to achieve fine-grained code reuse. Classes are assembled from (composite) records and traits and instantiated to generate objects. We introduce the language through examples and illustrate the prototypical implementation of TraitRecordJ using Xtext, an Eclipse framework for the development of programming languages as well as other domain-specific languages. Our implementation comprises an Eclipse-based editor for TraitRecordJ with typical IDE functionalities, and a stand-alone compiler, which translates TraitRecordJ programs into standard Java programs. As a case study, we present the TraitRecordJ implementation of a part of the software used in a web-based information system previously implemented in Java.