Než se seznámíme s abstraktním datovým typem, měli bychom vědět, co je datová struktura.
Co je struktura dat?
Datová struktura je technika organizace dat tak, aby mohla být data efektivně využívána. Existují dva způsoby zobrazení datové struktury:
Proč datová struktura?
Výhody použití datové struktury jsou následující:
- To jsou základní složky používané pro vytváření rychlých a výkonných algoritmů.
- Pomáhají nám spravovat a organizovat data.
- Datové struktury činí kód čistším a snáze srozumitelným.
Co je abstraktní datový typ?
Abstraktní datový typ je abstrakce datové struktury, která poskytuje pouze rozhraní, kterému musí datová struktura odpovídat. Rozhraní neposkytuje žádné konkrétní podrobnosti o tom, co by mělo být implementováno nebo v jakém programovacím jazyce.
Jinými slovy, můžeme říci, že abstraktní datové typy jsou entity, které jsou definicemi dat a operací, ale nemají podrobnosti o implementaci. V tomto případě známe data, která ukládáme, a operace, které lze s daty provádět, ale neznáme detaily implementace. Důvodem neexistence podrobností o implementaci je to, že každý programovací jazyk má například jinou implementační strategii; datová struktura C je implementována pomocí struktur, zatímco datová struktura C++ je implementována pomocí objektů a tříd.
Například, a List je abstraktní datový typ, který je implementován pomocí dynamického pole a propojeného seznamu. Fronta je implementována pomocí propojené fronty založené na seznamu, fronty založené na poli a fronty založené na zásobníku. Mapa je implementována pomocí stromové mapy, hash mapy nebo hash tabulky.
Abstraktní datový typ modelu
Než budeme vědět o modelu abstraktních datových typů, měli bychom vědět o abstrakci a zapouzdření.
nahradit řetězec v řetězci java
Abstrakce: Jedná se o techniku skrytí vnitřních detailů před uživatelem a zobrazení pouze nezbytných detailů uživateli.
Zapouzdření: Jedná se o techniku sloučení dat a členské funkce do jediné jednotky, která se nazývá zapouzdření.
Výše uvedený obrázek ukazuje model ADT. V modelu ADT existují dva typy modelů, tj. veřejná funkce a soukromá funkce. Model ADT také obsahuje datové struktury, které v programu používáme. V tomto modelu je provedeno první zapouzdření, tj. všechna data jsou zabalena do jediné jednotky, tj. ADT. Poté je provedena abstrakce znamená ukázat operace, které lze provádět na datové struktuře a jaké jsou datové struktury, které v programu používáme.
Pojďme pochopit abstraktní datový typ na příkladu z reálného světa.
najít blokovaná čísla na android
Pokud vezmeme v úvahu smartphone. Podíváme se na vysoké specifikace smartphonu, jako jsou:
- 4GB RAM
- Procesor Snapdragon 2,2 GHz
- 5 palcový LCD displej
- Duální fotoaparát
- Android 8.0
Výše uvedené specifikace smartphonu jsou data a na smartphonu můžeme také provádět následující operace:
Smartphone je entita, jejíž údaje nebo specifikace a operace jsou uvedeny výše. Abstraktní/logický pohled a operace jsou abstraktní nebo logické pohledy chytrého telefonu.
Implementační pohled na výše uvedený abstraktní/logický pohled je uveden níže:
class Smartphone { private: int ramSize; string processorName; float screenSize; int cameraCount; string androidVersion; public: void call(); void text(); void photo(); void video(); }
Výše uvedený kód je implementací specifikací a operací, které lze provádět na smartphonu. Implementační pohled se může lišit, protože syntaxe programovacích jazyků je odlišná, ale abstraktní/logický pohled na datovou strukturu by zůstal stejný. Můžeme tedy říci, že abstraktní/logický pohled je nezávislý na pohledu implementačním.
Poznámka: Známe operace, které lze provádět s předdefinovanými datovými typy, jako je int, float, char atd., ale neznáme podrobnosti implementace datových typů. Můžeme tedy říci, že abstraktní datový typ je považován za skrytý box, který skrývá všechny vnitřní detaily datového typu.
Příklad datové struktury
Předpokládejme, že máme indexové pole o velikosti 4. Máme indexové umístění začínající od 0, 1, 2, 3. Pole je datová struktura, kde jsou prvky uloženy na souvislém místě. Paměťová adresa prvního prvku je 1000, druhého prvku je 1004, třetího prvku je 1008 a čtvrtého prvku je 1012. Protože je typu celočíselné, zabere 4 bajty a rozdíl mezi adresami každého prvku je 4 bajtů. Hodnoty uložené v poli jsou 10, 20, 30 a 40. Tyto hodnoty, pozice indexu a adresy paměti jsou implementacemi.
Abstraktní nebo logický pohled na celočíselné pole lze uvést jako:
- Ukládá sadu prvků typu integer.
- Čte prvky podle pozice, tj. indexu.
- Upravuje prvky podle indexu
- Provádí třídění
Implementační pohled na celočíselné pole:
a[4] = {10, 20, 30, 40} cout<< a[2] a[3] = 50