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 } }Tietotyypit | |
---|---|
Käsittämätön | |
Numeerinen | |
Teksti | |
Viite | |
Komposiitti | |
abstrakti | |
Muut | |
liittyvät aiheet |