Apstrakcija i enkapsulacija

Anonim

Apstrakcija i enkapsulacija su oba osnovna orijentirana orijentirana programska (OOP) koncepti koji vam omogućuju primjenu predmeta u stvarnom svijetu u programe i kodove. Dok oboje idu ruku pod ruku, oni su vrlo različiti jedni od drugih. Dok je svaka metoda enkapsulacija, ona je također apstrakcija. Jednostavnim pojmovima, kada stavite različite stvari kako biste stvorili entitet, zapravo stvarate koncept - sažetak. Iako su oba tehnički nerazdvojni, imaju doslovce ništa zajedničko. Gotovo je istina da je svaka kapsulacija apstrakcija jer oboje skrivaju nešto, međutim, oni imaju svoj pravi udio razlika.

Što je apstrakcija?

Abstrakcija je osnovni OOP koncept koji se fokusira samo na relevantne podatke o objektu i skriva sve nevažne detalje koji mogu biti ili ne moraju biti za generičko ili specijalno ponašanje. Skriva pojedinosti o pozadini i naglašava bitne točke kako bi smanjila složenost i povećala učinkovitost. U osnovi, apstrakcija je programski alat za upravljanje složenosti. Abstrakcija se fokusira na ideje, a ne na događaje. Skriva detalje na razini dizanja pružajući funkcionalnost korisnicima. Dobiveni objekt može se nazvati i apstrakcijom. Programer osigurava da imenovani entitet bude uključen u sve bitne aspekte i nijedan od nerelevantnih.

Uzmimo primjer apstrakcije u stvarnom svijetu. Razmotrimo slučaj vozila, što je u ovom slučaju vaše vozilo. Mehaničar pokušava popraviti vaš automobil ili recimo određeni dio vašeg automobila. Ovdje ste korisnik i ne želite ući u specifičnosti vašeg automobila ili koji je dio zapravo prekinut. Ti zapravo ne brinete o tim stvarima; samo želite da vaše vozilo vrati u prvobitno stanje bez brige o detaljima. Dakle, zapravo ste rekli mehaničaru što želite odvajajući dio implementacije. Ovo je apstrakcija. Usredotočili ste se na najbitnije stvari, što je vaš automobil fiksiran, umjesto da se usredotočite na specifičnosti.

Što je kapsulacija?

Encapsulation je još jedan OOP koncept koji veže podatke i funkcije u jednu komponentu, a ograničava pristup nekim komponentama. To je jedan od glavnih temeljnih pojmova OOP-a koji obuhvaća podatke i informacije unutar jedne jedinice. U tehničkom smislu, kapsuliranje znači skrivanje atributa za zaštitu varijabli od vanjskog pristupa tako da promjene u jednom dijelu aplikacije neće utjecati na ostale dijelove. Naprotiv, ako informacije budu otvorene, rizik ćete zloupotrijebiti. Osigurava temeljni integritet podataka štiteći ga od vanjskog svijeta. Jednostavnim riječima, skriva dodatne detalje iz vanjskog svijeta.

Uzmimo primjer Bluetooth miša. Vi samo trebate znati o ponašanju uređaja bez brige o pojedinostima implementacije, kakav je senzor miš, bežični ili ne, itd. Svaki pojedinac opisuje miš, ali bez obzira na detalje, to je samo miš. Trebate samo sučelje za korištenje miša, što je u ovom slučaju pokazivač miša. Ovo je kapsulacija.

Razlika između apstrakcije i zatvaranja

Iako su oba temeljna pojma povezana s OOP-om i tehnički su nerazdvojni, oni još uvijek imaju razlike u mnogim aspektima.

  1. Razlike u "definiciji" apstrakcije i inkapsulacije - Apstrakcija je temeljni OOP koncept koji naglašava sve bitne aspekte objekta skrivajući nevažne detalje kako bi se povećala učinkovitost i uklonila složenost. S druge strane, enkapsulacija je mehanizam skrivanja podataka koji obuhvaća podatke i informacije u kapsuli kako bi ograničio pristup vanjskom svijetu.
  2. Razlike u "Funkcionalnosti" apstrakcije i enkapsulacije- Abstrakcija je mehanizam skrivanja podataka koji ističe samo osnovne značajke kako bi složeni programi bili jednostavniji, dok je enkapsuliranje, s druge strane, metoda vezivanja podataka i kodova u jedinstvenu cjelinu. Ideja je štititi detalje implementacije od vanjskog pristupa.
  3. Razlike u "Provedbi" apstrakcije i enkapsulacije - Apstrakcija se provodi pomoću apstraktne klase i sučelja, a inkapsulacija se provodi pomoću modifikatora pristupa. Za inkapsuliranje podataka koriste se pet vrsta modifikatora: privatni, javni, unutarnji, zaštićeni i zaštićeni interni.
  4. Razlike u "konceptu" apstrakcije i enkapsulacije- Ideja iza apstrakcije je da se usredotočite na ono što radije nego kako. Encapsulacija skriva unutarnju mehaniku kako. Na primjer, kada vozite automobil, znate točno što kočnica kočnice čini, ali možda ne znate cijeli mehanizam iza njega jer su podaci zatvoreni.
  5. Razlike u "primjeru" apstrakcije i inkapsulacije - Uzmimo primjer smartphonea. Znaš što čini, ali ne znaš kako radi ono što radi. Samo se brinete o zaslonskom zaslonu i tipkama tipkovnice umjesto da brinu o njegovom unutarnjem sklopu. Ovdje je smartphone apstraktan gdje su unutrašnji primjeri implementacije obuhvaćeni.

Abstrakcija nasuprot encapsulacije s tablicom usporedbe

Apstrakcija ovijanje
Ona se bavi samo relevantnim detaljima skrivajući nevažne one da bi se smanjila složenost time povećavajući učinkovitost. Povezuje podatke i informacije zajedno u jednu cjelinu za zaštitu podataka iz vanjskih izvora.
To se odnosi na ideju skrivanja podataka koji nisu potrebni za prezentacije. Skriva podatke i kôd kako bi se ograničio neželjeni pristup.
Usredotočuje se na ono što, a ne kako. Ona skriva unutarnju mehaniku kako nešto čini.
Skriva nepotrebne detalje na razini dizajna. Također skriva detalje, ali na razini implementacije.
Podaci i podaci odvajaju se od relevantnih podataka. Informacije su skrivene unutar kapsule za bliski pristup.
Ona se bavi idejama, a ne događajima. Ideja je zaštita podataka iz vanjskog svijeta.
Implementiran je pomoću apstraktne klase i sučelja. Implementirano je pomoću zaštićenih, privatnih i privatnih modifikatora pristupa paketima.

Sažetak

Iako oba su OOP koncepti vezani uz skrivanje podataka, one su prilično različite jedna od druge. Apstrakcija se također odnosi na skrivanje poput inkapsulacije, ali dok bivša skriva složenost, potonja zadržava podatke koje obuhvaća kontroliranjem pristupa njima. Apstrakcija se odnosi na pojam koji predstavlja samo potrebne značajke skrivajući nevažne detalje kako bi se smanjila složenost aplikacije i time povećala učinkovitost. Encapsulacija, s druge strane, odnosi se na koncept skrivanja cjelokupne unutarnje mehanike programa kako bi se zaštitila informacija od neželjenog pristupa. Povezuje podatke i informacije zajedno u jednu komponentu ograničavanjem pristupa drugim komponentama.