Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Distrbution and Abstract Types in Emerald
IEEE Transactions on Software Engineering - Special issue on distributed systems
Object structure in the Emerald system
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
A semantics of multiple inheritance
Information and Computation - Semantics of Data Types
Inside Smalltalk: vol. 1
Interfaces and specifications for the Smalltalk-80 collection classes
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
The programming language jigsaw: mixins, modularity and multiple inheritance
The programming language jigsaw: mixins, modularity and multiple inheritance
Strongtalk: typechecking Smalltalk in a production environment
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Refactoring object-oriented frameworks
Refactoring object-oriented frameworks
Creating abstract superclasses by refactoring
CSC '93 Proceedings of the 1993 ACM conference on Computer science
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Automatic inheritance hierarchy restructuring and method refactoring
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
On automatic class insertion with overloading
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
ACM Computing Surveys (CSUR)
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The design patterns Smalltalk companion
The design patterns Smalltalk companion
A refactoring tool for Smalltalk
Theory and Practice of Object Systems - Special issue object-oriented software evolution and re-engineering
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
An Incremental Class Reorganization Approach
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
Proceedings of the First JSSST International Symposium on Object Technologies for Advanced Software
Reengineering Object-Oriented Code
ICSM '98 Proceedings of the International Conference on Software Maintenance
A Language Independent Approach for Detecting Duplicated Code
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Simula Begin
Automating three modes of evolution for object-oriented software architectures
COOTS'99 Proceedings of the 5th conference on USENIX Conference on Object-Oriented Technologies & Systems - Volume 5
Proceedings of the 26th International Conference on Software Engineering
Traits: experience with a language feature
OOPSLA '04 Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Supporting Java traits in Eclipse
eclipse '04 Proceedings of the 2004 OOPSLA workshop on eclipse technology eXchange
Mixin modules in a call-by-value setting
ACM Transactions on Programming Languages and Systems (TOPLAS)
Interaction-based programming with classages
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
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)
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
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
Uniform and safe metaclass composition
Computer Languages, Systems and Structures
ISC'06 Proceedings of the 14th international conference on Advances in smalltalk
Implementing software product lines using traits
Proceedings of the 2010 ACM Symposium on Applied Computing
A prototypical Java-like language with records and traits
Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java
Generating a catalog of unanticipated schemas in class hierarchies using Formal Concept Analysis
Information and Software Technology
Checking structural integrity for metadata repository systems by means of description logics
DASFAA'10 Proceedings of the 15th international conference on Database systems for advanced applications
Chai: traits for Java-like languages
ECOOP'05 Proceedings of the 19th 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
TraitRecordJ: A programming language with traits and records
Science of Computer Programming
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 are a programming language technology that promote the reuse of methods between unrelated classes. This paper reports on a refactoring of the Smalltalk collections classes using traits. The original collection classes contained much duplication of code; traits let us remove all of it. We also found places where the protocols of the collections lacked uniformity; traits allowed us to correct these non-uniformities without code duplication.Traits also make it possible to reuse fragments of collection code outside of the existing hierarchy; for example, they make it easy to convert other collection-like things into true collections. Our refactoring reduced the number of methods in the collection classes by approximately 10 per cent. More importantly, understandability maintainability and reusability of the code were significantly improved.