Type (nogle gange - træk, træk / adfærdstræk , disposition, fra engelsk træk ) - abstrakt datatype brugt som "en simpel konceptuel model til at strukturere objektorienterede programmer" [1][ angiv ] . Konceptet opstod på grund af konflikter ved brug af klasser i OOP til arv. Det er ens i de problemer, det løser, når det nedarves med grænseflader og mixins , og i modsætning til hvilke, indeholder det kun . De er også specifikke i den måde, de løser konflikter på - egenskaber tillader ikke, at navnene på metoder matcher. Konceptet blev oprindeligt udviklet af Structural Software Engineering Group ved Universitetet i Bern [2] .
De er grundlaget for Rust -sproget og er indbygget i Scala -sproget [3] [4] , inkluderet i Squeak -varianten af Smalltalk -sproget siden version 3.9, introduceret i Perl 6 (hvor de kaldes "roller"; for Perl 5 - implementeret som et modul i Moose ), introduceret i C# 8.0 sproget (hvor de kaldes grænseflader med standardmetodeimplementeringer) er også implementeret i Joose frameworket til JavaScript . Der er også planer om at inkludere egenskaber i ActionScript 3.0 . Modulblandinger i Ruby minder noget om egenskaber.
I nogle programmeringssprog refererer egenskaber til typer, der faktisk er mixins . Så for eksempel i PHP kan træk ikke kun indeholde metoder, men også egenskaber [5] .
Rusteksempel for en eksisterende type, der beskriver hashing:
trait hash { fn hash ( & self ) -> u64 ; }Implementering af Hash-egenskaben for nogle typer - eksempler på hash-metoder med den tilsvarende signatur:
impl Hash for bool { fn hash ( & self ) -> u64 { if * self { 0 } andet { 1 } } } impl Hash til i64 { fn hash ( & self ) -> u64 { * selv som u64 } }Datatyper | |
---|---|
Ufortolkelig | |
Numerisk | |
Tekst | |
Reference | |
Sammensatte | |
abstrakt | |
Andet | |
relaterede emner |