logo

Abstraktní datové typy

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í.

Abstraktní datové typy

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.

Abstraktní datové typySouboje seznamu

Operace:

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.

Abstraktní datové typyPohled na zásobník

Operace:

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í).

Abstraktní datové typyPohled na frontu

Operace:

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.
Vytvořit kvíz