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.

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.
Vies popisaOperacije:
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.
Pogled na hrpuOperacije:
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).
Pogled na red čekanjaOperacije:
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.