An Abstraktný typ údajov (ADT) je koncepčný model, ktorý definuje súbor operácií a správania pre dátovú štruktúru bez špecifikácie, ako sa tieto operácie vykonávajú alebo ako sú dáta organizované v pamäti. Definícia ADT hovorí len o tom, čo operácie sa majú vykonať ale nie ako tieto operácie sa vykonajú. Nešpecifikuje, ako budú dáta usporiadané v pamäti a aké algoritmy budú použité na implementáciu operácií. Nazýva sa „abstraktný“, pretože poskytuje pohľad nezávislý od implementácie.
Proces poskytovania len toho najnutnejšieho a skrývania detailov je známy ako abstrakcie.
Vlastnosti ADT
Abstraktné dátové typy (ADT) predstavujú spôsob zapuzdrenia údajov a operácií s týmito údajmi do jednej jednotky. Niektoré z kľúčových funkcií ADT zahŕňajú:
- Abstrakcia: Užívateľ nemusí poznať implementáciu dátovej štruktúry, poskytuje len to najnutnejšie.
- Lepšia koncepcia: ADT nám poskytuje lepšiu konceptualizáciu skutočného sveta.
- Robustný: Program je robustný a má schopnosť zachytiť chyby.
- Zapuzdrenie : ADT skrývajú interné podrobnosti údajov a poskytujú používateľom verejné rozhranie na interakciu s údajmi. To umožňuje jednoduchšiu údržbu a úpravu dátovej štruktúry.
- Abstrakcia údajov : ADT poskytujú úroveň abstrakcie od podrobností implementácie údajov. Používatelia potrebujú poznať iba operácie, ktoré možno vykonať s údajmi, nie to, ako sú tieto operácie implementované.
- Nezávislosť štruktúry údajov : ADT môžu byť implementované pomocou rôznych dátových štruktúr, ako sú polia alebo prepojené zoznamy, bez ovplyvnenia funkčnosti ADT.
- Skrytie informácií: ADT môžu chrániť integritu údajov tým, že povolia prístup iba oprávneným používateľom a operáciám. To pomáha predchádzať chybám a zneužitiu údajov.
- Modularita : ADT je možné kombinovať s inými ADT na vytvorenie väčších a komplexnejších dátových štruktúr. To umožňuje väčšiu flexibilitu a modularitu v programovaní.
Celkovo ADT poskytujú výkonný nástroj na organizovanie a manipuláciu s údajmi štruktúrovaným a efektívnym spôsobom.
Tento obrázok ukazuje, ako abstraktný dátový typ (ADT) skrýva interné dátové štruktúry (ako polia prepojené zoznamy) pomocou verejných a súkromných funkcií, ktoré aplikačnému programu vystavujú iba definované rozhranie.

Prečo používať ADT?
Hlavné dôvody, prečo používať ADT v jazyku Java, sú uvedené nižšie:
- Zapuzdrenie: Skrýva zložité implementačné detaily za čisté rozhranie.
- Opätovná použiteľnosť : Umožňuje rôzne interné implementácie (napr. pole alebo prepojený zoznam) bez zmeny externého použitia.
- Modularita: Zjednodušuje údržbu a aktualizácie oddelením logiky.
- Zabezpečenie: Chráni údaje tým, že zabraňuje priamemu prístupu a minimalizuje chyby a neúmyselné zmeny.
Príklad abstrakcie
Napríklad používame primitívne hodnoty ako int float a char s vedomím, že tieto dátové typy môžu fungovať a byť s nimi vykonávané bez znalosti detailov ich implementácie. ADT fungujú podobne definovaním aké operácie sú možné bez podrobného popisu ich vykonávania.
Rozdiel medzi ADT a UDT
Nižšie uvedená tabuľka ukazuje rozdiel medzi ADT a UDT.
koľko miest v Spojených štátoch amerických
Aspekt | Abstraktné typy údajov (ADT) | Typy údajov definované používateľom (UDT) |
|---|---|---|
Definícia | Definuje triedu objektov a operácií, ktoré s nimi možno vykonávať spolu s ich očakávaným správaním (sémantikou), ale bez špecifikovania podrobností implementácie. | Vlastný typ údajov vytvorený kombináciou alebo rozšírením existujúcich primitívnych typov špecifikujúcich štruktúru aj operácie. |
Zamerajte sa | Aké operácie sú povolené a ako sa správajú bez toho, aby diktovali, ako sa vykonávajú. | Ako sú údaje usporiadané v pamäti a ako sa vykonávajú operácie. ako previesť znak na reťazec |
Účel | Poskytuje abstraktný model na definovanie dátových štruktúr koncepčným spôsobom. | Umožňuje programátorom vytvárať konkrétne implementácie dátových štruktúr pomocou primitívnych typov. |
Podrobnosti o implementácii | Nešpecifikuje, ako sa vykonávajú operácie alebo ako sú štruktúrované údaje. | Určuje, ako vytvoriť a usporiadať typy údajov na implementáciu štruktúry. |
Použitie java triedenie zoznamu | Používa sa na navrhovanie a konceptualizáciu dátových štruktúr. | Používa sa na implementáciu dátových štruktúr, ktoré realizujú abstraktné koncepty definované ADT. |
Príklad | Zoznam zásobníka ADT ADT Queue ADT. | Štruktúra záznamov enumerácií tried. |
Príklady ADT
Teraz pochopme tri bežné ADT: Zoznam ADT Zásobník ADT a ADT vo fronte.
1. Uveďte zoznam ADT
Zoznam ADT (Abstract Data Type) je sekvenčná kolekcia prvkov, ktorá podporuje súbor operácií bez špecifikácie internej implementácie . Poskytuje usporiadaný spôsob ukladania údajov o prístupe a ich úpravy.
Súboje zo zoznamuOperácie:
Zoznam ADT potrebuje uložiť požadované údaje v poradí a mal by mať nasledujúce operácie :
- získať(): Vráti prvok zo zoznamu na ľubovoľnú pozíciu.
- vložiť(): Vložte prvok na ľubovoľné miesto v zozname.
- odstrániť(): Odstráňte prvý výskyt akéhokoľvek prvku z neprázdneho zoznamu.
- removeAt(): Odstráňte prvok na určenom mieste z neprázdneho zoznamu.
- nahradiť(): Nahraďte prvok na ľubovoľnej pozícii iným prvkom.
- veľkosť (): Vráti počet prvkov v zozname.
- isEmpty(): Ak je zoznam prázdny, vráti hodnotu true; inak vráti false.
- isFull(): Ak je zoznam plný, vráti hodnotu true, inak vráti hodnotu false. Použiteľné iba v implementáciách s pevnou veľkosťou (napr. zoznamy založené na poliach).
2. Stack ADT
Stack ADT je lineárna dátová štruktúra, ktorá sa riadi princípom LIFO (Last In First Out). Umožňuje pridávať a odstraňovať prvky iba z jedného konca nazývaného vrch zásobníka.
Pohľad na stohOperácie:
V Stack ADT by poradie vkladania a odstraňovania malo byť podľa princípu FILO alebo LIFO. Prvky sa vkladajú a vyberajú z rovnakého konca, ktorý sa nazýva horná časť stohu. Mal by tiež podporovať nasledujúce operácie:
- TAM(): Vložte prvok na jeden koniec stohu nazývaný vrch.
- pop(): Odstráňte a vráťte prvok v hornej časti stohu, ak nie je prázdny.
- nahliadnuť (): Vráťte prvok v hornej časti stohu bez toho, aby ste ho vybrali, ak stoh nie je prázdny.
- veľkosť (): Vráti počet prvkov v zásobníku.
- isEmpty(): Ak je zásobník prázdny, vráti hodnotu true; inak vráti false.
- isFull(): Ak je zásobník plný, vráti hodnotu true; inak vráti false. Relevantné len pre zásobníky s pevnou kapacitou (napr. založené na poliach).
3. Front ADT
Queue ADT je lineárna dátová štruktúra, ktorá sa riadi princípom FIFO (First In First Out). Umožňuje vkladanie prvkov na jeden koniec (zadný) a vyberanie z druhého konca (predné).
Pohľad na frontOperácie:
Queue ADT má podobný dizajn ako Stack ADT, ale poradie vkladania a odstraňovania sa mení na FIFO. Prvky sa vkladajú na jeden koniec (nazývaný zadný) a vyberajú sa z druhého konca (nazývaný predný). Mal by podporovať nasledujúce operácie:
chrome adresný riadok
- zaradiť (): Vložte prvok na koniec frontu.
- podľa toho(): Odstráňte a vráťte prvý prvok frontu, ak front nie je prázdny.
- nahliadnuť (): Vráťte prvok frontu bez jeho odstránenia, ak front nie je prázdny.
- veľkosť (): Vráti počet prvkov vo fronte.
- isEmpty(): Vráťte true, ak je front prázdny; inak vráti false.
Výhody a nevýhody ADT
Abstraktné dátové typy (ADT) majú niekoľko výhod a nevýhod, ktoré je potrebné zvážiť pri rozhodovaní o ich použití pri vývoji softvéru. Tu sú niektoré z hlavných výhod a nevýhod používania ADT:
Výhoda:
Výhody sú uvedené nižšie:
- Zapuzdrenie : ADT poskytujú spôsob na zapuzdrenie údajov a operácií do jednej jednotky, čo uľahčuje správu a úpravu štruktúry údajov.
- Abstrakcia : ADT umožňujú používateľom pracovať s dátovými štruktúrami bez toho, aby museli poznať detaily implementácie, čo môže zjednodušiť programovanie a znížiť chyby.
- Nezávislosť štruktúry údajov : ADT môžu byť implementované pomocou rôznych dátových štruktúr, ktoré môžu uľahčiť prispôsobenie sa meniacim sa potrebám a požiadavkám.
- Skrytie informácií : ADT môžu chrániť integritu údajov riadením prístupu a zabránením neoprávneným úpravám.
- Modularita : ADT je možné kombinovať s inými ADT za účelom vytvorenia zložitejších dátových štruktúr, ktoré môžu zvýšiť flexibilitu a modularitu v programovaní.
Nevýhody:
Nevýhody sú uvedené nižšie:
- Nad hlavou : Implementácia ADT môže zvýšiť réžiu z hľadiska pamäte a spracovania, čo môže ovplyvniť výkon.
- Zložitosť : Implementácia ADT môže byť zložitá, najmä pre veľké a zložité dátové štruktúry.
- Učenie Krivka: Používanie ADT si vyžaduje znalosť ich implementácie a používania, čo si môže vyžadovať čas a námahu na učenie.
- Obmedzená flexibilita: Niektoré ADT môžu byť obmedzené vo svojej funkčnosti alebo nemusia byť vhodné pre všetky typy dátových štruktúr.
- náklady : Implementácia ADT môže vyžadovať dodatočné zdroje a investície, ktoré môžu zvýšiť náklady na vývoj.