# Abstraktní datové typy - abstraktní - nezabývá se rozdíly, ale tím, co je **společné** - definují možné operace s daty - nedefinují způsob uložení dat ani provedení operací (implementaci) **ADT vs rozhraní** - ADT můžou být implementovány různě v různých jazycích - rozhraní jen způsob implementace ADT v Javě **Kolekce** - datové struktury, které uchovávají sadu prvků - umožňují operace s daty - přidat prvek (na začátek, na konec, za/před prvek, s nějakým klíčem, ...) - vybrat prvek (na začátku, na konci, na indexu, s extrémním klíčem, ...) - odebrat prvek (na začátku, na konci, na indexu, s extrémním klíčem, ...) **Implementace ADT** - určuje složitost operací - obvykle reprezentována třídou **Úkol programátora** - vybrat vhodnou ADT - vybrat vhodnou implementaci ADT - vědět, co ADT dělá (jaká je složitost operací)