Abstraktit tietotyypit

Abstraktit tietotyypit

An Abstrakti tietotyyppi (ADT) on käsitteellinen malli, joka määrittelee joukon toimintoja ja käyttäytymismalleja tietorakenteelle määrittelemättä, kuinka nämä toiminnot toteutetaan tai kuinka tiedot järjestetään muistissa. ADT:n määritelmä mainitsee vain mitä operaatioita on suoritettava mutta ei miten nämä toimet toteutetaan. Se ei määrittele, miten tiedot järjestetään muistiin ja mitä algoritmeja käytetään toimintojen toteuttamiseen. Sitä kutsutaan "abstraktiksi", koska se tarjoaa toteutuksesta riippumattoman näkymän.

Prosessi, jossa tarjotaan vain välttämättömät asiat ja piilotetaan yksityiskohdat, tunnetaan nimellä abstraktio.

ADT:n ominaisuudet

Abstraktit tietotyypit (ADT:t) ovat tapa kapseloida tiedot ja niihin liittyvät toiminnot yhdeksi yksiköksi. Jotkut ADT:n tärkeimmistä ominaisuuksista ovat:

  • Abstraktio: Käyttäjän ei tarvitse tietää tietorakenteen toteutusta, vain olennaiset asiat tarjotaan.
  • Parempi käsitys: ADT antaa meille paremman käsitteen todellisesta maailmasta.
  • Tukeva: Ohjelma on vankka ja pystyy havaitsemaan virheitä.
  • Kapselointi : ADT:t piilottavat tietojen sisäiset tiedot ja tarjoavat käyttäjille julkisen käyttöliittymän tietojen kanssa vuorovaikutukseen. Tämä mahdollistaa tietorakenteen helpon ylläpidon ja muokkaamisen.
  • Datan abstraktio : ADT:t tarjoavat tietyn tason abstraktion datan toteutusyksityiskohdista. Käyttäjien tarvitsee vain tietää toiminnot, jotka voidaan suorittaa datalle, ei miten nämä toiminnot toteutetaan.
  • Tietorakenteen riippumattomuus : ADT:t voidaan toteuttaa käyttämällä erilaisia ​​tietorakenteita, kuten taulukoita tai linkitettyjä listoja vaikuttamatta ADT:n toimivuuteen.
  • Tietojen piilottaminen: ADT:t voivat suojata tietojen eheyden sallimalla pääsyn vain valtuutetuille käyttäjille ja toiminnoille. Tämä auttaa estämään virheitä ja tietojen väärinkäyttöä.
  • Modulaarisuus : ADT:t voidaan yhdistää muiden ADT:ien kanssa muodostamaan suurempia, monimutkaisempia tietorakenteita. Tämä mahdollistaa suuremman joustavuuden ja modulaarisuuden ohjelmointiin.

Kaiken kaikkiaan ADT:t tarjoavat tehokkaan työkalun tietojen järjestämiseen ja käsittelyyn jäsennellyllä ja tehokkaalla tavalla.

Tämä kuva osoittaa, kuinka abstrakti tietotyyppi (ADT) piilottaa sisäiset tietorakenteet (kuten taulukoihin linkitetyt luettelot) käyttämällä julkisia ja yksityisiä toimintoja, jotka paljastavat vain määritetyn käyttöliittymän sovellusohjelmalle.

Abstraktit tietotyypit

Miksi käyttää ADT:tä?

Tärkeimmät syyt käyttää ADT:itä Javassa on lueteltu alla:

  • Kapselointi: Piilottaa monimutkaiset toteutustiedot puhtaan käyttöliittymän taakse.
  • Uudelleenkäytettävyys : Mahdollistaa erilaiset sisäiset toteutukset (esim. taulukko tai linkitetty luettelo) muuttamatta ulkoista käyttöä.
  • Modulaarisuus: Yksinkertaistaa ylläpitoa ja päivityksiä erottamalla logiikka.
  • Turvallisuus: Suojaa tietoja estämällä suoran pääsyn minimoimalla vikoja ja tahattomia muutoksia.

Esimerkki abstraktiosta

Käytämme esimerkiksi primitiivisiä arvoja, kuten int float ja char ymmärtäen, että nämä tietotyypit voivat toimia ja niitä voidaan suorittaa tietämättä niiden toteutusyksityiskohtia. ADT:t toimivat samalla tavalla määrittämällä mitkä toiminnot ovat mahdollisia ilman niiden toteutusta.

Ero ADT: n ja UDT: n välillä

Alla oleva taulukko osoittaa eron ADT:n ja UDT:n välillä.

Aspekti

Abstraktit tietotyypit (ADT)

Käyttäjän määrittämät tietotyypit (UDT)

Määritelmä

Määrittää objektien luokan ja niille suoritettavat toiminnot sekä niiden odotetun käyttäytymisen (semantiikan), mutta määrittelemättä toteutustietoja.

Mukautettu tietotyyppi, joka on luotu yhdistämällä tai laajentamalla olemassa olevia primitiivityyppejä, jotka määrittävät sekä rakenteen että toiminnot.

Keskity

Mitkä toiminnot ovat sallittuja ja miten ne käyttäytyvät sanelematta kuinka ne toteutetaan.

Miten tiedot järjestetään muistiin ja miten toiminnot suoritetaan.

Tarkoitus

Tarjoaa abstraktin mallin tietorakenteiden määrittelemiseksi käsitteellisellä tavalla.

Mahdollistaa ohjelmoijien luoda konkreettisia toteutuksia tietorakenteista primitiivityyppien avulla.

Toteutustiedot

Ei täsmennä, kuinka toiminnot toteutetaan tai miten tiedot rakennetaan.

Määrittää, kuinka tietotyypit luodaan ja järjestetään rakenteen toteuttamiseksi.

Käyttö

Käytetään tietorakenteiden suunnitteluun ja konseptisointiin.

Käytetään toteuttamaan tietorakenteita, jotka toteuttavat ADT:n määrittelemät abstraktit käsitteet.

Esimerkki

Luettelo ADT-pino ADT-jono ADT.

Rakenteet luokat luettelointi kirjaa.

Esimerkkejä ADT:istä

Ymmärretään nyt kolme yleistä ADT:tä: Lista ADT Stack ADT ja Queue ADT.

1. Listaa ADT

List ADT (Abstract Data Type) on peräkkäinen kokoelma elementtejä, jotka tukevat joukkoa operaatioita määrittelemättä sisäistä toteutusta . Se tarjoaa järjestetyn tavan tallentaa pääsy- ja muokata tietoja.

Abstraktit tietotyypitVies of list

Toiminnot:

List ADT:n on tallennettava vaaditut tiedot järjestyksessä, ja sillä pitäisi olla seuraavat toiminnot :

  • saada(): Palauta elementti luettelosta mihin tahansa paikkaan.
  • insert(): Lisää elementti mihin tahansa kohtaan luettelossa.
  • poistaa(): Poista minkä tahansa elementin ensimmäinen esiintymä ei-tyhjästä luettelosta.
  • poistaAt(): Poista tietyssä paikassa oleva elementti ei-tyhjästä luettelosta.
  • korvata(): Korvaa elementti missä tahansa kohdassa toisella elementillä.
  • koko(): Palauta luettelon elementtien lukumäärä.
  • isEmpty(): Palauttaa tosi, jos lista on tyhjä; muussa tapauksessa palauta false.
  • isFull(): Palauta tosi, jos lista on täynnä, muuten palauta false. Sovellettavissa vain kiinteän kokoisissa toteutuksissa (esim. taulukkopohjaisissa luetteloissa).

2. Pinoa ADT

Stack ADT on lineaarinen tietorakenne, joka noudattaa LIFO-periaatetta (Last In First Out). Se mahdollistaa elementtien lisäämisen ja poistamisen vain yhdestä päästä, jota kutsutaan pinon yläosaksi.

Abstraktit tietotyypitNäkymä pinosta

Toiminnot:

Pino ADT:ssä lisäys- ja poistojärjestyksen tulee olla FILO- tai LIFO-periaatteen mukainen. Elementit lisätään ja poistetaan samasta päästä, jota kutsutaan pinon yläosaksi. Sen pitäisi myös tukea seuraavia toimintoja:

  • Työnnä(): Aseta elementti pinon toiseen päähän, jota kutsutaan yläosaksi.
  • pop(): Poista ja palauta pinon yläosassa oleva elementti, jos se ei ole tyhjä.
  • kurkistaa(): Palauta pinon yläosassa oleva elementti poistamatta sitä, jos pino ei ole tyhjä.
  • koko(): Palauta pinon elementtien lukumäärä.
  • isEmpty(): Palauttaa tosi, jos pino on tyhjä; muussa tapauksessa palauta false.
  • isFull(): Palauttaa tosi, jos pino on täynnä; muussa tapauksessa palauta false. Koskee vain kiinteän kapasiteetin pinoja (esim. taulukkopohjaisia).

3. Jono ADT

Queue ADT on lineaarinen tietorakenne, joka noudattaa FIFO-periaatetta (First In First Out). Sen avulla elementit voidaan asettaa toisesta päästä (taka) ja irrottaa toisesta päästä (etu).

Abstraktit tietotyypitNäkymä jonosta

Toiminnot:

Jonon ADT noudattaa samanlaista rakennetta kuin pino-ADT, mutta lisäys- ja poistojärjestys muuttuu FIFO:ksi. Elementit asetetaan toiseen päähän (kutsutaan takaosaksi) ja poistetaan toisesta päästä (kutsutaan etupääksi). Sen pitäisi tukea seuraavia toimintoja:

  • enqueue(): Lisää elementti jonon loppuun.
  • vastaavasti (): Poista ja palauta jonon ensimmäinen elementti, jos jono ei ole tyhjä.
  • kurkistaa(): Palauta jonon elementti poistamatta sitä, jos jono ei ole tyhjä.
  • koko(): Palauta jonon elementtien lukumäärä.
  • isEmpty(): Palauttaa tosi, jos jono on tyhjä; muussa tapauksessa palauta false.

ADT:n edut ja haitat

Abstrakteilla tietotyypeillä (ADT) on useita etuja ja haittoja, jotka tulee ottaa huomioon päätettäessä käyttää niitä ohjelmistokehityksessä. Tässä on joitain ADT:n käytön tärkeimmistä eduista ja haitoista:

Etu:

Edut on lueteltu alla:

  • Kapselointi : ADT:t tarjoavat tavan kapseloida tiedot ja toiminnot yhdeksi yksiköksi, mikä helpottaa tietorakenteen hallintaa ja muokkaamista.
  • Abstraktio : ADT:t antavat käyttäjien työskennellä tietorakenteiden kanssa ilman, että heidän tarvitsee tietää toteutusyksityiskohtia, mikä voi yksinkertaistaa ohjelmointia ja vähentää virheitä.
  • Tietorakenteen riippumattomuus : ADT:t voidaan toteuttaa käyttämällä erilaisia ​​tietorakenteita, mikä voi helpottaa sopeutumista muuttuviin tarpeisiin ja vaatimuksiin.
  • Tietojen piilottaminen : ADT:t voivat suojata tietojen eheyttä hallitsemalla pääsyä ja estämällä luvattomat muutokset.
  • Modulaarisuus : ADT:t voidaan yhdistää muihin ADT:ihin monimutkaisempien tietorakenteiden muodostamiseksi, mikä voi lisätä ohjelmoinnin joustavuutta ja modulaarisuutta.

Haitat:

Haitat on lueteltu alla:

  • Yläpuolella : ADT:iden käyttöönotto voi lisätä muistia ja prosessointia, mikä voi vaikuttaa suorituskykyyn.
  • Monimutkaisuus : ADT:t voivat olla monimutkaisia ​​toteuttaa erityisesti suurissa ja monimutkaisissa tietorakenteissa.
  • Oppiminen Käyrä: ADT:iden käyttäminen vaatii tietoa niiden toteutuksesta ja käytöstä, minkä oppiminen voi viedä aikaa ja vaivaa.
  • Rajoitettu joustavuus: Jotkut ADT:t voivat olla toiminnaltaan rajoitettuja tai ne eivät välttämättä sovellu kaikentyyppisille tietorakenteille.
  • Maksaa : ADT:n käyttöönotto saattaa vaatia lisäresursseja ja investointeja, mikä voi lisätä kehityskustannuksia.
Luo tietokilpailu