Trăsătură (tip abstract)

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 8 octombrie 2020; verificările necesită 9 modificări .

Tip (uneori - trăsătură, trăsătură / trăsătură comportamentală , dispoziție, din engleză  trăsătură ) - tip de date abstracte utilizate ca „un model conceptual simplu pentru structurarea programelor orientate pe obiecte[1][ specificați ] . Conceptul a apărut din cauza conflictelor la utilizarea claselor în OOP pentru moștenire. Este similar în problemele pe care le rezolvă atunci când moștenește cu interfețe și mixin -uri și, spre deosebire de acestea, conține doar . Ele sunt, de asemenea, specifice în modul în care rezolvă conflictele - trăsăturile nu permit ca numele metodelor să se potrivească. Conceptul a fost dezvoltat inițial de Structural Software Engineering Group de la Universitatea din Berna [2] .

Ele stau la baza limbajului Rust și sunt construite în limbajul Scala [3] [4] , inclus în varianta Squeak a limbajului Smalltalk încă din versiunea 3.9, introdusă în Perl 6 (unde sunt numite „roluri”; pentru Perl 5 - implementat ca modul în Moose ), introdus în limbajul C# 8.0 (unde se numesc interfețe cu implementări implicite de metodă) sunt implementate și în cadrul Joose pentru JavaScript . Există, de asemenea, planuri de a include trăsături în ActionScript 3.0 . Mixinele de module din Ruby sunt oarecum similare cu trăsăturile.

În unele limbaje de programare, trăsăturile se referă la tipuri care sunt de fapt mixin . Deci, de exemplu, în PHP , trăsăturile pot conține nu numai metode, ci și proprietăți [5] .

Exemplu de rugină pentru un tip existent care descrie hashing:

hash de trăsătură { fn hash ( & self ) -> u64 ; }

Implementarea trăsăturii Hash pentru un anumit tip - exemple de metode hash cu semnătura corespunzătoare:

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

Note

  1. Sursa . Preluat la 4 august 2009. Arhivat din original la 9 august 2017.
  2. SCG: SCG Bibliografie . Preluat la 4 august 2009. Arhivat din original la 4 mai 2009.
  3. http://www.scala-lang.org/node/126 Arhivat 27 septembrie 2009 la Wayback Machine A Tour of Scala: Traits
  4. http://www.ibm.com/developerworks/java/library/j-scala04298.html Arhivat 26 august 2009 la Wayback Machine Ghidul ocupat al dezvoltatorului Java pentru Scala: De trăsături și comportamente
  5. PHP: Trăsături - Manual . php.net. Preluat la 15 martie 2017. Arhivat din original la 14 martie 2017.

Link -uri