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. New approaches have shifted to
object-specific reuse. However, these techniques fail to provide a
complete solution to the composition issues arising during reuse.
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.