Vlastnost (abstraktní typ)

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 8. října 2020; kontroly vyžadují 9 úprav .

Typ (někdy - vlastnost, rys / behaviorální rys , dispozice, z angličtiny  trait ) - abstraktní datový typ používaný jako "jednoduchý konceptuální model pro strukturování objektově orientovaných programů" [1][ specifikovat ] . Koncept se objevil kvůli konfliktům při použití tříd v OOP pro dědičnost. Podobné je to v problémech, které řeší při dědění pomocí rozhraní a mixinů a na rozdíl od nich obsahuje pouze . Specifické jsou také ve způsobu řešení konfliktů – vlastnosti neumožňují shodu názvů metod. Tento koncept byl původně vyvinut skupinou Structural Software Engineering Group na univerzitě v Bernu [2] .

Jsou základem jazyka Rust a jsou zabudovány do jazyka Scala [3] [4] , zahrnutého ve variantě Squeak jazyka Smalltalk od verze 3.9, představené v Perlu 6 (kde se jim říká „role“; pro Perl 5 - implementované jako modul v Moose ), představené v jazyce C# 8.0 (kde se nazývají rozhraní s implementací výchozích metod) jsou také implementovány v rámci Joose pro JavaScript . Plánuje se také zahrnutí vlastností do jazyka ActionScript 3.0 . Modulové mixiny v Ruby jsou poněkud podobné vlastnostem.

V některých programovacích jazycích označují vlastnosti typy, které jsou ve skutečnosti mixiny . Takže například v PHP mohou vlastnosti obsahovat nejen metody, ale také vlastnosti [5] .

Příklad rzi pro existující typ popisující hašování:

vlastnost hash { fn hash ( & self ) -> u64 ; }

Implementace vlastnosti hash pro některý typ - příklady hash metod s odpovídající signaturou:

impl Hash pro bool { fn hash ( & self ) -> u64 { if * self { 0 } else { 1 } } } impl Hash pro i64 { fn hash ( & self ) -> u64 { * jako u64 } }

Poznámky

  1. Zdroj . Získáno 4. srpna 2009. Archivováno z originálu 9. srpna 2017.
  2. SCG: SCG bibliografie . Získáno 4. srpna 2009. Archivováno z originálu dne 4. května 2009.
  3. http://www.scala-lang.org/node/126 Archivováno 27. září 2009 na Wayback Machine A Tour of Scala: Traits
  4. http://www.ibm.com/developerworks/java/library/j-scala04298.html Archivováno 26. srpna 2009 na Wayback Machine Rušný průvodce Java vývojáře po Scale: O vlastnostech a chování
  5. PHP: Vlastnosti – Manuál . php.net. Získáno 15. března 2017. Archivováno z originálu 14. března 2017.

Odkazy