Abstraktní datové typy
(Založena nová stránka: ADT je matematický model dat a operace nad těmito daty. Využívá základních datových typů pro konstrukci komplexnějších ADT, které využíváme pro snadnější...) |
|||
| Řádka 1: | Řádka 1: | ||
ADT je matematický model dat a operace nad těmito daty. Využívá základních datových typů pro konstrukci komplexnějších ADT, které využíváme pro snadnější organizaci dat a často pro optimalizaci algoritmů. | ADT je matematický model dat a operace nad těmito daty. Využívá základních datových typů pro konstrukci komplexnějších ADT, které využíváme pro snadnější organizaci dat a často pro optimalizaci algoritmů. | ||
| − | Abstraktní datový typ | + | |
| − | je zcela oddělený blok, s klientským programem komunikuje pomocí rozhraní | + | == Abstraktní datový typ == |
| − | je nezávislý na implementaci, na venek se projevuje jen veřejnými metodami | + | |
| − | vše ostatní, kromě ovládacích metod, je uživateli skryto (samotná data a přístup k nim např.) (integrita) | + | * je zcela oddělený blok, s klientským programem komunikuje pomocí rozhraní |
| − | je (klientsky) nezávislým blokem, může jej využívat kdokoliv, kdo zná rozhraní (pokud je ADT tedy třeba v DLL knihovně, můžeme jej používat i z jiných jazyků) (modularita) | + | * je nezávislý na implementaci, na venek se projevuje jen veřejnými metodami |
| − | je pevně a jasně definován | + | * vše ostatní, kromě ovládacích metod, je uživateli skryto (samotná data a přístup k nim např.) (integrita) |
| + | * je (klientsky) nezávislým blokem, může jej využívat kdokoliv, kdo zná rozhraní (pokud je ADT tedy třeba v DLL knihovně, můžeme jej používat i z jiných jazyků) (modularita) | ||
| + | * je pevně a jasně definován | ||
ADT definuje a podporuje tyto operace | ADT definuje a podporuje tyto operace | ||
| − | kostruktor - vytvoří istanci ADT | + | * '''kostruktor''' - vytvoří istanci ADT |
| − | selektor - vyhledá žádaný prvek (indexer, At(), Pop()...) | + | * '''selektor''' - vyhledá žádaný prvek (indexer, At(), Pop()...) |
| − | modifikátor - upraví data ve struktuře (indexer, Push(), Add()...) | + | * '''modifikátor''' - upraví data ve struktuře (indexer, Push(), Add()...) |
Těmito operacemi jsou data jako taková uživateli skryta. Dynamická množina - množina dat, které předchozí operace podporuje, základ většiny ADT | Těmito operacemi jsou data jako taková uživateli skryta. Dynamická množina - množina dat, které předchozí operace podporuje, základ většiny ADT | ||
Verze z 7. 8. 2011, 15:42
ADT je matematický model dat a operace nad těmito daty. Využívá základních datových typů pro konstrukci komplexnějších ADT, které využíváme pro snadnější organizaci dat a často pro optimalizaci algoritmů.
Abstraktní datový typ
- je zcela oddělený blok, s klientským programem komunikuje pomocí rozhraní
- je nezávislý na implementaci, na venek se projevuje jen veřejnými metodami
- vše ostatní, kromě ovládacích metod, je uživateli skryto (samotná data a přístup k nim např.) (integrita)
- je (klientsky) nezávislým blokem, může jej využívat kdokoliv, kdo zná rozhraní (pokud je ADT tedy třeba v DLL knihovně, můžeme jej používat i z jiných jazyků) (modularita)
- je pevně a jasně definován
ADT definuje a podporuje tyto operace
- kostruktor - vytvoří istanci ADT
- selektor - vyhledá žádaný prvek (indexer, At(), Pop()...)
- modifikátor - upraví data ve struktuře (indexer, Push(), Add()...)
Těmito operacemi jsou data jako taková uživateli skryta. Dynamická množina - množina dat, které předchozí operace podporuje, základ většiny ADT
Příklady ADT: Seznam, Fronta, Zásobník, Trie, Binární vyhledávací strom, Hashmapa, ....
ADT je často využíváno návrhovými vzory. V některých jazycích lze ADT vytvořit jako generické, tedy vhodné pro uchování libovolného datového typu (např List<int>). Tyto generické ADT jsou také často v jazyce již implementovány jako knihovny (C# v Generics, C++ v Standard Template Library). U jazyků, které toto nepodporují lze využít Objekt, a ten přetypovávat, což není ideální, ale funguje. U jazyků nemajících objekt je to horší, musíme přijít s vlastní specifickou implementací.