トレイト
出典: フリー百科事典『ウィキペディア(Wikipedia)』
トレイトとはコンピュータープログラミングにおける概念で、構造的にオブジェクト指向プログラミングを行うための簡素な概念モデルとして使われるメソッド群の集まりである。[1] [2]
目次 |
特徴 [編集]
トレイトには以下の特徴がある:
合成 [編集]
入れ子されたトレイトは平坦なトレイトと等価である[3] トレイトはミクスインと類似しているが、ミクスインでは継承操作のみによってメソッドを合成させるが、トレイトでは、対称的な足し合せ、メソッド排除、別名化など、より多くの方法でメソッドを合成できる。また、トレイトは合成時にメソッドの型指定のみならず実装も与えるという点で、インターフェースとも異なっている。
プログラミング言語 [編集]
サポートする言語
- Smalltalk - 最初のトレイトは Smalltalk 処理系のひとつである Squeak を使ってベルン大学のソフトウェア合成グループによって実装が試され[4]、その有効性が実証された[5]。Squeak にはその後、公式リリースにもトレイトが組み込まれ標準で利用可能となった。Squeak から派生した Pharo も同様。
- PHP - 5.4.0 からサポート[6]。
- Perl - 6 の「ロール」。5 では Moose モジュールで利用可能。なおロールの限定的な用途のみ「トレイト」と呼称し紛らわしい。
- JavaScript の Joose フレームワーク
- Racket - エンティティとしてのトレイトは無いが、ミクスインをトレイトのように振る舞わせる関数やマクロが整備されている
- Ruby のモジュールのmix拡張(試作のみ)[7] - Ruby 2.0 向けの新機能として計画された[8]が運用上の問題が見つかり放棄された[9]。
静的型言語のトレイトの本質は従来のミクスインのままである(平坦化されない)が、平坦なトレイトを模したりミクスインの問題点を回避する拡張を施すなどの工夫により、トレイトに近い使い勝手を実現している
脚注 [編集]
- ^ Nathanael Schärli、Stéphane Ducasse、Oscar Nierstrasz、Andrew P. Black 共著、Traits: Composable Units of Behaviour. Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Lecture Notes in Computer Science 誌、2743巻、Springer-Verlag、2003年、pp. 248-274
- ^ Stéphane Ducasse、Oscar Nierstrasz、Nathanael Schärli、Roel Wuyts、Andrew P. Black 共著: Traits: A mechanism for fine-grained reuse. ACM Trans. Program. Lang. Syst. 誌、28(2): 331-388 (2006)
- ^ http://web.cecs.pdx.edu/~black/publications/TR_CSE_02-012.pdf
- ^ Nathanael Schärli, Stéphane Ducasse, Oscar Nierstrasz, and Andrew P. Black. Traits: Composable Units of Behavior. Technical Report -2, Institut für Informatik, Universität Bern, Switzerland, November 2002
- ^ Andrew P. Black, Nathanael Schärli, and Stéphane Ducasse. Applying Traits to the Smalltalk Collection Hierarchy. Technical Report -2, Institut für Informatik, Universität Bern, Switzerland, November 2002
- ^ Marr, Stefan. “Request for Comments: Horizontal Reuse for PHP”. The PHP.net wiki. The PHP Group. 2011年1月31日閲覧。
- ^ http://marc.info/?l=ruby-cvs&m=130685857122161
- ^ http://www.rubyist.net/~matz/20100617.html
- ^ http://d.hatena.ne.jp/nagachika/20111003/ruby_trunk_changes_33379_33380
- ^ 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://www.iam.unibe.ch/~scg/Research/Traits/
- http://traitsjs.org traits.js - Traits for JavaScript