Tulajdonság (absztrakt típus)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2020. október 8-án felülvizsgált verziótól ; az ellenőrzések 9 szerkesztést igényelnek .

Típus (néha - vonás, tulajdonság / viselkedési jellemző , hajlam, az angolból  trait ) - absztrakt adattípus , amelyet "egyszerű fogalmi modellként használnak objektum-orientált programok strukturálásához" [1][ adja meg ] . A koncepció az OOP osztályok öröklésre való használata során fellépő konfliktusok miatt jelent meg . Hasonló az interfészekkel és mixinekkel való öröklés során megoldott problémákban , és eltérően csak a -t tartalmazza . A konfliktusok megoldásában is specifikusak – a tulajdonságok nem teszik lehetővé, hogy a módszerek nevei megegyezzenek. A koncepciót eredetileg a Berni Egyetem Structural Software Engineering Groupja dolgozta ki [2] .

Ezek képezik a Rust nyelv alapját, és beépülnek a Scala nyelvbe [3] [4] , amely a Smalltalk nyelv Squeak változatában a 3.9-es verzió óta szerepel, és a Perl 6 -ban vezették be (ahol "szerepeknek" nevezik őket; a Perl esetében 5 - a Moose -ban modulként implementálva ), a C# 8.0 nyelven bevezetve (ahol ezeket alapértelmezett metódusmegvalósításokkal rendelkező interfészeknek nevezik) a Joose JavaScript -keretrendszerében is megvalósul . A tervek között szerepel az is, hogy az ActionScript 3.0 -ba is beépítenek tulajdonságokat . A Ruby modul mixinjei némileg hasonlítanak a tulajdonságokhoz.

Egyes programozási nyelvekben a tulajdonságok olyan típusokra vonatkoznak, amelyek valójában mixinek . Így például a PHP -ben a tulajdonságok nemcsak metódusokat, hanem tulajdonságokat is tartalmazhatnak [ 5] .

Rozsdapélda egy létező, kivonatolást leíró típushoz:

vonás hash { fn hash ( & self ) -> u64 ; }

A hash tulajdonság implementálása bizonyos típusokhoz – példák hash módszerekre a megfelelő aláírással:

impl Hash for bool { fn hash ( & self ) -> u64 { if * self { 0 } else { 1 } } } impl Hash i64 -hez { fn hash ( & self ) -> u64 { * én mint u64 } }

Jegyzetek

  1. Forrás . Letöltve: 2009. augusztus 4. Az eredetiből archiválva : 2017. augusztus 9..
  2. SCG: SCG Bibliográfia . Letöltve: 2009. augusztus 4. Az eredetiből archiválva : 2009. május 4..
  3. http://www.scala-lang.org/node/126 Archiválva 2009. szeptember 27-én a Wayback Machine -nál A Scala körútja: Jellemzők
  4. http://www.ibm.com/developerworks/java/library/j-scala04298.html Archiválva : 2009. augusztus 26. a Wayback Machine -nél A mozgalmas Java fejlesztői útmutató a Scalához: Jellemzőkről és viselkedésről
  5. PHP: Jellemzők - Kézi . php.net. Letöltve: 2017. március 15. Az eredetiből archiválva : 2017. március 14.

Linkek