Yleinen tyyppi

Vuonna tietojenkäsittelytiede , yleinen tyypit ovat tietotyyppejä jossa on mahdollisuus määrittää tyypin parametrit. Puhutaan myös parametrisesta polymorfismista .

Yleinen tyyppi antaa mahdollisuuden luoda tietotyyppejä, jotka erottuvat taustalla olevista tyypeistä. Joten voidaan ohjelmoida luettelo numeroista, merkkiluettelo ja päivämäärälista samalla tavalla; H. lisäyksen, hakemisen ja poistamisen algoritmit toimisivat aina samalla tavalla. Siksi on suotavaa toteuttaa luettelo näistä tyypeistä riippumatta.

Esimerkiksi vuonna Java geneerinen lista olisi määritelty seuraavasti:

 List<T>

Tämä tarkoittaa List<T> yleistä tyyppiä , ja Tsitä kutsutaan tyypin parametriksi . Yleisluontoisia esiintyy kaikissa ohjelmointikielet että paradigma on geneerisen ohjelmoinnin tukea.

Ohjelmointikielissä geneeristen tyyppien tukemiseen on periaatteessa kaksi lähestymistapaa. Yksi on se, että samaa koodia käytetään GenerischerTyp<T>kaikille Ts ja se käyttää menetelmien dynaamisen linkityksen erityisiä ominaisuuksia T. Toinen tapa u. a. C ++ on kyse mallien käytöstä . Tyyppiparametri korvataan suoraan tietyllä tyypillä kääntöhetkellä. Jos geneeriselle tyypille on useita erityyppisiä parametreja, luodaan useita luokkia myös C ++: ssa.

Kanssa NET , Microsoft vie keskellä maa yhdistää molempien edut menetelmät: yleinen luokka käyttää samaa koodiksi kaikille viite tyyppejä tyyppi parametreja , koska sisäisen esitysmuodon (yksinkertainen viite ) kaikista viite tyyppejä on sama. Kun käytetään arvotyyppejä tyypin parametreina, jokaiselle arvotyypille luodaan erillinen natiivikoodipolku ajon aikana, kun sitä käytetään ensimmäistä kertaa.

Yleiset tyypit eri ohjelmointikielillä

  • C ++ toteuttaa yleisiä tyyppejä mallien avulla, esim. Luokkamallit.
  • Yleinen ohjelmointi Java-ohjelmassa
  • C # ja muut .NET-kielet ovat tarjonneet yleisiä .NET 2.0: sta lähtien
  • Ada- ohjelmointikielellä yleisiä tyyppejä käytetään pakettien parametrointiin.
  • Delphi on tarjonnut tukea yleistyypeille Delphi 2009: n jälkeen. Free Pascal tukee yleisiä luokkia versiosta 2.2.
  • Haxe- ohjelmointikieli tarjoaa yleisiä tyyppejä Flashille, JavaScriptille ja palvelinpuolen suoritukselle (kaikki ovat kolme aluetta, joilla geneeriset muuten eivät ole muuten mahdollisia)
  • Haskell tarjoaa erittäin tehokkaan tyyppisen järjestelmän