Zapuzdrenie verzus abstrakcia
Zapuzdrenie a abstrakcia sú dva rôzne, ale príbuzné pojmy, ktoré sa nachádzajú v jazykoch OOP (Object Oriented Programming). Zapuzdrenie je koncept kombinovania údajov a správania spolu ako jeden celok. Na druhej strane Abstrakcia je proces prezentácie toho, ako sa entita správa \ na rozdiel od toho, ako je implementovaná.
Čo je zapuzdrenie?
Zapuzdrenie je proces zabalenia údajov a operácií, ktoré s nimi pracujú, do jednej entity. To v podstate znamená, že na prístup k údajom by sa mali používať určité preddefinované metódy. Inými slovami, zapuzdrené údaje nie sú priamo prístupné. Tým sa zabezpečí zachovanie integrity údajov, pretože používateľ nemá priamy prístup k údajom a ich úpravu podľa vlastného uváženia. Používatelia získajú alebo nastavia hodnoty údajov iba pomocou metód, ktoré sú verejne dostupné pre používateľov. Tieto metódy zvyčajne poskytujú overenie údajov, takže do polí je možné vkladať iba údaje v príslušnom formáte. Výhody zapuzdrenia sú preto trojnásobné. Prostredníctvom zapuzdrenia môže programátor robiť polia triedy iba na čítanie alebo iba na zápis. Po druhé, trieda môže mať úplnú kontrolu nad tým, čo je uložené v jej poliach. Nakoniec sa používatelia triedy nemusia obávať, ako sa ukladajú jej údaje. V Java môže programátor deklarovať všetky premenné inštancie ako súkromné a poskytnúť metódy get a set (ktoré sú verejné) na prístup a úpravu súkromných polí..
Čo je to abstrakcia?
Abstrakcia je proces oddelenia podrobností o prezentácii od podrobností o implementácii. Deje sa tak tak, aby vývojár nebol zbavený komplexnejších podrobností o implementácii. Namiesto toho sa programátor môže zamerať na prezentáciu alebo podrobnosti o správaní entity. Jednoducho povedané, abstrakcia sa zameriava skôr na to, ako sa dá určitá entita použiť, ako na to, ako sa implementuje. Abstrakcia v podstate zakrýva podrobnosti o implementácii, takže aj keby sa metodológia vykonávania časom zmenila, programátor by sa nemusel báť, ako by to ovplyvnilo jeho program. Systém môže byť odobratý vo viacerých vrstvách alebo úrovniach. Napríklad vrstvy abstrakcie na nízkej úrovni odhalia detaily hardvéru, zatiaľ čo abstrakcie na vysokej úrovni odhalia iba obchodnú logiku entity. Termín abstrakcia sa môže používať na označenie entity aj procesu, čo vedie k určitému zmätku. Abstrakcia ako proces znamená extrahovanie základných detailov, pričom ignoruje nepodstatné podrobnosti o položke alebo skupine položiek, zatiaľ čo ako entita znamená abstrakcia model alebo pohľad na entitu s iba základnými podrobnosťami. V jazyku Java môže programátor použiť kľúčové slovo abstrakt na deklarovanie triedy ako abstraktnej entity, ktorá predstavuje základné definičné charakteristiky entity v reálnom svete.
Aký je rozdiel medzi zapuzdrením a abstrakciou?
Aj keď zapuzdrenie a abstrakcia sú veľmi podobné koncepty, ktoré sa nachádzajú v objektovo orientovaných programovacích jazykoch, majú kľúčové rozdiely. Abstrakcia je technika, ktorá nám pomáha zistiť, čo by malo byť viditeľné a čo by malo byť skryté. Zapuzdrenie je technika balenia informácií tak, že zviditeľňuje to, čo by malo byť viditeľné, a skryje to, čo by malo byť skryté. Inými slovami, zapuzdrenie možno identifikovať ako jeden krok za abstrakciou. Kým abstrakcia redukuje objekt reálneho sveta na jeho základné definujúce charakteristiky, zapuzdrenie rozširuje túto myšlienku modelovaním a prepojením tejto funkcie tejto entity.