Reuse in object-oriented languages typically focuses on inheritance. Numerous techniques have been developed to provide finer-grained reuse of methods, such as flavors, mixins and traits. These techniques, however, only deal with reuse at the level of classes. Class-based reuse is inherently static. Increasing use of reflection and meta-programming techniques in real world applications underline the need for more dynamic approaches. We propose a new approach that deals with reuse at the object level and that supports behavioral composition. We introduce a new abstraction called a talent which models features that are shared between objects of different class hierarchies. Talents provide a composition mechanism that is as flexible as that of traits but which is dynamic.
To get started you can either use a ready-made one-click image (suggested), or try to load the code yourself.
Gofer new squeaksource: 'talents'; package: 'ConfigurationOfTalents'; load. (Smalltalk at: #ConfigurationOfTalents) perform: #loadDefault.