Razlika između apstrakcije i enkapsulacije

Apstrakcija i enkapsulacija osnovni su objektno orijentirani programiranje (OOP), koji vam omogućuju implementaciju objekata iz stvarnog svijeta u programe i kodove. Dok oboje idu ruku pod ruku, oni se međusobno jako razlikuju. Iako je svaka metoda inkapsulacija, to je i apstrakcija. Jednostavno rečeno, kada sastavljate različite stvari da biste stvorili entitet, zapravo stvarate koncept - sažetak. Iako su oboje tehnički nerazdvojni, oni nemaju doslovno ništa zajedničko. Gotovo je istina da je svaka enkapsulacija apstrakcija, jer obojica nešto kriju, međutim, oni imaju pravičan udio razlika.

Što je apstrakcija?

Apstrakcija je osnovni OOP koncept koji se usredotočuje na samo relevantne podatke o objektu i skriva sve nebitne detalje koji mogu biti, a ne moraju biti generički ili specijalizirani. Sakriva pozadinske detalje i naglašava ključne točke za smanjenje složenosti i povećanje učinkovitosti. U osnovi, apstrakcija je programski alat za upravljanje složenošću. Apstrakcija se fokusira na ideje, a ne na događaje. Sakriva detalje na razini dizajna pružajući korisnicima funkcionalnost. Rezultirajući objekt također se može nazvati apstrakcijom. Programer osigurava da će imenovani entitet imati sve bitne aspekte i nijedan nebitan.

Uzmimo primjer stvarnog svijeta apstrakcije. 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. Evo, vi ste korisnik i ne želite ulaziti u detalje vašeg automobila ili onog dijela koji se zapravo pokvario. Te stvari zapravo ne zanimaju; samo želite da se vaše vozilo vrati u prvobitnom stanju bez brige o detaljima. Dakle, zapravo ste rekli mehaničaru što želite razdvajajući dio za implementaciju. Ovo je apstrakcija. Usredotočili ste se na ono najvažnije, a to je popravljanje vašeg automobila, umjesto da se usredotočite na specifičnosti.

Što je enkapsulacija?

Inkapsulacija je još jedan OOP koncept koji povezuje podatke i funkcije u jednu komponentu, ograničavajući pristup nekim komponentama. To je jedan od glavnih temeljnih koncepata OOP-a koji podatke i informacije spaja u jednu cjelinu. Tehnički gledano, enkapsulacija znači skrivanje atributa kako bi se štitile varijable od vanjskog pristupa kako promjena u jednom dijelu aplikacije neće utjecati na ostale dijelove. Naprotiv, čineći podatke otvorenijim riskirate zlouporabu podataka. Daje osnovni integritet podacima štiteći ih od vanjskog svijeta. Jednostavno rečeno, ona skriva dodatne detalje iz vanjskog svijeta.

Uzmimo primjer Bluetooth miša. Morate znati samo o ponašanju uređaja bez brige o detaljima implementacije poput vrsta senzora koji ima miš, je li bežični ili ne itd. Svaki pojedini detalj opisuje miš, ali bez obzira na pojedinosti, to je samo miš. Trebate samo sučelje za upotrebu miša, što je u ovom slučaju pokazivač miša. Ovo je enkapsulacija.

Razlika između apstrakcije i enkapsulacije

Iako su oba temeljna koncepta povezana s OOP-om i tehnički su nerazdvojna, još uvijek imaju svoje razlike u mnogim aspektima.

  1. Razlike u "definiciji" apstrakcije i enkapsulacije - Apstrakcija je temeljni OOP koncept koji naglašava sve bitne aspekte objekta skrivanjem nevažnih detalja za povećanje učinkovitosti i eliminiranje složenosti. Inkapsulacija, s druge strane, je mehanizam za skrivanje podataka koji omotava podatke i informacije u kapsulu radi ograničavanja pristupa iz vanjskog svijeta.
  2. Razlike u "Funkcionalnosti" apstrakcije i enkapsulacije- Apstrakcija je mehanizam za skrivanje podataka koji ističe samo bitne značajke za pojednostavljenje složenih programa, dok je s druge strane enkapsulacija metoda povezivanja podataka i kodova u jedinicu. Ideja je zaštititi detalje implementacije od vanjskog pristupa.
  3. Razlike u "implementaciji" apstrakcije i enkapsulacije - Apstrakcija se provodi pomoću apstraktne klase i sučelja, dok se enkapsulacija provodi pomoću modifikatora pristupa. Pet vrsta modifikatora koristi se za kapsuliranje podataka: privatni, javni, interni, zaštićeni i unutarnji zaštićeni.
  4. Razlike u "konceptu" apstrakcije i enkapsulacije- Ideja apstrakcije je usredotočiti se na ono što radije nego na kako. Inkapsulacija skriva unutarnju mehaniku kako. Na primjer, kada vozite automobil, točno znate što radi papučica kočnice, ali možda ne znate cijeli mehanizam koji stoji iza nje jer su podaci u kapsuli.
  5. Razlike u primjeru apstrakcije i enkapsulacije - Uzmimo primjer pametnog telefona. Znate što čini, ali možda ne znate kako to čini. Brine vas samo briga o zaslonu i gumbima tipkovnice, a ne brinete se o njegovom unutarnjem krugu. Ovdje je pametni telefon apstraktno gdje su ubačeni unutrašnji detalji implementacije.

Apstrakcija vs inkapsulacija sa usporednom tablicom

Apstrakcija ovijanje
Bavi se samo relevantnim detaljima sakrivanjem nebitnih da bi se smanjila složenost i povećala učinkovitost. Povezuje podatke i informacije zajedno u jedan entitet radi zaštite podataka od vanjskih izvora.
Odnosi se na ideju o skrivanju podataka koja nije potrebna u svrhu prezentacije. Sakriva podatke i kôd da ograniči neželjeni pristup.
Usredotočuje se na ono što radije nego na kako. Skriva unutarnju mehaniku kako nešto radi.
Skriva nepotrebne detalje na razini dizajna. Također sakriva detalje, ali na razini implementacije.
Informacije i podaci odvojeni su od relevantnih podataka. Informacije su skrivene unutar kapsule za bliski pristup.
Bavi se idejama, a ne događajima. Ideja je zaštititi podatke iz vanjskog svijeta.
Provodi se pomoću apstraktne klase i sučelja. Provodi se pomoću zaštićenih, privatnih i paketno-privatnih modifikatora pristupa.

Sažetak

Iako su oba koncepta OOP vezana za skrivanje podataka, oni se međusobno prilično razlikuju. Apstrakcija se također odnosi na skrivanje poput enkapsulacije, ali iako prvo sakriva složenost, ono drugo čuva podatke koje enkapsulira kontrolirajući pristup njima. Apstrakcija se odnosi na koncept predstavljanja samo neophodnih značajki sakrivanjem nebitnih detalja kako bi se smanjila složenost aplikacije i na taj način povećala učinkovitost. Inkapsulacija se, s druge strane, odnosi na koncept skrivanja svih unutarnjih mehanika programa kako bi se zaštitile informacije od neželjenog pristupa. Povezuje podatke i informacije u jednu komponentu ograničavajući pristup drugim komponentama.