chytání - online puzzle
Handle (překládáno též jako madlo nebo rukojeť) označuje v programování pomocný objekt bez známé vnitřní struktury, který reprezentuje nějaký složitější objekt spravovaný cizím kódem. Vnitřně může být handle reprezentován ukazatelem nebo referencí na cílový objekt, číslem odkazujícím do tabulky, struktura přímo obsahující příslušná data atd., z hlediska aplikačního programu však tato vnitřní struktura není známa a handle je „neprůhledný objekt“, který je pouze předáván mezi volanými funkcemi API. Příkladem použití je handle otevřeného souboru – při otevření souboru získá program od operačního systému handle na tento soubor, který předává všem funkcím pracujícím s tímto souborem. Pro program handle tento otevřený soubor reprezentuje a jeho prostřednictvím může získat o tomto souboru informace, či se souborem pracovat; přesný obsah a struktura informací uložených v handlu samém však programu nejsou známy.
Účel a výhody
Existuje několik důvodů, proč byla tato technika vůbec zavedena. Její hlavní výhodou je tzv. zapouzdření (tento koncept byl o něco později rozvinut v tzv. objektově orientovaném programování) – oddělení vnějšího chování a rozhraní nějakého objektu od jeho vnitřní struktury. Toto striktní oddělení umožňuje v případě potřeby změnit „vnitřek objektu“ – jeho vnitřní reprezentaci a implementaci – aniž by na takovou změnu museli uživatelé objektu jakkoli reagovat, ba dokonce si uživatelé nemusí této změny ani všimnout.
Třeba v příkladu handle na otevřený soubor si lze představit, že přesná struktura informací, které si operační systém potřebuje udržovat, může záviset na konkrétním systému souborů, na kterém se soubor nachází. Pokud by se tedy nepoužíval handle, musel by program konkrétně podporovat všechny požadované souborové systémy.