V programování se zapouzdřením rozumí seskupení dat se sadou rutin, které umožňují jejich čtení a manipulaci. Tento princip je často doprovázen maskováním těchto nezpracovaných dat, aby bylo zajištěno, že uživatel neobejde rozhraní pro něj určené. Celok je poté považován za černou skříňku se specifikovaným chováním a vlastnostmi.
Zapouzdření je základem objektově orientovaného programování , kde každá třída definuje metody nebo vlastnosti pro interakci s datovými členy, ale tento princip lze nalézt v jiných stylech programování (např. Modulární programování ).
Principy zapouzdření jsou aplikovány velmi odlišnými způsoby v závislosti na jazyce. Stále však můžeme najít dva hlavní proudy.
Zaprvé, relativně přísné uplatňování zásad v čistě objektových jazycích (pokud má tento pojem jakýkoli význam), jako v SmallTalk nebo Eiffel . V této souvislosti jsou atributy často k dispozici pouze pro čtení obecně v programu a také pro zápis zevnitř třídy objektu. Poté najdeme různé způsoby přizpůsobení tohoto rámce přátelským třídám nebo kategoriím a hierarchiím objektů.
Zadruhé, jazyky jako C ++ , Java nebo Ruby a obecněji všechny jazyky ovlivněné syntaxí C ++, která nabízí tři úrovně viditelnosti:
Tento typ zapouzdření ve skutečnosti poskytuje další přístup k zapouzdření, který nerozlišuje mezi čtením a zápisem atributu. V této souvislosti je také možné použít přístupové a modifikační metody definované v jedné z těchto úrovní viditelnosti podle efektu, který si přeje dosáhnout. Kromě atributu, který ve skutečnosti obsahuje data, jsou často definovány metody obou typů. Konečně prostředky umožňují ostatním volným třídám a funkcím volný přístup ke všem atributům třídy, jako je tomu u tříd a přátelských funkcí v C ++.