Kapselointi vs abstraktio
Kapselointi ja abstraktio ovat kaksi erilaista, mutta toisiinsa liittyvää käsitettä, jotka löytyvät OOP-kielistä (Object Oriented Programming). Kapselointi on käsite tietojen ja käyttäytymisen yhdistämisestä yhdeksi kokonaisuudeksi. Toisa alta abstraktio on prosessi, jossa esitellään, miltä kokonaisuus käyttäytyy\näyttää, toisin kuin miten se on toteutettu.
Mikä on kapselointi?
Kapselointi on prosessi, jossa tiedot ja niitä koskevat toiminnot kääritään yhdeksi kokonaisuudeksi. Tämä tarkoittaa pohjimmiltaan sitä, että tietoihin pääsemiseksi tulee käyttää tiettyjä enn alta määritettyjä menetelmiä. Toisin sanoen kapseloitu tieto ei ole suoraan saatavilla. Näin varmistetaan, että tietojen eheys säilyy, koska käyttäjä ei voi suoraan käyttää ja muokata tietoja haluamallaan tavalla. Käyttäjät saavat tai asettavat data-arvot vain menetelmillä, jotka ovat julkisesti käyttäjien saatavilla. Nämä menetelmät tarjoavat yleensä tietojen validoinnin, jotta kenttiin voidaan lisätä vain tiedot sopivassa muodossa. Siksi kapseloinnin edut ovat kolminkertaiset. Kapseloinnin avulla ohjelmoija voi tehdä luokan kentät vain luku - tai kirjoitusmuotoon. Toiseksi, luokka voi hallita täysin sitä, mitä sen kenttiin on tallennettu. Lopuksi, luokan käyttäjien ei tarvitse huolehtia siitä, kuinka sen tiedot tallennetaan. Javassa ohjelmoija voi julistaa kaikki ilmentymämuuttujat yksityisiksi ja tarjota get and set -menetelmiä (jotka ovat julkisia) yksityisten kenttien käyttämiseksi ja muokkaamiseksi.
Mitä on abstraktio?
Abstraktio on prosessi, jossa erotetaan esityksen yksityiskohdat toteutus yksityiskohdista. Tämä tehdään niin, että kehittäjä vapautuu monimutkaisemmista toteutuksen yksityiskohdista. Sen sijaan ohjelmoija voi keskittyä kokonaisuuden esitykseen tai käyttäytymisen yksityiskohtiin. Yksinkertaisesti sanottuna abstraktio keskittyy siihen, miten tiettyä kokonaisuutta voidaan käyttää, eikä siihen, miten se toteutetaan. Abstraktio piilottaa käytännössä toteutuksen yksityiskohdat, joten vaikka toteutusmetodologia muuttuisi ajan myötä, ohjelmoijan ei tarvitsisi huolehtia, miten se vaikuttaa hänen ohjelmaansa. Järjestelmä voidaan abstraktoida useilla kerroksilla tai tasoilla. Esimerkiksi matalan tason abstraktiokerrokset paljastavat laitteiston yksityiskohdat, kun taas korkean tason abstraktio paljastaa vain kokonaisuuden liiketoimintalogiikan. Termiä abstraktio voidaan käyttää viittaamaan sekä kokonaisuuteen että prosessiin, ja tämä johtaa johonkin sekaannukseen. Prosessina abstraktio tarkoittaa olennaisten yksityiskohtien poimimista jättäen huomioimatta esineen tai esineryhmän epäolennaiset yksityiskohdat, kun taas kokonaisuutena abstraktio tarkoittaa mallia tai näkymää kokonaisuudesta, jossa on vain olennaiset yksityiskohdat. Javassa ohjelmoija voi käyttää avainsanaa abstract julistaakseen luokan abstraktiksi kokonaisuudeksi, joka edustaa reaalimaailman entiteetin olennaisia määrittelyominaisuuksia.
Mitä eroa on kapseloinnin ja abstraktion välillä?
Vaikka kapselointi ja abstraktio ovat hyvin samank altaisia käsitteitä, joita löytyy olioohjelmointikielistä, niillä on keskeisiä eroja. Abstraktio on tekniikka, joka auttaa meitä tunnistamaan, mikä pitäisi olla näkyvissä ja mikä piilossa. Kapselointi on tekniikkaa, jolla tieto pakataan siten, että se tekee näkyväksi sen, minkä pitäisi olla näkyvää, ja piilottaa sen, mikä pitäisi piilottaa. Toisin sanoen kapselointi voidaan tunnistaa askeleeksi abstraktion takana. Abstraktio pelkistää reaalimaailman objektin sen oleellisiin määrittäviin ominaisuuksiin, mutta kapselointi laajentaa tätä ideaa mallintamalla ja yhdistämällä tämän entiteetin tämän toimivuuden.