Abstrakcia a zapuzdrenie sú koncepty základného objektovo orientovaného programovania (OOP), ktoré vám umožňujú implementovať objekty v reálnom svete do programov a kódov. Aj keď obidve idú ruka v ruke, navzájom sa veľmi líšia. Kým každá metóda je zapuzdrenie, je to tiež abstrakcia. Jednoducho povedané, keď dáte dohromady rôzne veci, aby ste vytvorili entitu, v skutočnosti vytvoríte koncept - abstrakt. Aj keď sú obidve technicky neoddeliteľné, doslova nemajú nič spoločné. Je takmer pravda, že každé zapuzdrenie je abstrakciou, pretože obaja niečo skrývajú, majú však spravodlivý podiel na rozdieloch.
Abstrakcia je základný koncept OOP, ktorý sa zameriava iba na relevantné údaje o objekte a skrýva všetky irelevantné podrobnosti, ktoré môžu alebo nemusia byť pre všeobecné alebo špecializované správanie. Skryje základné informácie a zdôrazňuje základné body na zníženie zložitosti a zvýšenie efektívnosti. Abstrakcia je v podstate programovací nástroj na riadenie zložitosti. Abstrakcia sa zameriava skôr na myšlienky ako na udalosti. Skryje podrobnosti na úrovni návrhu tým, že používateľom poskytuje funkčnosť. Výsledný objekt možno tiež nazvať abstrakciou. Programátor sa ubezpečí, že pomenovaná entita bude obsahovať všetky podstatné aspekty a žiadny z irelevantných.
Zoberme si príklad abstrakcie v reálnom svete. Zoberme si prípad vozidla, ktorým je v tomto prípade vaše vozidlo. Mechanik sa pokúša opraviť vaše auto alebo povedzme konkrétnu časť vášho vozidla. Tu ste používateľom a nechcete sa dostať do špecifík svojho auta alebo do toho, ktorá časť sa skutočne porušila. O tieto veci sa skutočne nestaráte; len chcete, aby sa vaše vozidlo vrátilo do pôvodného stavu bez obáv z detailov. Takže ste vlastne povedali mechanikovi, čo chcete, oddelením implementačnej časti. Toto je abstrakcia. Zamerali ste sa na to najdôležitejšie, čo je oprava vášho automobilu, než na zameranie sa na špecifiká.
Zapuzdrenie je ďalšou koncepciou OOP, ktorá spája údaje a funkcie do jedného komponentu a obmedzuje prístup k niektorým komponentom. Je to jeden z hlavných základných konceptov OOP, ktorý obaluje údaje a informácie do jednej jednotky. Z technického hľadiska znamená zapuzdrenie skrývať atribúty, ktoré chránia premenné pred vonkajším prístupom, takže zmena v jednej časti aplikácie neovplyvní ostatné časti. Naopak, sprístupnením informácií riskujete zneužitie údajov. Poskytuje základnú integritu údajov tým, že ich chráni pred vonkajším svetom. Jednoducho povedané, skryje ďalšie podrobnosti z vonkajšieho sveta.
Ukážme si príklad myši Bluetooth. Potrebujete len vedieť o správaní zariadenia bez obáv z podrobností o implementácii, ako sú to, aký druh senzorov má myš, či je bezdrôtová alebo nie, atď. Každý jeden detail popisuje myš, ale bez ohľadu na podrobnosti je to iba myš. Na používanie myši potrebujete rozhranie, ktoré je v tomto prípade ukazovateľom myši. Toto je zapuzdrenie.
Aj keď sú oba základné pojmy súvisiace s OOP a sú technicky neoddeliteľné, stále majú svoje rozdiely v mnohých aspektoch.
abstrakcie | zapuzdrenie |
Zaoberá sa iba relevantnými podrobnosťami skrývaním irelevantných, aby sa znížila zložitosť, a tým sa zvýšila účinnosť. | Väzba údajov a informácií do jedného celku na ochranu údajov pred externými zdrojmi. |
Poukazuje na myšlienku skrývania údajov, ktorá sa nevyžaduje na účely prezentácie. | Skryje údaje a kód, aby sa obmedzil nežiaduci prístup. |
Zameriava sa skôr na to, ako na to. | Skryje vnútornú mechaniku toho, ako niečo robí. |
Skryje nepotrebné podrobnosti na úrovni návrhu. | Tiež skryje podrobnosti, ale na úrovni vykonávania. |
Informácie a údaje sú oddelené od príslušných údajov. | Informácie sú skryté vo vnútri kapsuly, aby sa umožnil priamy prístup. |
Zaoberá sa skôr nápadmi ako udalosťami. | Cieľom je chrániť údaje pred vonkajším svetom. |
Je implementovaný pomocou abstraktnej triedy a rozhrania. | Implementuje sa pomocou modifikátorov prístupu chráneného, súkromného a súkromného pre balík. |
Aj keď obidve koncepty OOP sa týkajú skrývania údajov, sú od seba celkom odlišné. Abstrakcia sa tiež týka skrývania ako zapuzdrenie, ale zatiaľ čo prvé skrýva zložitosť, druhá uchováva údaje, ktoré zapuzdruje, riadením prístupu k nim. Abstrakcia sa týka konceptu predstavovania iba nevyhnutných prvkov skrývaním irelevantných podrobností, aby sa znížila zložitosť aplikácie a tým sa zvýšila účinnosť. Na druhej strane zapuzdrenie sa týka konceptu skrytia všetkých vnútorných mechanizmov programu, aby sa chránila informácia pred nežiaducim prístupom. Väzuje údaje a informácie do jedného komponentu obmedzením prístupu k iným komponentom.