Trait (computer programming)

This is an old revision of this page, as edited by Daira Emma Hopwood (talk | contribs) at 18:24, 30 April 2010 (External links: traitsjs.org). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In computer programming, a trait is a collection of methods, used as a "simple conceptual model for structuring object oriented programs".[1] Traits are similar to mixins, but whereas mixins can be composed only using the inheritance operation, traits offer a much wider selection of operations, including symmetric sum, method exclusion, and aliasing. A Trait differs from an abstract type in that it provides implementations of its methods, not just type signatures.

Traits are supported as a native language feature in the Fortress programming language (where they also play the role of types), in the Scala programming language, [2] [3] the Squeak version of Smalltalk from version 3.9, and in Perl 6 (which calls them "roles"), as an add-on by the Moose module for Perl 5 and the Joose framework for JavaScript, and have been proposed for inclusion in PHP, ActionScript 3.0, and ECMAScript [1]. Module mixins in Ruby are similar to traits to some degree.

Traits were initially developed at the Software Composition Group, University of Berne.[4]

References