Säiliö (abstrakti tietotyyppi)

Wikipediasta
Siirry navigaatioon Siirry hakuun

Tietojenkäsittelytieteessä säiliö on luokka tai tietorakenne[1][2], jonka ilmentymät ovat muiden olioiden kokoelmia. Toisin sanoen ne tallentavat esineitä organisoidulla tavalla, joka noudattaa tiettyjä sääntöjä.

Säiliön koko riippuu sen sisältämien olioiden määrästä. Eri tyyppisten säiliöiden taustalla olevat (perityt) toteutukset voivat vaihdella koon, monimutkaisuuden ja ohjelmointikielen tyypin mukaan, mutta monissa tapauksissa ne tarjoavat joustavuutta oikean toteutuksen valinnassa kaikissa tapauksissa.

Säiliötietorakenteita käytetään erityistesti olio-ohjelmointikielissä.

Toiminto ja ominaisuudet

[muokkaa | muokkaa wikitekstiä]

Säiliöt voidaan luonnehtia seuraavilla kolmella ominaisuudella:

  • pääsy, joka on tapa päästä käsiksi säiliön olioihin. Taulukoiden tapauksessa pääsy tapahtuu taulukkoindeksin avulla. Pinojen tapauksessa pääsy tapahtuu LIFO- järjestyksen mukaan (last in, first out) ja jonojen tapauksessa FIFO (first in, first out) -järjestyksen mukaisesti;
  • varastointi, tapa säilyttää säiliön esineitä.
  • matkustaminen, tapa kulkea säiliön kohteiden läpi.

Säilöluokkien odotetaan toteuttavan CRUD:n kaltaisia menetelmiä tehdäkseen seuraavat:

  • luoda tyhjä säiliö.
  • lisätä olioita säiliöön
  • poistaa olioita säiliöstä;
  • poista kaikki oliot säiliöstä (tyhjennä);
  • päästä käsiksi säiliössä oleviin esineisiin;
  • päästä käsiksi säilössä olevien objektien määrään (määrä).

Joskus säilöitä toteutetaan yhdessä iteraattorien kanssa.

Säiliöt voidaan luokitella joko yksiarvoisiin säiliöihin tai assosiatiivisiin säiliöihin.

Yhden arvon säiliöt tallentavat jokaisen objektin itsenäisesti. Objekteihin voidaan päästä käsiksi suoraan esimerkiksi silmukalla tai iteraattorilla.

Assosiatiivinen säilö käyttää assosiatiivista taulukkoa, karttaa tai sanakirjaa, joka koostuu avain-arvo-pareista siten, että kukin avain esiintyy säilössä enintään kerran. Avainta käytetään olion etsimiseen, jos se on tallennettu säiliöön. Assosiatiivisia säiliöitä käytetään ohjelmointikielissä luokkamalleina.

Abstrakteja säiliö tietotyyppejä ovat:

Yleisiä tietorakenteita, joita käytetään näiden abstraktien tyyppien toteuttamiseen, ovat:

  1. Paul E. Black (ed.), entry for data structure in Dictionary of Algorithms and Data Structures. US[National Institute of Standards and Technology.15 December 2004. Accessed 4 Oct 2011.
  2. Entry data structure in the Encyclopædia Britannica (2009) Online entry Accessed 4 Oct 2011.