Zapouzdření vs abstrakce
Zapouzdření a abstrakce jsou dva různé, ale související pojmy, které se nacházejí v jazycích OOP (Object Oriented Programming). Zapouzdření je koncept kombinující data a chování společně jako jeden celek. Na druhé straně Abstrakce je proces prezentace toho, jak se entita chová \ vypadá na rozdíl od toho, jak je implementována.
Co je zapouzdření?
Zapouzdření je proces zabalení dat a operace, které s nimi pracují, do jediné entity. To v podstatě znamená, že pro přístup k datům by měly být použity určité předdefinované metody. Jinými slovy, zapouzdřená data nejsou přímo přístupná. Tím je zajištěno, že je zachována integrita dat, protože uživatel nemůže přímo přistupovat k datům a upravovat je, jak si přeje. Uživatelé získají nebo nastaví hodnoty dat pouze pomocí metod, které jsou uživatelům veřejně dostupné. Tyto metody obvykle poskytují ověření dat, takže do polí lze vkládat pouze data ve vhodném formátu. Výhody zapouzdření jsou tedy trojnásobné. Prostřednictvím zapouzdření může programátor vytvářet pole třídy pouze pro čtení nebo pouze pro zápis. Za druhé, třída může mít úplnou kontrolu nad tím, co je uloženo v jejích polích. Nakonec se uživatelé třídy nemusí obávat, jak jsou její data ukládána. V Java může programátor deklarovat všechny proměnné instance jako soukromé a poskytnout metody get a set (které jsou veřejné) pro přístup a úpravu soukromých polí.
Co je Abstrakce?
Abstrakce je proces oddělení podrobností prezentace od podrobností implementace. To se provádí tak, aby vývojář byl zbaven složitějších implementačních podrobností. Místo toho se programátor může zaměřit na prezentaci nebo podrobnosti chování entity. Zjednodušeně řečeno, abstrakce se zaměřuje spíše na to, jak lze určitou entitu použít, než na to, jak je implementována. Abstrakce v podstatě skrývá detaily implementace, takže i kdyby se metodologie implementace časem změnila, programátor by se nemusel bát, jak by to ovlivnilo jeho program. Systém může být odebrán v několika vrstvách nebo úrovních. Například vrstvy abstrakce na nízké úrovni odhalí detaily hardwaru, zatímco abstrakce na vysoké úrovni odhalí pouze obchodní logiku entity. Termín abstrakce může být použit k označení jak entity, tak procesu, což vede k určitému zmatku. Abstrakce jako proces znamená extrahování základních detailů a ignorování nepodstatných detailů položky nebo skupiny položek, zatímco jako entita znamená abstrakce model nebo pohled na entitu s pouze základními detaily. V Javě může programátor použít abstraktní klíčové slovo k deklaraci třídy jako abstraktní entity, která představuje základní definující charakterizuje entitu reálného světa.
Jaký je rozdíl mezi zapouzdřením a abstrakcí??
Přestože zapouzdření a abstrakce jsou vysoce související koncepty nalezené v objektově orientovaných programovacích jazycích, mají klíčové rozdíly. Abstrakce je technika, která nám pomáhá určit, co by mělo být vidět a co by mělo být skryto. Zapouzdření je technika balení informací tak, že zviditelňuje, co by mělo být viditelné, a skrývá to, co by mělo být skryto. Jinými slovy, zapouzdření lze identifikovat jako jeden krok za abstrakcí. Zatímco abstrakce redukuje objekt reálného světa na jeho základní definující vlastnosti, zapouzdření rozšiřuje tuto myšlenku modelováním a propojením této funkce této entity.