Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
The C++ programming language
Object-oriented programming with flavors
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Encapsulation and inheritance in object-oriented programming languages
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Metaclasses are first class: The ObjVlisp Model
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
A programmer's guide to object-oriented programming in Common LISP
A programmer's guide to object-oriented programming in Common LISP
Designing families of data types using exemplars
ACM Transactions on Programming Languages and Systems (TOPLAS)
A fast method dispatcher for compiled languages with multiple inheritance
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
A denotational semantics of inheritance and its correctness
OOPSLA '89 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
Strong typing of object-oriented languages revisited
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
A parallel object-oriented language with inheritance and subtyping
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Smalltalk: subclassing subtyping is-a
Journal of Object-Oriented Programming
Organizing programs without classes
Lisp and Symbolic Computation
Eiffel: the language
The design and implementation of hierarchical software systems with reusable components
ACM Transactions on Software Engineering and Methodology (TOSEM)
Interfaces and specifications for the Smalltalk-80 collection classes
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
Monotonic conflict resolution mechanisms for inheritance
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
Subject-oriented programming: a critique of pure objects
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Software component design-for-reuse: a language-independent discipline applied to ADA
Software component design-for-reuse: a language-independent discipline applied to ADA
Part I: the RESOLVE framework and discipline: a research synopsis
ACM SIGSOFT Software Engineering Notes
Part II: specifying components in RESOLVE
ACM SIGSOFT Software Engineering Notes
Part III: implementing components in RESOLVE
ACM SIGSOFT Software Engineering Notes
Part IV: RESOLVE components in Ada and C++
ACM SIGSOFT Software Engineering Notes
Component-based software using RESOLVE
ACM SIGSOFT Software Engineering Notes
Covariance and contravariance: conflict without a cause
ACM Transactions on Programming Languages and Systems (TOPLAS)
Theory and Practice of Object Systems - Special issue: type systems
A monotonic superclass linearization for Dylan
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Using role components in implement collaboration-based designs
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
ACM Computing Surveys (CSUR)
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
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
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Putting metaclasses to work: a new dimension in object-oriented programming
Putting metaclasses to work: a new dimension in object-oriented programming
N degrees of separation: multi-dimensional separation of concerns
Proceedings of the 21st international conference on Software engineering
Space and time-efficient memory layout for multiple inheritance
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Experience report: using RESOLVE/C++ for commercial software
SIGSOFT '00/FSE-8 Proceedings of the 8th ACM SIGSOFT international symposium on Foundations of software engineering: twenty-first century applications
The Programming Language Aspects of ThingLab, a Constraint-Oriented Simulation Laboratory
ACM Transactions on Programming Languages and Systems (TOPLAS)
STL tutorial and reference guide, second edition: C++ programming with the standard template library
STL tutorial and reference guide, second edition: C++ programming with the standard template library
Modular mixin-based inheritance for application frameworks
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The Smalltalk-76 programming system design and implementation
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The C++ Programming Language, Third Edition
The C++ Programming Language, Third Edition
Object-Oriented Design Heuristics
Object-Oriented Design Heuristics
Object-Oriented Software Construction
Object-Oriented Software Construction
The Art of the Metaobject Protocol
The Art of the Metaobject Protocol
Integrating independent components with on-demand remodularization
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Interfaces with default implementations in Java
PPPJ '02/IRE '02 Proceedings of the inaugural conference on the Principles and Practice of programming, 2002 and Proceedings of the second workshop on Intermediate representation engineering for virtual machines, 2002
Mixin-Based Programming in C++
GCSE '00 Proceedings of the Second International Symposium on Generative and Component-Based Software Engineering-Revised Papers
Layered Development with (Unix) Dynamic Libraries
ICSR-7 Proceedings of the 7th International Conference on Software Reuse: Methods, Techniques, and Tools
Inheritance as an Incremental Modification Mechanism or What Like Is and Isn't Like
ECOOP '88 Proceedings of the European Conference on Object-Oriented Programming
Implementing Layered Designs with Mixin Layers
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Explicit Metaclasses as a Tool for Improving the Design of Class Libraries
ISOTAS '96 Proceedings of the Second JSSST International Symposium on Object Technologies for Advanced Software
Using C++ Templates to Implement Role-Based Designs
ISOTAS '96 Proceedings of the Second JSSST International Symposium on Object Technologies for Advanced Software
Proceedings of the 25th International Conference on Software Engineering
The Lambda library: unnamed functions in C++
Software—Practice & Experience
Extending object oriented programming in Smalltalk
LFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
Traits: An approach to multiple-inheritance subclassing
Proceedings of the SIGOA conference on Office information systems
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
Proceedings of the 26th International Conference on Software Engineering
Common Lisp: The Language
Uniform and safe metaclass composition
Computer Languages, Systems and Structures
Safe metaclass composition using mixin-based inheritance
Computer Languages, Systems and Structures
The story of moose: an agile reengineering environment
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Software extension and integration with type classes
Proceedings of the 5th international conference on Generative programming and component engineering
cJ: enhancing java with safe type conditions
Proceedings of the 6th international conference on Aspect-oriented software development
Using Microcomponents and Design Patterns to Build Evolutionary Transaction Services
Electronic Notes in Theoretical Computer Science (ENTCS)
Making generic functions useable in Smalltalk
ACM-SE 45 Proceedings of the 45th annual southeast regional conference
User-changeable visibility: resolving unanticipated name clashes in traits
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
RPython: a step towards reconciling dynamically and statically typed OO languages
Proceedings of the 2007 symposium on Dynamic languages
Creating sophisticated development tools with OmniBrowser
Computer Languages, Systems and Structures
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
ICDL '07 Proceedings of the 2007 international conference on Dynamic languages: in conjunction with the 15th International Smalltalk Joint Conference 2007
Integrating coercion with subtyping and multiple dispatch
Proceedings of the 2008 ACM symposium on Applied computing
Extending FeatherTrait Java with Interfaces
Theoretical Computer Science
Systematically refactoring inheritance to delegation in java
Proceedings of the 30th international conference on Software engineering
Proceedings of the 2008 AOSD workshop on Software engineering properties of languages and aspect technologies
A trait based re-engineering technique for Java hierarchies
Proceedings of the 6th international symposium on Principles and practice of programming in Java
Type safe dynamic object delegation in class-based languages
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
Practical, pluggable types for a dynamic language
Computer Languages, Systems and Structures
A pattern language for extensible program representation
Proceedings of the 2006 conference on Pattern languages of programs
Domain-specific languages and program generation with meta-AspectJ
ACM Transactions on Software Engineering and Methodology (TOSEM)
Mixing source and bytecode: a case for compilation by normalization
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Technologies for Evolvable Software Products: The Conflict between Customizations and Evolution
Advances in Software Engineering
A mechanism for flexible dynamic trait replacement
Proceedings of the 11th International Workshop on Formal Techniques for Java-like Programs
The ARC Programming Model -- Language Constructs for Coordination
Electronic Notes in Theoretical Computer Science (ENTCS)
Efficient virtual machine support of runtime structural reflection
Science of Computer Programming
Types for Proofs and Programs
I-Java: An Extension of Java with Incomplete Objects and Object Composition
SC '09 Proceedings of the 8th International Conference on Software Composition
Adding State and Visibility Control to Traits Using Lexical Nesting
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
CZ: multiple inheritance without diamonds
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Lessons in Software Evolution Learned by Listening to Smalltalk
SOFSEM '10 Proceedings of the 36th Conference on Current Trends in Theory and Practice of Computer Science
Challenging VMs on battery-powered embedded devices
Proceedings of the Third Workshop on Virtual Machines and Intermediate Languages
Evolving a reflective language: lessons learned from implementing traits
IWST '09 Proceedings of the International Workshop on Smalltalk Technologies
Object-relational mapping with SqueakSave
IWST '09 Proceedings of the International Workshop on Smalltalk Technologies
A calculus for uniform feature composition
ACM Transactions on Programming Languages and Systems (TOPLAS)
ISC'06 Proceedings of the 14th international conference on Advances in smalltalk
ISC'06 Proceedings of the 14th international conference on Advances in smalltalk
Types and modularity for implicit invocation with implicit announcement
ACM Transactions on Software Engineering and Methodology (TOSEM)
Implementing software product lines using traits
Proceedings of the 2010 ACM Symposium on Applied Computing
Practical conflict resolution for the composition of program transformations
SC'08 Proceedings of the 7th international conference on Software composition
Integrating coercion with subtyping and multiple dispatch
Science of Computer Programming
Type safety for feature-oriented product lines
Automated Software Engineering
A prototypical Java-like language with records and traits
Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Pure delta-oriented programming
FOSD '10 Proceedings of the 2nd International Workshop on Feature-Oriented Software Development
MetaFJig: a meta-circular composition language for Java-like classes
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Delta-oriented programming of software product lines
SPLC'10 Proceedings of the 14th international conference on Software product lines: going beyond
Morphing: Structurally shaping a class by reflecting on others
ACM Transactions on Programming Languages and Systems (TOPLAS)
Event-specific software composition in context-oriented programming
SC'10 Proceedings of the 9th international conference on Software composition
Metamodeling semantics of multiple inheritance
Science of Computer Programming
Compositional type-checking for delta-oriented programming
Proceedings of the tenth international conference on Aspect-oriented software development
Making aspects natural: events and composition
Proceedings of the tenth international conference on Aspect-oriented software development
JavaGI: The Interaction of Type Classes with Interfaces and Inheritance
ACM Transactions on Programming Languages and Systems (TOPLAS)
An open implementation for context-oriented layer composition in ContextJS
Science of Computer Programming
Delegation by object composition
Science of Computer Programming
Deriving functional interface specifications for composite components
SC'11 Proceedings of the 10th international conference on Software composition
Counting messages as a proxy for average execution time in pharo
Proceedings of the 25th European conference on Object-oriented programming
First-class state change in plaid
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Flexible object layouts: enabling lightweight language extensions by intercepting slot access
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Pattern matching for object-like structures in the Go programming language
Proceedings of the 6th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems
Verifying traits: a proof system for fine-grained reuse
Proceedings of the 13th Workshop on Formal Techniques for Java-Like Programs
Object reuse and behavior adaptation in Java-like languages
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
Proceedings of the Sixth International Workshop on Variability Modeling of Software-Intensive Systems
Delta modeling in practice: a Fredhopper case study
Proceedings of the Sixth International Workshop on Variability Modeling of Software-Intensive Systems
On the extensibility requirements of business applications
Proceedings of the 2012 workshop on Next Generation Modularity Approaches for Requirements and Architecture
MDE-based FPGA physical design: fast model-driven prototyping with Smalltalk
Proceedings of the International Workshop on Smalltalk Technologies
Talents: dynamically composable units of reuse
Proceedings of the International Workshop on Smalltalk Technologies
A pattern language for extensible program representation
Transactions on Pattern Languages of Programming I
A calculus for boxes and traits in a java-like setting
COORDINATION'10 Proceedings of the 12th international conference on Coordination Models and Languages
Type checking annotation-based product lines
ACM Transactions on Software Engineering and Methodology (TOSEM)
Proceedings of the 27th Annual ACM Symposium on Applied Computing
Abstract delta modeling: my research plan
Proceedings of the 16th International Software Product Line Conference - Volume 2
Magda: a new language for modularity
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Supporting multiple feature binding strategies in NX
FOSD '12 Proceedings of the 4th International Workshop on Feature-Oriented Software Development
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
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
Natural and Flexible Error Recovery for Generated Modular Language Environments
ACM Transactions on Programming Languages and Systems (TOPLAS)
A meta-circular language for active libraries
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
Transactions on Aspect-Oriented Software Development IX
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
TraitRecordJ: A programming language with traits and records
Science of Computer Programming
Correctness of intrusive data structures using mixins
Proceedings of the 16th International ACM Sigsoft symposium on Component-based software engineering
On flexible dynamic trait replacement for Java-like languages
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
Forsaking inheritance: supercharged delegation in DelphJ
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Features, modularity, and variation points
Proceedings of the 5th International Workshop on Feature-Oriented Software Development
AspectMaps: Extending Moose to visualize AOP software
Science of Computer Programming
Compile-time reflection and metaprogramming for Java
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Proceedings of the Eighth International Workshop on Variability Modelling of Software-Intensive Systems
A hybrid class- and prototype-based object model to support language-neutral structural intercession
Information and Software Technology
Hi-index | 0.00 |
Inheritance is well-known and accepted as a mechanism for reuse in object-oriented languages. Unfortunately, due to the coarse granularity of inheritance, it may be difficult to decompose an application into an optimal class hierarchy that maximizes software reuse. Existing schemes based on single inheritance, multiple inheritance, or mixins, all pose numerous problems for reuse. To overcome these problems we propose traits, pure units of reuse consisting only of methods. We develop a formal model of traits that establishes how traits can be composed, either to form other traits, or to form classes. We also outline an experimental validation in which we apply traits to refactor a nontrivial application into composable units.