Inkapsulacija vs apstrakcija
Inkapsulacija i apstrakcija dva su različita, ali povezana koncepta koja se nalaze u OOP (objektno orijentiranom programiranju) jezicima. Inkapsulacija je koncept kombiniranja podataka i ponašanja zajedno kao jedinstvene cjeline. S druge strane, apstrakcija je proces predstavljanja kako se subjekt ponaša \ izgleda suprotno od načina na koji ga provodi.
Što je enkapsulacija?
Inkapsulacija je proces okupljanja podataka i operacija koje na njima djeluju u jednu cjelinu. To u suštini znači da se za pristup podacima trebaju koristiti određene unaprijed definirane metode. Drugim riječima, enkapsulirani podaci nisu izravno dostupni. Time se osigurava očuvanje integriteta podataka jer korisnik nema mogućnost izravnog pristupa i izmjene podataka onako kako želi. Korisnici će dobiti ili postaviti vrijednosti podataka samo putem javno dostupnih metoda. Ove metode obično omogućuju provjeru podataka tako da se u polja mogu umetnuti samo podaci u odgovarajućem formatu. Stoga su prednosti enkapsulacije trostruke. Pomoću Encapsulacije, programer može polja klase napraviti samo za čitanje ili za pisanje. Drugo, klasa može imati potpunu kontrolu nad onim što je pohranjeno u svojim poljima. Na kraju, korisnici klase ne trebaju se brinuti kako se njeni podaci pohranjuju. U Javi programer može sve varijable instancije proglasiti privatnim i osigurati metode dobivanja i postavljanja (koje su javne) za pristup i izmjenu privatnih polja.
Što je apstrakcija?
Apstrakcija je postupak odvajanja prezentacijskih detalja od detalja implementacije. To se postiže tako da se programer oslobodi složenijih detalja implementacije. Umjesto toga, programer se može usredotočiti na prezentaciju ili detalje u ponašanju entiteta. Jednostavno rečeno, apstrakcija se fokusira na način na koji se određeni entitet može koristiti, a ne kako se provodi. Apstrakcija zapravo skriva detalje implementacije, tako da čak i ako se metodologija implementacije vremenom mijenja, programer se ne bi trebao brinuti kako će to utjecati na njegov program. Sustav se može apstrahirati u više slojeva ili razina. Na primjer, slojevi apstrakcije niske razine otkrit će detalje o hardveru, dok će apstrakcija na visokoj razini otkriti samo poslovnu logiku entiteta. Izraz apstrakcija može se koristiti za označavanje i entiteta i procesa, što dovodi do neke zbrke. Kao proces, apstrakcija podrazumijeva izvlačenje bitnih detalja uz zanemarivanje nebitnih detalja o stavci ili grupi predmeta, dok kao entitet, apstrakcija znači model ili prikaz cjeline sa samo bitnim detaljima. U Javi programer može upotrijebiti ključnu riječ sažetak da deklarira klasu kao apstraktnu cjelinu, što predstavlja bitna definirajuća svojstva stvarnog svjetskog entiteta.
Koja je razlika između enkapsulacije i apstrakcije?
Iako su enkapsulacija i apstrakcija izrazito povezani pojmovi koji se nalaze u objektno programskim jezicima, oni imaju ključne razlike. Apstrakcija je tehnika koja nam pomaže prepoznati što bi trebalo biti vidljivo, a što treba sakriti. Inkapsulacija je tehnika za pakiranje informacija tako da čini vidljivim ono što bi trebalo biti vidljivo i skriva ono što bi trebalo biti skriveno. Drugim riječima, kapsulacija se može prepoznati kao korak izvan apstrakcije. Dok apstrakcija smanjuje predmet stvarnog svijeta na njegove bitne definirajuće karakteristike, enkapsulacija proširuje ovu ideju modeliranjem i povezivanjem ove funkcionalnosti tog entiteta.