Handle

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.

Využití

Mezi typická využití handlů patří:

Vnitřní reprezentace a práce s handly

Handle je zpravidla jen malý objekt, nejčastěji se jedná o 32bitovou hodnotu; v některých případech se však formálně jako handle může používat celá datová struktura, u které pouze není dovoleno její přímé použití programem. Implementací handlu může být obvykle buď přímo ukazatel na odpovídající větší datovou strukturu, nebo identifikační číslo položky v tabulce spravovaných objektů. V silně typovaných jazycích může být i sama vnitřní struktura handlu před programem skryta (a jediné, co programovací jazyk dovolí, je hodnotu opravdu jen předávat volaným funkcím).

Handle obvykle platí jen pro proces, kterému byl přidělen, v některých případech je dokonce dovoleno handle využívat jen z vlákna, kterému bylo přiděleno. Operační systém či příslušná knihovna však mohou poskytovat prostředky, jak jinému procesu umožnit pracovat se stejným objektem – jak handle zduplikovat. Některé handly také může proces zdědit od procesu, který jej vytvořil.

Pomocí zpětného inženýrství se často programátorovi může podařit zjistit vnitřní reprezentaci handlu, což poté může využít k přímému přístupu k reprezentovanému objektu a případně s ním pracovat způsobem, který jinak poskytované rozhraní nenabízí. Takové využití však neguje všechny výše zmíněné výhody a vede k nefunkčnosti programu ve chvíli, kdy knihovna tuto vnitřní reprezentaci změní.

Související články


Zdroj datcs.wikipedia.org
Originálcs.wikipedia.org/wiki/Handle
Zobrazit sloupec 

Kalkulačka - Výpočet

Výpočet čisté mzdy

Důchodová kalkulačka

Přídavky na dítě

Příspěvek na bydlení

Rodičovský příspěvek

Životní minimum

Hypoteční kalkulačka

Povinné ručení

Banky a Bankomaty

Úrokové sazby, Hypotéky

Směnárny - Euro, Dolar

Práce - Volná místa

Úřad práce, Mzda, Platy

Dávky a příspěvky

Nemocenská, Porodné

Podpora v nezaměstnanosti

Důchody

Investice

Burza - ČEZ

Dluhopisy, Podílové fondy

Ekonomika - HDP, Mzdy

Kryptoměny - Bitcoin, Ethereum

Drahé kovy

Zlato, Investiční zlato, Stříbro

Ropa - PHM, Benzín, Nafta, Nafta v Evropě

Podnikání

Města a obce, PSČ

Katastr nemovitostí

Katastrální úřady

Ochranné známky

Občanský zákoník

Zákoník práce

Stavební zákon

Daně, formuláře

Další odkazy

Auto - Cena, Spolehlivost

Registr vozidel - Technický průkaz, eTechničák

Finanční katalog

Volby, Mapa webu

English version

Czech currency

Prague stock exchange


Ochrana dat, Cookies

 

Copyright © 2000 - 2024

Kurzy.cz, spol. s r.o., AliaWeb, spol. s r.o.