Rozdíl mezi abstrakcí a zapouzdřením

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.

Co je Abstrakce?

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.

Co je zapouzdření?

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í.

Rozdíl mezi abstrakcí a zapouzdřením

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.

  1. Rozdíly v „definici“ abstrakce a zapouzdření - Abstrakce je základní koncept OOP, který zdůrazňuje všechny podstatné aspekty objektu skrýváním irelevantní detailů, aby se zvýšila účinnost a eliminovala složitost. Enkapsulace je naproti tomu mechanismem skrytím dat, který zabaluje data a informace do kapsle, aby se omezil přístup z vnějšího světa.
  2. Rozdíly v „funkčnosti“ abstrakce a zapouzdření- Abstrakce je mechanismus skrývání dat, který zdůrazňuje pouze základní funkce, které zjednodušují složité programy, zatímco zapouzdření je na druhou stranu metodou vazby dat a kódů do jediné entity. Cílem je chránit detaily implementace před externím přístupem.
  3. Rozdíly v „implementaci“ abstrakce a zapouzdření - Abstrakce je implementována pomocí abstraktní třídy a rozhraní, zatímco zapouzdření je implementováno pomocí modifikátorů přístupu. K zapouzdření dat se používá pět typů modifikátorů: soukromé, veřejné, interní, chráněné a chráněné interní.
  4. Rozdíly v „konceptu“ abstrakce a zapouzdření- Myšlenkou abstrakce je zaměřit se spíše na to, než na co. Zapouzdření skrývá vnitřní mechaniku jak. Například, když řídíte auto, víte přesně, co brzdový pedál dělá, ale možná neznáte celý mechanismus za tím, protože data jsou zapouzdřena.
  5. Rozdíly v „příkladu“ abstrakce a zapouzdření - Vezměme si příklad chytrého telefonu. Víte, co to dělá, ale možná nevíte, jak to dělá, co dělá. Záleží vám pouze na displeji a tlačítkách na klávesnici, než abyste se starali o její vnitřní obvody. Zde je smartphone abstrakt, kde jsou vnitřní implementační detaily zapouzdřeny.

Abstrakce vs. zapouzdření s srovnávací tabulkou

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.

souhrn

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.