Abstrakce a zapouzdření jsou koncepty základního objektově orientovaného programování (OOP), které vám umožňují implementovat objekty v reálném světě do programů a kódů. Zatímco oba jdou ruku v ruce, jsou od sebe velmi odlišné. Zatímco každá metoda je zapouzdření, je to také abstrakce. Jednoduše řečeno, když dáte dohromady různé věci, abyste vytvořili entitu, vytvoříte vlastně koncept - abstrakt. I když jsou oba technicky neoddělitelné, nemají doslova nic společného. Je téměř pravda, že každá zapouzdření je abstrakce, protože oba něco skrývají, mají však spravedlivý podíl na rozdílech.
Abstrakce je základní koncept OOP, který se zaměřuje pouze na relevantní data objektu a skrývá všechny irelevantní podrobnosti, které mohou nebo nemusí být pro obecné nebo specializované chování. Skryje podrobnosti o pozadí a zdůrazňuje zásadní body ke snížení složitosti a zvýšení efektivity. V zásadě je abstrakce programovacím nástrojem pro správu složitosti. Abstrakce se zaměřuje spíše na myšlenky než na události. Skryje podrobnosti na úrovni návrhu tím, že poskytuje funkčnost uživatelům. Výsledný objekt lze také nazvat abstrakcí. Programátor se ujistí, že pojmenovaná entita bude obsahovat všechny podstatné aspekty a žádný z irelevantní.
Vezměme si příklad abstrakce v reálném světě. Uvažujme případ vozidla, kterým je v tomto případě vaše vozidlo. Mechanik se snaží opravit vaše auto nebo řekněme konkrétní část vašeho auta. Zde jste uživatel a nechcete se dostat do specifik svého vozu nebo do jaké části se vlastně zlomil. Ve skutečnosti vám na těchto věcech nezáleží; prostě chcete, aby se vaše vozidlo vrátilo do původního stavu, aniž byste se museli starat o podrobnosti. Takže jste vlastně řekl mechanikovi, co chcete, oddělením implementační části. Toto je abstrakce. Soustředili jste se na nejdůležitější věc, kterou je oprava vašeho auta, spíše než na specifika.
Zapouzdření je další koncept OOP, který spojuje data a funkce do jedné komponenty a omezuje přístup k některým komponentám. Je to jeden z hlavních základních konceptů OOP, který zabaluje data a informace do jedné jednotky. Z technického hlediska znamená zapouzdření skrytí atributů pro ochranu proměnných před vnějším přístupem, takže změna v jedné části aplikace neovlivní ostatní části. Naopak, zpřístupněním informací riskujete zneužití dat. Poskytuje základní integritu dat tím, že je chrání před vnějším světem. Jednoduše řečeno, skrývá další podrobnosti z vnějšího světa.
Vezměme si příklad myši Bluetooth. Musíte pouze vědět o chování zařízení, aniž byste se museli bát podrobností o implementaci, jako je to, jaký druh senzorů má myš, je bezdrátová nebo ne, atd. Každý jednotlivý detail popisuje myš, ale bez ohledu na podrobnosti je to pouze myš. Pro použití myši potřebujete rozhraní, což je v tomto případě ukazatel myši. Toto je zapouzdření.
Zatímco oba jsou základní pojmy související s OOP a jsou technicky neoddělitelné, stále mají své rozdíly v mnoha aspektech.
Abstrakce | Zapouzdření |
Zabývá se pouze relevantními podrobnostmi skrýváním nepodstatných, aby se snížila složitost a zvýšila se účinnost. | Spojuje data a informace do jedné entity, aby byla data chráněna před externími zdroji. |
Odkazuje na myšlenku skrytí dat, která není pro účely prezentace vyžadována. | Skryje data a kód, aby omezil nežádoucí přístup. |
Zaměřuje se spíše na to, než na co. | Skrývá vnitřní mechaniku toho, jak něco dělá. |
Skrývá zbytečné podrobnosti na úrovni návrhu. | Skrývá také podrobnosti, ale na úrovni implementace. |
Informace a údaje jsou odděleny od příslušných údajů. | Informace jsou skryty uvnitř kapsle pro snadný přístup. |
Zabývá se spíše nápady než událostmi. | Cílem je chránit data před vnějším světem. |
Je implementována pomocí abstraktní třídy a rozhraní. | Je implementován pomocí modifikátorů přístupu chráněného, soukromého a soukromého pro balíčky. |
Zatímco oba jsou pojmy OOP související s úkryty dat, jsou od sebe navzájem docela odlišné. Abstrakce se také týká skrývání jako zapouzdření, ale zatímco první skrývá složitost, druhá uchovává data, která zapouzdřuje, kontrolou přístupu k nim. Abstrakce se týká pojmu představování pouze nezbytných znaků skrýváním irelevantní detailů, aby se snížila složitost aplikace a tím se zvýšila účinnost. Enkapsulace se naproti tomu vztahuje na koncepci skrytí všech vnitřních mechanismů programu, aby se chránila informace před nežádoucím přístupem. Spojuje data a informace do jedné komponenty omezením přístupu k jiným komponentám.