Abstrakce a zapouzdření
Abstrakce a zapouzdření jsou základní pojmy orientované na programování (OOP), které umožňují implementovat objekty reálného světa do programů a kódů. Zatímco oba jde ruku v ruce, jsou navzájem velmi odlišné. Zatímco každá metoda je zapouzdření, je to také abstrakce. Jednoduše řečeno, když dáte různé věci dohromady, abyste vytvořili entitu, vy vytváříte koncept - abstrakt. Zatímco oba jsou technicky neoddělitelné, mají doslova nic společného. Je téměř pravda, že každé zapouzdření je abstrakcí, protože obojí skrývá něco, nicméně mají svůj spravedlivý rozdíl.
Co je abstrakce?
Abstrakce je základní koncepce OOP, která se zaměřuje pouze na příslušná data objektu a skrývá všechny nepodstatné podrobnosti, které mohou nebo nemusí být pro obecné nebo specializované chování. Skrývá detaily pozadí a zdůrazňuje základní body, které snižují složitost a zvyšují efektivitu. V podstatě je abstrakce programovým nástrojem pro správu složitosti. Abstrakce se zaměřuje spíše na myšlenky než na události. Skrývá detaily na úrovni návrhu tím, že poskytuje uživatelům funkčnost. Výsledný objekt lze také nazvat abstrakcí. Programátor se ujistěte, že pojmenovaná entita bude mít všechny podstatné aspekty zahrnuté a žádné z irelevantních.
Vezměme si skutečný příklad abstrakce. Zvažme případ vozidla, což je v tomto případě vaše vozidlo. Mechanik se pokusí opravit vaše auto nebo řekněme konkrétní část vašeho auta. Zde jste uživatel a nechcete se dostat do specifik vašeho vozu nebo jaká část se skutečně zlomila. Na těch věcech se vůbec nezajímáš; chcete, aby vaše vozidlo bylo v původním stavu bez obav o detaily. Takže jste vlastně řekl mechanikovi, co chcete, tím, že oddělíte část implementace. Toto je abstrakce. Zaměřili jste se na nejdůležitější věc, která se stává, že vaše auto je opraveno, než aby se soustředilo na specifika.
Co je zapouzdření?
Zapouzdření je dalším konceptem OOP, který váže data a funkce do jedné komponenty, zatímco omezuje přístup k některým komponentům. Jedná se o jeden z hlavních základních pojmů OOP, které obalují data a informace pod jednou jednotkou. Z technického hlediska zapouzdření znamená skrytí atributů, které chrání proměnné před vnějším přístupem, takže změna v jedné části aplikace neovlivní ostatní části. Naopak tím, že zpřístupníte informace, riskujete zneužití dat. Poskytuje základní integritu dat chráněním před vnějším světem. Jednoduše řečeno, skrývá další detaily z vnějšího světa.
Uvádíme příklad myši Bluetooth. Potřebujete vědět jen o chování zařízení, aniž byste se obávali podrobností o implementaci, jako jaké senzory má myši, je to bezdrátové nebo ne, atd. Každý detail popisuje myš, ale bez ohledu na podrobnosti je to jen myš. Potřebujete rozhraní pro použití myši, 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 týkající se OOP a jsou technicky neoddělitelné, stále mají své rozdíly v mnoha aspektech.
- Rozdíly v definici abstrakce a zapouzdření - Abstrakce je základní koncepce OOP, která zdůrazňuje všechny základní aspekty objektu tím, že skryje nerelevantní detaily, aby zvýšila efektivitu a eliminovala složitost. Zapouzdření, na druhé straně, je mechanismus skrývání dat, který obaluje data a informace v kapsli, aby omezil přístup z vnějšího světa.
- Rozdíly v "funkčnosti" Abstrakce a zapouzdření- Abstrakce je mechanismus skrývání dat, který zdůrazňuje pouze základní funkce pro zjednodušení složitých programů, zatímco zapouzdření je na druhé straně metoda vazby dat a kódů do jedné entity. Cílem je chránit detaily implementace před externím přístupem.
- 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. Pro zapouzdření dat se používá pět typů modifikátorů: soukromé, veřejné, vnitřní, chráněné a chráněné interní.
- Rozdíly v konceptu Abstrakce a zapouzdření- Cílem abstrakce je soustředit se na to, co spíše než na jak. Zapouzdření skrývají vnitřní mechaniku způsobu. Například, když řídíte vůz, víte přesně, co dělá brzdový pedál, ale nemusíte znát celý mechanismus za ním, protože data jsou zapouzdřená.
- Rozdíly v "příkladu" abstrakce a zapouzdření - Ukážeme si příklad smartphonu. Víte, co dělá, ale možná nevíte, jak to dělá, co dělá. Zajímáte se pouze o obrazovku displeje a tlačítka na klávesnici, spíše než o starosti o její vnitřní obvody. Zde je inteligentní telefon abstraktní, kde jsou zapracovány vnitřní implementační detaily.
Abstrakce vs. zapouzdření porovnávací tabulkou
Abstrakce | Zapouzdření |
Zabývá se pouze relevantními detaily tím, že skryje nerelevantní prvky, čímž snižuje složitost a tím zvyšuje efektivitu. | Spojuje data a informace dohromady do jediné entity, která chrání data před vnějšími zdroji. |
Odkazuje na myšlenku skrývání dat, která není nutná pro účely prezentace. | Skrývá data a kód, aby omezil nechtěný přístup. |
Zaměřuje se na to, co spíše než na to, jak. | Skrývá vnitřní mechaniky toho, jak něco dělá. |
Skrývá zbytečné detaily na úrovni návrhu. | Také skrývá detaily, ale na úrovni implementace. |
Informace a údaje jsou odděleny od příslušných údajů. | Informace se skrývají uvnitř kapsle, aby se dosáhlo těsného přístupu. |
Zaměřuje se spíše na myšlenky než na události. | Cílem je chránit data před vnějším světem. |
Je implementován pomocí abstraktní třídy a rozhraní. | Je implementován pomocí chráněných, soukromých a modifikátorů přístupu k soukromému balíčku. |
souhrn
Zatímco oba jsou OOP pojmy týkající se skrývání dat, jsou zcela odlišné od sebe. 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 ovládáním přístupu k nim. Abstrakce se týká koncepce reprezentace pouze potřebných prvků tím, že se skryté nerelevantní detaily snižují složitost aplikace a tím se zvyšuje efektivita. Zapouzdření na druhou stranu odkazuje na koncept skrytí všech vnitřních mechaniky programu za účelem ochrany informací před nechtěným přístupem. Spojuje data a informace dohromady do jedné součásti tím, že omezuje přístup k ostatním komponentům.