An Abstraktní datový typ (ADT) je koncepční model, který definuje sadu operací a chování pro datovou strukturu bez upřesnění, jak jsou tyto operace prováděny nebo jak jsou data organizována v paměti. Definice ADT pouze uvádí co operace se mají provádět ale ne jak tyto operace budou provedeny. Nespecifikuje, jak budou data organizována v paměti a jaké algoritmy budou použity pro provádění operací. Nazývá se „abstraktní“, protože poskytuje pohled nezávislý na implementaci.
Proces poskytování pouze toho nejnutnějšího a skrývání detailů je známý jako abstrakce.
Vlastnosti ADT
Abstraktní datové typy (ADT) představují způsob, jak zapouzdřit data a operace s těmito daty do jediné jednotky. Některé z klíčových funkcí ADT zahrnují:
- Abstrakce: Uživatel nemusí znát implementaci datové struktury, poskytuje pouze to nejnutnější.
- Lepší konceptualizace: ADT nám poskytuje lepší konceptualizaci skutečného světa.
- Robustní: Program je robustní a má schopnost zachytit chyby.
- Zapouzdření : ADT skrývají interní podrobnosti dat a poskytují uživatelům veřejné rozhraní pro interakci s daty. To umožňuje snadnější údržbu a úpravu datové struktury.
- Abstrakce dat : ADT poskytují úroveň abstrakce od podrobností implementace dat. Uživatelé potřebují znát pouze operace, které lze s daty provádět, nikoli to, jak jsou tyto operace implementovány.
- Nezávislost datové struktury : ADT lze implementovat pomocí různých datových struktur, jako jsou pole nebo propojené seznamy, aniž by to ovlivnilo funkčnost ADT.
- Skrytí informací: ADT mohou chránit integritu dat tím, že umožňují přístup pouze oprávněným uživatelům a operacím. To pomáhá předcházet chybám a zneužití dat.
- Modularita : ADT lze kombinovat s jinými ADT za účelem vytvoření větších a složitějších datových struktur. To umožňuje větší flexibilitu a modularitu v programování.
Celkově ADT poskytují výkonný nástroj pro organizaci a manipulaci s daty strukturovaným a efektivním způsobem.
Tento obrázek ukazuje, jak abstraktní datový typ (ADT) skrývá vnitřní datové struktury (jako jsou seznamy propojené pole) pomocí veřejných a soukromých funkcí, které aplikačnímu programu zpřístupňují pouze definované rozhraní.

Proč používat ADT?
Hlavní důvody, proč používat ADT v Javě, jsou uvedeny níže:
- Zapouzdření: Skrývá složité implementační detaily za čisté rozhraní.
- Znovupoužitelnost : Umožňuje různé interní implementace (např. pole nebo propojený seznam) beze změny externího použití.
- Modularita: Zjednodušuje údržbu a aktualizace oddělením logiky.
- Zabezpečení: Chrání data tím, že zabraňuje přímému přístupu a minimalizuje chyby a nezamýšlené změny.
Příklad abstrakce
Například používáme primitivní hodnoty jako int float a char s tím, že tyto datové typy mohou fungovat a být s nimi prováděny bez znalosti podrobností o jejich implementaci. ADT fungují podobně definováním jaké operace jsou možné bez podrobného popisu jejich provádění.
Rozdíl mezi ADT a UDT
Níže uvedená tabulka ukazuje rozdíl mezi ADT a UDT.
seznam.seřadit java
Aspekt | Abstraktní datové typy (ADT) | Uživatelsky definované datové typy (UDT) |
|---|---|---|
Definice | Definuje třídu objektů a operace, které s nimi lze provádět, spolu s jejich očekávaným chováním (sémantikou), ale bez zadání podrobností implementace. | Vlastní datový typ vytvořený kombinací nebo rozšířením existujících primitivních typů určujících strukturu i operace. |
Soustředit | Jaké operace jsou povoleny a jak se chovají, aniž by bylo diktováno, jak jsou implementovány. | Jak jsou data organizována v paměti a jak jsou prováděny operace. |
Účel | Poskytuje abstraktní model pro definování datových struktur koncepčním způsobem. | Umožňuje programátorům vytvářet konkrétní implementace datových struktur pomocí primitivních typů. |
Podrobnosti o implementaci pythonská n-tice seřazena | Nespecifikuje, jak jsou operace implementovány nebo jak jsou data strukturována. | Určuje, jak vytvořit a uspořádat datové typy pro implementaci struktury. |
Používání | Používá se k návrhu a konceptualizaci datových struktur. | Používá se k implementaci datových struktur, které realizují abstraktní pojmy definované ADT. |
Příklad | Seznam zásobníku ADT ADT Queue ADT. vkládací python | Strukturuje záznamy výčtů tříd. |
Příklady ADT
Nyní pojďme porozumět třem běžným ADT: List ADT Stack ADT a Queue ADT.
1. Seznam ADT
Seznam ADT (Abstract Data Type) je sekvenční kolekce prvků, která podporuje sadu operací bez upřesnění interní implementace . Poskytuje uspořádaný způsob, jak ukládat přístupová data a upravovat je.
Souboje seznamuOperace:
Seznam ADT potřebuje uložit požadovaná data v pořadí a měl by mít následující operace :
- získat(): Vrátí prvek ze seznamu na libovolné dané pozici.
- vložit(): Vložte prvek na libovolné místo v seznamu.
- odstranit(): Odeberte první výskyt jakéhokoli prvku z neprázdného seznamu.
- removeAt(): Odeberte prvek na určeném místě z neprázdného seznamu.
- nahradit(): Nahraďte prvek na libovolné pozici jiným prvkem.
- velikost(): Vrátí počet prvků v seznamu.
- isEmpty(): Vraťte true, pokud je seznam prázdný; jinak vrátí false.
- isFull(): Vraťte true, pokud je seznam plný, jinak vraťte false. Použitelné pouze v implementacích s pevnou velikostí (např. seznamy založené na poli).
2. Stack ADT
Stack ADT je lineární datová struktura, která se řídí principem LIFO (Last In First Out). Umožňuje přidávat a odebírat prvky pouze z jednoho konce, který se nazývá horní část zásobníku.
Pohled na zásobníkOperace:
V Stack ADT by pořadí vkládání a mazání mělo být podle principu FILO nebo LIFO. Prvky se vkládají a odebírají ze stejného konce, který se nazývá vršek stohu. Měl by také podporovat následující operace:
- TAM(): Vložte prvek na jeden konec stohu, který se nazývá horní.
- pop(): Vyjměte a vraťte prvek v horní části stohu, pokud není prázdný.
- kouknout(): Pokud není stoh prázdný, vraťte prvek v horní části stohu bez jeho odstranění.
- velikost(): Vraťte počet prvků v zásobníku.
- isEmpty(): Vraťte true, pokud je zásobník prázdný; jinak vrátí false.
- isFull(): Vraťte true, pokud je zásobník plný; jinak vrátí false. Relevantní pouze pro zásobníky s pevnou kapacitou (např. založené na poli).
3. Fronta ADT
Queue ADT je lineární datová struktura, která se řídí principem FIFO (First In First Out). Umožňuje vkládání prvků na jeden konec (zadní) a vyjímání z druhého konce (přední).
Pohled na frontuOperace:
Queue ADT má podobný design jako Stack ADT, ale pořadí vkládání a mazání se mění na FIFO. Prvky se vkládají na jeden konec (nazývaný zadní) a vyjímají se z druhého konce (nazývaný přední). Měl by podporovat následující operace:
chromový adresní řádek
- zařadit do fronty(): Vložte prvek na konec fronty.
- podle toho(): Odeberte a vraťte první prvek fronty, pokud fronta není prázdná.
- kouknout(): Vraťte prvek fronty bez jeho odstranění, pokud fronta není prázdná.
- velikost(): Vrátí počet prvků ve frontě.
- isEmpty(): Vraťte true, pokud je fronta prázdná; jinak vrátí false.
Výhody a nevýhody ADT
Abstraktní datové typy (ADT) mají několik výhod a nevýhod, které je třeba vzít v úvahu při rozhodování o jejich použití při vývoji softwaru. Zde jsou některé z hlavních výhod a nevýhod používání ADT:
Výhoda:
Výhody jsou uvedeny níže:
- Zapouzdření : ADT poskytují způsob, jak zapouzdřit data a operace do jediné jednotky, což usnadňuje správu a úpravu datové struktury.
- Abstrakce : ADT umožňují uživatelům pracovat s datovými strukturami, aniž by museli znát podrobnosti implementace, což může zjednodušit programování a snížit chyby.
- Nezávislost datové struktury : ADT lze implementovat pomocí různých datových struktur, které mohou usnadnit přizpůsobení měnícím se potřebám a požadavkům.
- Skrytí informací : ADT mohou chránit integritu dat řízením přístupu a zabráněním neoprávněným úpravám.
- Modularita : ADT lze kombinovat s jinými ADT za účelem vytvoření složitějších datových struktur, které mohou zvýšit flexibilitu a modularitu v programování.
Nevýhody:
Nevýhody jsou uvedeny níže:
- Nad hlavou : Implementace ADT může zvýšit režii, pokud jde o paměť a zpracování, což může ovlivnit výkon.
- Složitost : Implementace ADT může být složitá, zejména pro velké a složité datové struktury.
- Učení Křivka: Používání ADT vyžaduje znalost jejich implementace a použití, což může vyžadovat čas a úsilí, než se naučit.
- Omezená flexibilita: Některé ADT mohou mít omezenou funkčnost nebo nemusí být vhodné pro všechny typy datových struktur.
- Náklady : Implementace ADT může vyžadovat dodatečné zdroje a investice, které mohou zvýšit náklady na vývoj.