Egenskab (abstrakt type)

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 8. oktober 2020; checks kræver 9 redigeringer .

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 } }

Noter

  1. Kilde . Hentet 4. august 2009. Arkiveret fra originalen 9. august 2017.
  2. SCG: SCG Bibliography . Hentet 4. august 2009. Arkiveret fra originalen 4. maj 2009.
  3. http://www.scala-lang.org/node/126 Arkiveret 27. september 2009 på Wayback Machine A Tour of Scala: Traits
  4. http://www.ibm.com/developerworks/java/library/j-scala04298.html Arkiveret 26. august 2009 på Wayback Machine Den travle Java-udviklerguide til Scala: Af træk og adfærd
  5. PHP: Træk - Manual . php.net. Hentet 15. marts 2017. Arkiveret fra originalen 14. marts 2017.

Links