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]
External links
References
- ^ http://web.cecs.pdx.edu/~black/publications/TR_CSE_02-012.pdf
- ^ http://www.scala-lang.org/node/126 A Tour of Scala: Traits
- ^ http://www.ibm.com/developerworks/java/library/j-scala04298.html The busy Java developer's guide to Scala: Of traits and behaviors
- ^ http://scg.unibe.ch/cgi-bin/scgbib.cgi?query=nathanael+traits+composable+units+ecoop