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 } }Tipuri de date | |
---|---|
Ininterpretabil | |
Numeric | |
Text | |
Referinţă | |
Compozit | |
abstract |
|
Alte | |
subiecte asemănătoare |