Az absztrakció és a beágyazás egyaránt olyan alapvető objektum-orientált programozási (OOP) fogalmak, amelyek lehetővé teszik a valós objektumok programba és kódba történő beépítését. Bár mindkettő kéz a kézben jár, egymástól nagyon különböznek. Bár minden módszer kapszulázás, ez is absztrakció. Egyszerűen fogalmazva, amikor különféle dolgokat egyesít egy entitás létrehozására, akkor valójában egy fogalmat - egy elvont - hoz létre. Noha mindkettő technikailag elválaszthatatlan, szó szerint nincs semmi közös. Szinte igaz, hogy minden beágyazás absztrakció, mivel mindketten elrejtenek valamit, ám vannak különbségeik a különbségekkel.
Az absztrakció egy olyan alapvető OOP-koncepció, amely csak egy objektum releváns adataira összpontosít, és elrejti az összes irreleváns részletet, amelyek az általános vagy speciális magatartásra vonatkozhatnak. Elrejti a háttér részleteit, és hangsúlyozza a lényeges pontokat a komplexitás csökkentése és a hatékonyság növelése érdekében. Alapvetően az absztrakció egy programozó eszköz a bonyolultság kezelésére. Az absztrakció inkább az ötletekre, nem pedig az eseményekre koncentrál. Rejti a részleteket a tervezési szinten azzal, hogy funkcionalitást biztosít a felhasználók számára. A kapott objektum absztrakciónak is nevezhető. A programozó gondoskodik arról, hogy a megnevezett entitás tartalmazza az összes lényeges szempontot, és a lényegtelen elemek egyikét sem.
Vegyünk egy valós példát az absztrakcióról. Fontoljuk meg egy jármű esetét, amely ebben az esetben az Ön járműve. A szerelő megpróbálja javítani az autóját, vagy mondjuk, hogy az autó egy bizonyos része. Itt vagy a felhasználó, és nem akarja megismerkedni autója sajátosságaival, vagy azzal, hogy mi az alkatrész valóban megtört. Nem igazán érdekel ezek a dolgok; csak azt akarja, hogy járműve visszatérjen eredeti állapotába, anélkül, hogy aggódna a részletek miatt. Tehát valóban elmondta a szerelőnek, hogy mit akar, a végrehajtási rész szétválasztásával. Ez az absztrakció. A legfontosabb dologra összpontosított, amely az autó javítása, ahelyett, hogy a specifikációkra összpontosítana.
A beágyazás egy újabb OOP-koncepció, amely az adatokat és a funkciókat egyetlen összetevőhöz köti, miközben korlátozza az egyes összetevőkhöz való hozzáférést. Ez az OOP egyik fő alapelve, amely az adatokat és információkat egyetlen egységbe csomagolja. Technikai értelemben a beágyazás azt jelenti, hogy a pajzsváltozókhoz tartozó attribútumokat elrejtik a külső hozzáféréstől, hogy az alkalmazás egyik részében bekövetkező változás ne befolyásolja a többi részét. Éppen ellenkezőleg: ha az információt nyitottabbá teszi, az adatokkal való visszaélés kockázata áll fenn. Alapvető integritást biztosít az adatok számára, védve azokat a külvilágtól. Egyszerűen fogalmazva elrejti a külvilág extra részleteit.
Vegyünk egy példát egy Bluetooth egérre. Csak az eszköz viselkedéséről kell tudnia, anélkül, hogy aggódnia kellene a végrehajtás részletei miatt, például az, hogy milyen érzékelők vannak az egérnél, vezeték nélküli vagy sem, stb. Minden egyes részlet leírja az egeret, de a részletektől függetlenül ez csak egy egér. Szüksége van egy felületre az egér használatához, amely ebben az esetben az egérmutató. Ez a kapszulázás.
Noha mindkettő az OOP-hoz kapcsolódó alapvető fogalmak és technikailag elválaszthatatlanok, sok szempontból továbbra is vannak különbségeik.
Absztrakció | Egységbezárás |
Csak a releváns részletekkel foglalkozik, és elrejti a irrelevánsokat, hogy csökkentsék a bonyolultságot, ezáltal növelve a hatékonyságot. | Az adatokat és információkat egyetlen entitásba köti, hogy megvédje az adatokat a külső forrásoktól. |
Arra utal, hogy elrejteni kell az adatokat, amelyek nem szükségesek a bemutatáshoz. | Elrejti az adatokat és a kódot a nem kívánt hozzáférés korlátozása érdekében. |
Nem az, hanem mire összpontosít. | Elrejti a belső mechanikáját, hogy hogyan csinál valamit. |
Rejti a felesleges részleteket a tervezési szinten. | Elrejti a részleteket is, de a megvalósítás szintjén. |
Az információkat és az adatokat elkülönítik a releváns adatoktól. | Az információk a kapszula belsejében vannak elrejtve a szoros hozzáférés érdekében. |
Az események helyett ötletekkel foglalkozik. | Az ötlet az adatok védelme a külvilágtól. |
Ez elvont osztály és felület használatával valósul meg. | Védett, privát és csomag-magán hozzáférési módosítókkal valósítja meg. |
Noha mindkettő az OO-fogalom az adatok elrejtésével kapcsolatos, jóval különböznek egymástól. Az absztrakció ugyanúgy rejtőzik, mint a kapszulázás, de az előbbi bonyolultságot rejti el, az utóbbi megtartja az általad kapszulázott adatokat azáltal, hogy ellenőrzi a hozzájuk való hozzáférést. Az absztrakció arra a fogalomra utal, amely szerint csak a szükséges tulajdonságokat reprezentálja, azáltal, hogy elrejti a irreleváns részleteket, hogy csökkentsék az alkalmazás bonyolultságát, ezáltal növelve a hatékonyságot. A beágyazás viszont arra utal, hogy elrejti a program összes belső mechanikáját, hogy megvédje az információkat a nem kívánt hozzáféréstől. Összekapcsolja az adatokat és az információkat egyetlen összetevőbe, korlátozva a hozzáférést más összetevőkhöz.