Razlika med abstrakcijo in enkapsulacijo

Abstrakcija in enkapsulacija sta osnovna pojma objektno usmerjeno programiranje (OOP), ki vam omogočata, da v programe in kode implementirate predmete iz resničnega sveta. Medtem ko gresta oba z roko v roki, se med seboj zelo razlikujeta. Medtem ko je vsaka metoda enkapsulacija, je to tudi abstrakcija. Preprosto povedano, ko sestavite različne stvari, da ustvarite entiteto, dejansko ustvarite koncept - povzetek. Čeprav sta oba tehnično nerazdružljiva, nista dobesedno nič skupnega. Skoraj res je, da je vsaka kapsulacija abstrakcija, ker oba nekaj skrivata, vendar imata svoj pravičen delež razlik.

Kaj je abstrakcija?

Abstrakcija je osnovni koncept OOP, ki se osredotoča na samo ustrezne podatke predmeta in skriva vse nepomembne podrobnosti, ki so lahko ali ne za splošno ali specializirano vedenje. Skriva podrobnosti o ozadju in poudarja bistvene točke za zmanjšanje zahtevnosti in povečanje učinkovitosti. V bistvu je abstrakcija programsko orodje za upravljanje kompleksnosti. Abstrakcija se osredotoča na ideje in ne na dogodke. Skriva podrobnosti na ravni zasnove, tako da uporabnikom zagotavlja funkcionalnost. Nastali objekt lahko imenujemo tudi abstrakcija. Programer zagotavlja, da bo imenovani subjekt vključil vse bistvene vidike in nobenega od nepomembnih.

Vzemimo primer resničnega primera abstrakcije. Razmislimo o primeru vozila, ki je v tem primeru vaše vozilo. Mehanik poskuša popraviti vaš avto ali recimo določen del vašega avtomobila. Tu ste uporabnik in nočete vnesti se v podrobnosti vašega avtomobila ali na kakšen del. Te stvari dejansko ne zanimajo; preprosto želite, da se vaše vozilo vrne v prvotnem stanju, ne da bi vas skrbelo za podrobnosti. Torej, mehaniku ste dejansko povedali, kaj želite, tako da ločite izvedbeni del. To je abstrakcija. Osredotočili ste se na najpomembnejše, kar je popravljanje vašega avtomobila, namesto da bi se osredotočali na posebnosti.

Kaj je kapsulacija?

Inkapsulacija je še en koncept OOP, ki povezuje podatke in funkcije v eno komponento, hkrati pa omeji dostop do nekaterih komponent. To je eden glavnih temeljnih konceptov OOP, ki podatke in informacije zajema pod eno enoto. Tehnično gledano enkapsulacija pomeni skrivanje atributov za zaščito spremenljivk pred zunanjim dostopom, tako da sprememba v enem delu aplikacije ne bo vplivala na druge dele. Nasprotno, če naredite podatke bolj odprte, tvegate zlorabo podatkov. Podatkom zagotavlja osnovno celovitost tako, da jih ščiti pred zunanjim svetom. Preprosto povedano, skriva dodatne podrobnosti iz zunanjega sveta.

Vzemimo primer Bluetooth miške. Vedeti morate le o obnašanju naprave, ne da bi skrbeli za podrobnosti o izvedbi, na primer, katere senzorje ima miška, ali je brezžična ali ne itd. Vsaka posamezna podrobnost opisuje miško, ne glede na podrobnosti pa je le miška. Za uporabo miške potrebujete samo vmesnik, ki je v tem primeru kazalec miške. To je kapsulacija.

Razlika med abstrakcijo in enkapsulacijo

Čeprav sta oba temeljna pojma, povezana z OOP, in sta tehnično nerazdružljiva, se v številnih vidikih še vedno razlikujeta.

  1. Razlike v "definiciji" abstrakcije in enkapsulacije - Abstrakcija je temeljni koncept OOP, ki poudarja vse bistvene vidike predmeta s skrivanjem nepomembnih podrobnosti za povečanje učinkovitosti in odpravo zapletenosti. Inkapsulacija je na drugi strani mehanizem za skrivanje podatkov, ki podatke in informacije ovije v kapsulo, da omeji dostop iz zunanjega sveta.
  2. Razlike v "funkcionalnosti" abstrakcije in enkapsulacije- Abstrakcija je mehanizem za skrivanje podatkov, ki poudarja samo bistvene značilnosti za poenostavitev zapletenih programov, na drugi strani pa je enkapsulacija metoda vezave podatkov in kod v eno celoto. Ideja je, da se podrobnosti o izvajanju zaščitijo pred zunanjim dostopom.
  3. Razlike v "izvajanju" abstrakcije in enkapsulacije - Abstrakcija se izvaja s pomočjo abstraktnega razreda in vmesnika, medtem ko se enkapsulacija izvaja s pomočjo modifikatorjev dostopa. Za zapiranje podatkov se uporablja pet vrst modifikatorjev: zasebni, javni, notranji, zaščiteni in notranji zaščiteni.
  4. Razlike v "konceptu" abstrakcije in enkapsulacije- Ideja abstrakcije je osredotočiti se na to, kaj namesto na kako. Inkapsulacija skriva notranjo mehaniko kako. Na primer, ko vozite avto, natančno veste, kaj počne stopalka zavore, vendar morda ne poznate celotnega mehanizma za njim, ker so podatki zajeti.
  5. Razlike v "Primeru" abstrakcije in enkapsulacije - Vzemimo primer pametnega telefona. Veste, kaj počne, vendar morda ne veste, kako to počne. Skrbi vas le za zaslonski zaslon in gumbe tipkovnice, ne pa za skrb za notranjo vezje. Tukaj je pametni telefon izvleček, kjer so vgrajene podrobnosti o notranji izvedbi.

Abstrakcija proti kapsulaciji s primerjalno tabelo

Abstrakcija Kapsulacija
Obravnava le ustrezne podrobnosti tako, da skrije nepomembne, da zmanjša kompleksnost in s tem poveča učinkovitost. Podatke in informacije veže v eno celoto, da podatke zaščiti pred zunanjimi viri.
Nanaša se na idejo o skrivanju podatkov, ki za predstavitev niso potrebni. Skriva podatke in kodo, da omeji neželen dostop.
Osredotoča se na to, kaj namesto kako. Skriva notranjo mehaniko, kako nekaj naredi.
Skriva nepotrebne podrobnosti na ravni oblikovanja. Skriva tudi podrobnosti, vendar na ravni izvajanja.
Informacije in podatki so ločeni od ustreznih podatkov. Informacije so skrite znotraj kapsule za tesnejši dostop.
Ukvarja se z idejami in ne z dogodki. Ideja je zaščititi podatke pred zunanjim svetom.
Izvaja se z uporabo abstraktnega razreda in vmesnika. Izvaja se z zaščitenimi, zasebnimi in paketno-zasebnimi modifikatorji dostopa.

Povzetek

Medtem ko sta oba koncepta OOP, povezana s skrivanjem podatkov, se med seboj precej razlikujeta. Abstrakcija se nanaša tudi na skrivanje podobne kapsulacije, vendar čeprav prvi skriva kompleksnost, drugi hrani podatke, ki jih zajema, z nadzorom dostopa do njih. Abstrakcija se nanaša na koncept predstavljanja samo potrebnih lastnosti s skrivanjem nepomembnih podrobnosti, da se zmanjša kompleksnost aplikacije in s tem poveča učinkovitost. Po drugi strani pa se enkapsulacija nanaša na koncept skrivanja vseh notranjih mehanizmov programa, da se informacije zaščitijo pred neželenim dostopom. Podatke in informacije veže v eno komponento, tako da omeji dostop do drugih komponent.