logo

Apstraktni tipovi podataka

An Vrsta sažetka podataka (ADT) je konceptualni model koji definira skup operacija i ponašanja za strukturu podataka bez specificiranja kako se te operacije provode ili kako su podaci organizirani u memoriji. Definicija ADT-a samo spominje što operacije treba izvesti ali ne kako ove operacije će se provoditi. Ne precizira kako će podaci biti organizirani u memoriji i koji će se algoritmi koristiti za provedbu operacija. Naziva se 'sažetak' jer pruža prikaz neovisan o implementaciji.

Proces pružanja samo bitnih stvari i skrivanja detalja poznat je kao apstrakcija.

Značajke ADT-a



Apstraktni tipovi podataka (ADT) način su kapsuliranja podataka i operacija na tim podacima u jednu jedinicu. Neke od ključnih značajki ADT-a uključuju:

  • Apstrakcija: Korisnik ne mora znati implementaciju podatkovne strukture, samo ono što je bitno.
  • Bolja konceptualizacija: ADT nam daje bolju konceptualizaciju stvarnog svijeta.
  • Robustan: Program je robustan i ima sposobnost hvatanja grešaka.
  • Enkapsulacija : ADT skrivaju interne detalje podataka i pružaju javno sučelje za interakciju korisnika s podacima. To omogućuje lakše održavanje i modificiranje strukture podataka.
  • Apstrakcija podataka : ADT-ovi pružaju razinu apstrakcije od detalja implementacije podataka. Korisnici trebaju znati samo operacije koje se mogu izvesti na podacima, a ne kako se te operacije provode.
  • Neovisnost strukture podataka : ADT-ovi se mogu implementirati korištenjem različitih struktura podataka kao što su nizovi ili povezani popisi bez utjecaja na funkcionalnost ADT-a.
  • Skrivanje informacija: ADT-ovi mogu zaštititi integritet podataka dopuštajući pristup samo ovlaštenim korisnicima i operacijama. To pomaže u sprječavanju pogrešaka i zlouporabe podataka.
  • Modularnost : ADT-ovi se mogu kombinirati s drugim ADT-ovima za formiranje većih i složenijih struktura podataka. To omogućuje veću fleksibilnost i modularnost u programiranju.

Općenito, ADT-ovi pružaju moćan alat za organiziranje i manipuliranje podacima na strukturiran i učinkovit način.

Ova slika pokazuje kako apstraktni tip podataka (ADT) skriva unutarnje strukture podataka (poput nizova povezanih popisa) pomoću javnih i privatnih funkcija izlažući samo definirano sučelje aplikacijskom programu.

Apstraktni tipovi podataka

Zašto koristiti ADT?

Ključni razlozi za korištenje ADT-a u Javi navedeni su u nastavku:

  • Enkapsulacija: Skriva složene detalje implementacije iza čistog sučelja.
  • Ponovno korištenje : Omogućuje različite interne implementacije (npr. niz ili povezani popis) bez mijenjanja vanjske upotrebe.
  • Modularnost: Pojednostavljuje održavanje i ažuriranje odvajanjem logike.
  • Sigurnost: Štiti podatke sprječavanjem izravnog pristupa minimiziranjem grešaka i nenamjernih promjena.

Primjer apstrakcije

Na primjer, koristimo primitivne vrijednosti kao što su int float i char uz razumijevanje da ti tipovi podataka mogu raditi i izvršavati se na njima bez ikakvog znanja o detaljima njihove implementacije. ADT rade na sličan način definiranjem koje su operacije moguće bez pojedinosti o njihovoj provedbi.

Razlika između ADT-a i UDT-a

Tablica u nastavku pokazuje razliku između ADT-a i UDT-a.

komisija za odabir osoblja značenje

Aspekt

Apstraktne vrste podataka (ADT)

Korisnički definirane vrste podataka (UDT-ovi)

Definicija

Definira klasu objekata i operacije koje se mogu izvesti na njima zajedno s njihovim očekivanim ponašanjem (semantikom), ali bez navođenja detalja implementacije.

Prilagođeni tip podataka stvoren kombiniranjem ili proširenjem postojećih primitivnih tipova koji određuju strukturu i operacije.

Fokus

Koje su operacije dopuštene i kako se ponašaju bez naređivanja načina na koji se provode.

Kako su podaci organizirani u memoriji i kako se izvršavaju operacije.

Svrha

središnja slika u css-u

Pruža apstraktni model za definiranje struktura podataka na konceptualni način.

Programerima omogućuje stvaranje konkretnih implementacija struktura podataka korištenjem primitivnih tipova.

Pojedinosti o implementaciji

Ne specificira kako se operacije provode ili kako su podaci strukturirani.

Određuje kako stvoriti i organizirati tipove podataka za implementaciju strukture.

Korištenje

Koristi se za dizajn i konceptualizaciju podatkovnih struktura.

podijeljen nizom java

Koristi se za implementaciju struktura podataka koje ostvaruju apstraktne koncepte definirane ADT-ovima.

Primjer

Popis ADT Stack ADT Queue ADT.

Strukture klase nabrajanja zapisi.

Primjeri ADT-a

Razmotrimo sada tri uobičajena ADT-a: List ADT Stack ADT i Queue ADT.

1. Navedite ADT

List ADT (Abstract Data Type) je sekvencijalna zbirka elemenata koja podržava skup operacija bez navođenja interne implementacije . Omogućuje uređen način pohranjivanja pristupa i izmjene podataka.

Apstraktni tipovi podatakaVies popisa

Operacije:

List ADT treba pohraniti tražene podatke u nizu i trebao bi imati sljedeće operacije :

  • dobiti(): Vraćanje elementa s popisa na bilo kojoj poziciji.
  • umetnuti(): Umetnite element na bilo koje mjesto na popisu.
  • ukloniti(): Uklonite prvo pojavljivanje bilo kojeg elementa s nepraznog popisa.
  • uklonitiNa(): Uklonite element na navedenoj lokaciji s popisa koji nije prazan.
  • zamijeniti(): Zamijenite element na bilo kojem mjestu drugim elementom.
  • veličina(): Vrati broj elemenata na popisu.
  • isEmpty(): Vrati true ako je popis prazan; inače vrati false.
  • isFull(): Vrati true ako je popis pun, inače vrati false. Primjenjivo samo u implementacijama fiksne veličine (npr. popisi temeljeni na nizu).

2. Složite ADT

Stack ADT je ​​linearna struktura podataka koja slijedi LIFO (Last In First Out) princip. Omogućuje dodavanje i uklanjanje elemenata samo s jednog kraja koji se naziva vrh hrpe.

Apstraktni tipovi podatakaPogled na hrpu

Operacije:

U Stack ADT redoslijed umetanja i brisanja trebao bi biti u skladu s FILO ili LIFO principom. Elementi se umeću i uklanjaju s istog kraja koji se naziva vrh hrpe. Također bi trebao podržavati sljedeće operacije:

  • gurnuti(): Umetnite element na jednom kraju niza koji se zove vrh.
  • pop(): Uklonite i vratite element na vrhu hrpe ako nije prazan.
  • zaviriti(): Vratite element na vrhu hrpe bez uklanjanja ako hrpa nije prazna.
  • veličina(): Vrati broj elemenata u stogu.
  • isEmpty(): Vrati true ako je stog prazan; inače vrati false.
  • isFull(): Vrati true ako je stog pun; inače vrati false. Relevantno samo za hrpe fiksnog kapaciteta (npr. na temelju polja).

3. ADT u redu čekanja

Queue ADT je ​​linearna struktura podataka koja slijedi načelo FIFO (First In First Out). Omogućuje umetanje elemenata na jednom kraju (stražnji) i uklanjanje s drugog kraja (prednji).

Apstraktni tipovi podatakaPogled na red čekanja

Operacije:

Queue ADT slijedi dizajn sličan Stack ADT-u, ali se redoslijed umetanja i brisanja mijenja u FIFO. Elementi se umeću na jednom kraju (koji se naziva stražnji) i uklanjaju s drugog kraja (koji se naziva prednji). Trebao bi podržavati sljedeće operacije:

dobiti duljinu niza u c
  • staviti u red (): Umetnite element na kraj reda čekanja.
  • prema tome(): Ukloni i vrati prvi element reda ako red nije prazan.
  • zaviriti(): Vrati element reda bez njegovog uklanjanja ako red čekanja nije prazan.
  • veličina(): Vrati broj elemenata u redu čekanja.
  • isEmpty(): Vrati true ako je red čekanja prazan; inače vrati false.

Prednosti i nedostaci ADT-a

Apstraktni tipovi podataka (ADT) imaju nekoliko prednosti i nedostataka koje treba uzeti u obzir kada se odlučujete koristiti ih u razvoju softvera. Evo nekih od glavnih prednosti i nedostataka korištenja ADT-a:

Prednost:

Prednosti su navedene u nastavku:

  • Enkapsulacija : ADT-ovi pružaju način za kapsuliranje podataka i operacija u jednu jedinicu što olakšava upravljanje i mijenjanje strukture podataka.
  • Apstrakcija : ADT-ovi omogućuju korisnicima rad sa strukturama podataka bez potrebe za poznavanjem detalja implementacije što može pojednostaviti programiranje i smanjiti pogreške.
  • Neovisnost strukture podataka : ADT-ovi se mogu implementirati korištenjem različitih struktura podataka što može olakšati prilagodbu promjenjivim potrebama i zahtjevima.
  • Skrivanje informacija : ADT-ovi mogu zaštititi integritet podataka kontroliranjem pristupa i sprječavanjem neovlaštenih izmjena.
  • Modularnost : ADT-ovi se mogu kombinirati s drugim ADT-ovima kako bi se formirale složenije podatkovne strukture koje mogu povećati fleksibilnost i modularnost u programiranju.

Nedostaci:

Nedostaci su navedeni u nastavku:

  • Nadzemni : Implementacija ADT-a može povećati opterećenje u smislu memorije i obrade što može utjecati na performanse.
  • Složenost : ADT-ovi mogu biti složeni za implementaciju, posebno za velike i složene strukture podataka.
  • Učenje Krivulja: Korištenje ADT-a zahtijeva znanje o njihovoj implementaciji i korištenju za koje je potrebno vrijeme i trud da se nauči.
  • Ograničena fleksibilnost: Neki ADT-ovi mogu biti ograničeni u svojoj funkcionalnosti ili možda nisu prikladni za sve vrste struktura podataka.
  • trošak : Implementacija ADT-a može zahtijevati dodatne resurse i ulaganja što može povećati troškove razvoja.
Napravi kviz