Kontejner (abstraktní datový typ)Kontejner je abstraktní datový typ, který bývá v programování implementován pomocí datové struktury, např. třídy,[1][2], jejíž instance tvoří kolekce jiných objektů. Kontejnery obsahují objekty organizované tak, aby dodržovala jistá (přístupová) pravidla. Velikost kontejneru je závislá na počtu obsažených objektů. Velikost kontejneru závisí na počtu prvků, které kontejner obsahuje. Vnitřní implementace kontejnerů mohou být různě složité a odvíjejí se od způsobu použití konkrétního kontejneru. Kontejnerové datové struktury se často používají v mnoha typech programovacích jazyků. Funkce a vlastnostiKontejnery lze charakterizován následujícími třemi vlastnostmi:
Kontejnerové třídy byl měly implementovat operace CRUD:
Pro postupný přístup ke všem prvkům kontejneru se často používají iterátory. Druhy kontejnerůKontejnery lze rozdělit na jednohodnotové kontejnery a asociativní kontejnery. Jednohodnotové kontejnery ukládají každý objekt samostatně. K objektům asociativního kontejneru lze přistupovat přímo, pomocí cyklu (například cyklus for) nebo pomocí iterátoru. Asociativní kontejnery používají asociativní pole, mapy nebo slovníky tvořené dvojicemi klíč-hodnota tak, že každý klíč se může v kontejneru vyskytnout nejvýše jednou. Klíč se používá pro nalezení hodnoty (entity, objektu), pokud je uložen v kontejneru. Asociativní kontejnery mohou být implementovány např. jako šablony tříd. Ke kontejnerovým abstraktním datovým typům patří: K obvyklým datovým strukturám, pomocí nichž se implementují tyto abstraktní typy, patří:
Grafické kontejneryKontejnery se používají také ve widget toolkitet. Jde o speciální ovládací prvky (widgety), které sdružují jednodušší widgety, a tvoří např. okna nebo panely. Kromě svých grafických vlastností mají obdobný účel jako kontejnerové třídy, protože udržují seznam widgetů, z nichž jsou složeny (potomků), a umožňují přidávání, odstraňování nebo vyzvedávání dalších prvků mezi své potomky. Ve staticky typovaných jazycíchSouvisející informace naleznete také v článku Typový systém#Statická typová kontrola.
Kontejnerové abstrakce lze zapsat v prakticky v libovolném programovacím jazyce, bez ohledu na jeho typový systém.[3]:s.273 V silně typovaných objektově orientovaných jazycích však může být vytváření znovupoužitelných homogenních kontejnerů pro vývojáře poměrně složité. Potřeba ukládat do různých kontejnerů různé typy prvků může v některých programovacích jazycích vést k únavnému procesu psaní a uchovávání sbírky kontejnerů pro každý typ prvku.[3]:s.274-276 Mnoho jednoduchých typů (například celá čísla nebo čísla s pohyblivou řádovou čárkou) je ze své podstaty vzájemně nekompatibilních kvůli velikosti paměti, kterou zabírají, a kvůli svému sémantickému významu, a proto vyžadují různé kontejnery (samozřejmě pokud nejsou vzájemně kompatibilní nebo konvertovatelné).[3]:s.274-276 Moderní programovací jazyky poskytují různé přístupy pro řešení tohoto problému:[3]:s.274-281
OdkazyReferenceV tomto článku byl použit překlad textu z článku Container (abstract data type) na anglické Wikipedii.
Související články
Externí odkazy |
Portal di Ensiklopedia Dunia