Ominaisuus (abstrakti tyyppi)

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 8.10.2020 tarkistetusta versiosta . tarkastukset vaativat 9 muokkausta .

Tyyppi (joskus - ominaisuus, piirre / käyttäytymisominaisuus , disposition, englanniksi  trait ) - abstrakti tietotyyppi , jota käytetään "yksinkertaisena käsitteellisenä mallina olioohjelmien jäsentämiseen " [ 1][ määritä ] . Konsepti ilmestyi ristiriitojen vuoksi, kun OOP:n luokkia käytettiin periytymiseen. Se on samanlainen niissä ongelmissa, joita se ratkaisee periytyessään rajapintojen ja mixinien kanssa , ja toisin kuin mikä, sisältää vain . Ne ovat myös erityisiä siinä, miten ne ratkaisevat konflikteja - piirteet eivät salli menetelmien nimien täsmäämistä. Konseptin kehitti alun perin Bernin yliopiston Structural Software Engineering Group [2] .

Ne ovat Rust -kielen perusta ja ne on rakennettu Scala -kieleen [3] [4] , joka sisältyy Smalltalk - kielen Squeak - muunnelmaan versiosta 3.9 lähtien, joka esiteltiin Perl 6 :ssa (jossa niitä kutsutaan "rooleiksi"; Perlille 5 - toteutettu moduulina Moosessa ), jotka on esitelty C# 8.0 -kielellä (jossa niitä kutsutaan rajapinnoiksi oletusmenetelmien toteutuksilla) on myös toteutettu JavaScriptin Joose - kehyksessä . ActionScript 3.0 :ssa on myös suunnitelmia sisällyttää ominaisuuksia . Rubyn moduulisekoitukset ovat jossain määrin samanlaisia ​​kuin piirteet.

Joissakin ohjelmointikielissä ominaisuudet viittaavat tyyppeihin, jotka ovat itse asiassa mixinejä . Joten esimerkiksi PHP :ssä ominaisuudet voivat sisältää paitsi menetelmiä myös ominaisuuksia [5] .

Ruosteesimerkki olemassa olevalle tiivistystä kuvaavalle tyypille:

ominaisuus hash { fn hash ( & self ) -> u64 ; }

Hash-ominaisuuden toteutus joillekin tyypeille - esimerkkejä hash-menetelmistä vastaavalla allekirjoituksella:

impl Hash for bool { fn hash ( & self ) -> u64 { jos * itse { 0 } muu { 1 } } } impl Hash i64 : lle { fn hash ( & self ) -> u64 { * itse kuin u64 } }

Muistiinpanot

  1. Lähde . Haettu 4. elokuuta 2009. Arkistoitu alkuperäisestä 9. elokuuta 2017.
  2. SCG: SCG Bibliography . Haettu 4. elokuuta 2009. Arkistoitu alkuperäisestä 4. toukokuuta 2009.
  3. http://www.scala-lang.org/node/126 Arkistoitu 27. syyskuuta 2009 Wayback Machinessa A Tour of Scala: Traits
  4. http://www.ibm.com/developerworks/java/library/j-scala04298.html Arkistoitu 26. elokuuta 2009 Wayback Machinessa Kiireisen Java-kehittäjän opas Scalaan: piirteitä ja käyttäytymistä
  5. PHP: Ominaisuudet - Manuaalinen . php.net. Haettu 15. maaliskuuta 2017. Arkistoitu alkuperäisestä 14. maaliskuuta 2017.

Linkit