Enkapsulacija proti abstrakciji
Enkapsulacija in abstrakcija sta dva različna, a sorodna pojma, ki ju najdemo v jezikih OOP (Object Oriented Programming). Enkapsulacija je koncept združevanja podatkov in vedenja v eno samo entiteto. Po drugi strani pa je abstrakcija postopek predstavitve, kako se entiteta obnaša/izgleda v nasprotju s tem, kako je implementirana.
Kaj je enkapsulacija?
Enkapsulacija je postopek zavijanja podatkov in operacij, ki z njimi delujejo, v eno samo entiteto. To v bistvu pomeni, da je treba za dostop do podatkov uporabiti določene vnaprej določene metode. Z drugimi besedami, enkapsulirani podatki niso neposredno dostopni. S tem je zagotovljena celovitost podatkov, saj uporabnik ne more neposredno dostopati do podatkov in jih spreminjati, kot bi želel. Podatkovne vrednosti bodo uporabniki pridobivali oziroma nastavljali samo z metodami, ki so uporabnikom javno dostopne. Te metode običajno zagotavljajo preverjanje veljavnosti podatkov, tako da je v polja dovoljeno vstaviti samo podatke v ustrezni obliki. Zato so prednosti enkapsulacije trikratne. S pomočjo enkapsulacije lahko programer naredi polja razreda samo za branje ali samo za pisanje. Drugič, razred ima lahko popoln nadzor nad tem, kaj je shranjeno v njegovih poljih. Končno uporabnikom razreda ni treba skrbeti, kako so njegovi podatki shranjeni. V Javi lahko programer vse spremenljivke primerkov razglasi za zasebne in zagotovi metode get in set (ki so javne) za dostop in spreminjanje zasebnih polj.
Kaj je abstrakcija?
Abstrakcija je postopek ločevanja podrobnosti predstavitve od podrobnosti izvedbe. To se naredi tako, da je razvijalec razbremenjen bolj zapletenih podrobnosti izvedbe. Namesto tega se lahko programer osredotoči na predstavitev ali vedenjske podrobnosti entitete. Preprosto povedano, abstrakcija se osredotoča na to, kako je mogoče določeno entiteto uporabiti, ne pa na to, kako se izvaja. Abstrakcija v bistvu skrije podrobnosti izvedbe, tako da tudi če se metodologija implementacije sčasoma spremeni, programerju ne bi bilo treba skrbeti, kako bo to vplivalo na njegov program. Sistem je mogoče abstrahirati v več plasteh ali nivojih. Na primer, plasti abstrakcije na nizki ravni bodo razkrile podrobnosti strojne opreme, medtem ko bo abstrakcija na visoki ravni razkrila le poslovno logiko entitete. Izraz abstrakcija se lahko uporablja tako za entiteto kot za proces, kar vodi v nekaj zmede. Kot proces abstrakcija pomeni izločanje bistvenih podrobnosti ob ignoriranju nebistvenih podrobnosti predmeta ali skupine predmetov, medtem ko kot entiteta abstrakcija pomeni model ali pogled na entiteto z le bistvenimi podrobnostmi. V Javi lahko programer uporabi ključno besedo abstract, da razglasi razred kot abstraktno entiteto, ki predstavlja bistvene opredelitvene značilnosti entitete resničnega sveta.
Kakšna je razlika med enkapsulacijo in abstrakcijo?
Čeprav sta enkapsulacija in abstrakcija zelo povezana pojma, ki ju najdemo v objektno usmerjenih programskih jezikih, imata ključne razlike. Abstrakcija je tehnika, ki nam pomaga prepoznati, kaj naj bo vidno in kaj skrito. Enkapsulacija je tehnika za pakiranje informacij tako, da postane vidno, kar bi moralo biti vidno, in skrije, kar bi moralo biti skrito. Z drugimi besedami, enkapsulacijo lahko identificiramo kot korak onkraj abstrakcije. Medtem ko abstrakcija reducira predmet resničnega sveta na njegove bistvene značilnosti, ki definirajo, enkapsulacija razširi to idejo z modeliranjem in povezovanjem te funkcionalnosti te entitete.