Tietue (tietotyyppi)

Tietue  on aggregoitu tietotyyppi , joka kapseloi piilottamatta erityyppisiä arvoja . _

Käytetään monilla ohjelmointikielillä . Joillakin kielillä (esimerkiksi Pascalissa ) arvojen muistiin sijoittelujärjestys määritetään tyyppiä määritettäessä ja säilytetään objektien koko elinkaaren ajan, mikä mahdollistaa epäsuoran pääsyn (esim. osoittimien kautta ); muilla kielillä (esimerkiksi ML :ssä ) sijoitusjärjestystä ei ole määritelty, joten arvoihin pääsee käsiksi vain hyväksytyllä tunnisteella. Joillakin kielillä, vaikka järjestys säilyy, kohdistuskääntäjä hallitsee, joten osoitearitmetiikka voi olla alustariippuvaista. Jotkut kielet sallivat kohdistamisen eri tietueiden esiintymien välillä, huomioimatta erot tietuekomponenttien tunnisteissa ja perustuvat vain järjestykseen. Muut kielet päinvastoin ottavat huomioon vain nimien yhteensopivuuden ja ratkaisevat erot niiden määrittelyjärjestyksessä.

Tietueet esiteltiin ensin Cobol-kielellä , jossa niillä oli melko monimutkainen merkintä. Tarkistaessaan tyyppien yhdenmukaisuutta Cobol ottaa huomioon vain tietuekenttien nimien vastaavuuden eikä ota huomioon niiden järjestyksen vastaavuutta.

Tuples toimii muodollisena perusteena tietueille tyyppiteoriassa . Samaan aikaan kielissä monikot voidaan joskus toteuttaa tietueiden avulla, jotka käyttävät tunnisteena tuloksena olevan monikon kenttien indeksinumeroita. Tarkempi teoreettinen tietuemalli on System F-sub ( järjestelmän F laajennus alatyyppien käsitteellä ). Tietueiden komponentit voivat olla ensiluokkaisia ​​toimintoja , mikä mahdollistaa olioohjelmoinnin peruskäsitteiden toteuttamisen . Tälle mallille on olemassa käytännön toteutuksia [1] . Toisaalta olio-ohjelmoinnin luokat esitetään luonnollisesti tietokenttiä sisältävinä tietueina, joille on lisäksi liitetty näkyvyysattribuutti ja näiden tietueiden käsittelyyn suunnatut menetelmäkentät. Esimerkiksi näin luokat toteutetaan C++ :ssa .

Muistiinpanot

  1. Bernard Berthomieu. OO Ohjelmointityylit ML:ssä . — LAAS-raportti #2000111, Center National De La Recherche Scientifique Laboratoire d'Analysis et d'Architecture des Systèmes, 2000.