Inheritance is well-known and accepted as a fundamental mechanism
for reuse in object-oriented languages. Unfortunately, the main variants
--- single inheritance, multiple inheritance, and mixin inheritance
--- all suffer from conceptual and practical problems related to
software reuse and robustness with respect to changes. In a rst part
of this thesis, we identify and illustrate these problems. To overcome
these problems, we then present traits, a simple compositional model
that extends single inheritance. A trait is essentially a (parameterized)
set of methods; it serves as a behavioral building block for classes
and is the primitive unit of code reuse. We develop a formal model
of traits that establishes how traits can be composed to form other
traits or classes, and we describe how we implemented traits in Squeak
Smalltalk by bootstrapping a new language kernel. We present our
experimental validation in which we apply traits to refactor parts
of the Smalltalk kernel and library, and we develop a programming
methodology around the usage of traits and the trait browser, the
tool that we implemented to take full advantage of the availability
of traits in the Squeak programming environment.
%0 Thesis
%1 PHD
%A Schärli, Nathanael
%D 2005
%K SDSeminar Traits
%T Traits --- Composing Classes from Behavioral Building Blocks
%U http://www.iam.unibe.ch/~scg/Archive/PhD/schaerli-phd.pdf
%X Inheritance is well-known and accepted as a fundamental mechanism
for reuse in object-oriented languages. Unfortunately, the main variants
--- single inheritance, multiple inheritance, and mixin inheritance
--- all suffer from conceptual and practical problems related to
software reuse and robustness with respect to changes. In a rst part
of this thesis, we identify and illustrate these problems. To overcome
these problems, we then present traits, a simple compositional model
that extends single inheritance. A trait is essentially a (parameterized)
set of methods; it serves as a behavioral building block for classes
and is the primitive unit of code reuse. We develop a formal model
of traits that establishes how traits can be composed to form other
traits or classes, and we describe how we implemented traits in Squeak
Smalltalk by bootstrapping a new language kernel. We present our
experimental validation in which we apply traits to refactor parts
of the Smalltalk kernel and library, and we develop a programming
methodology around the usage of traits and the trait browser, the
tool that we implemented to take full advantage of the availability
of traits in the Squeak programming environment.
@phdthesis{PHD,
abstract = {Inheritance is well-known and accepted as a fundamental mechanism
for reuse in object-oriented languages. Unfortunately, the main variants
--- single inheritance, multiple inheritance, and mixin inheritance
--- all suffer from conceptual and practical problems related to
software reuse and robustness with respect to changes. In a rst part
of this thesis, we identify and illustrate these problems. To overcome
these problems, we then present traits, a simple compositional model
that extends single inheritance. A trait is essentially a (parameterized)
set of methods; it serves as a behavioral building block for classes
and is the primitive unit of code reuse. We develop a formal model
of traits that establishes how traits can be composed to form other
traits or classes, and we describe how we implemented traits in Squeak
Smalltalk by bootstrapping a new language kernel. We present our
experimental validation in which we apply traits to refactor parts
of the Smalltalk kernel and library, and we develop a programming
methodology around the usage of traits and the trait browser, the
tool that we implemented to take full advantage of the availability
of traits in the Squeak programming environment.},
added-at = {2008-06-20T12:15:49.000+0200},
author = {Sch{\"a}rli, Nathanael},
biburl = {https://www.bibsonomy.org/bibtex/22871a6f75912c371665ad7b85a371e71/gron},
cvs = {NSchaerliPhD},
description = {Traits},
file = {schaerli-phd.pdf:Traits\\schaerli-phd.pdf:PDF},
interhash = {e49d4e815038a59300c50108c6001984},
intrahash = {2871a6f75912c371665ad7b85a371e71},
keywords = {SDSeminar Traits},
month = {February},
school = {University of Berne},
timestamp = {2008-06-20T12:17:58.000+0200},
title = {{Traits --- Composing Classes from Behavioral Building Blocks}},
url = {http://www.iam.unibe.ch/~scg/Archive/PhD/schaerli-phd.pdf},
year = 2005
}