kapseldamine vs abstraktsioon
Kapseldamine ja abstraktsioon on kaks erinevat, kuid omavahel seotud mõistet, mida leidub OOP (Object Oriented Programming) keeltes. Kapseldamine on andmete ja käitumise ühendamise kontseptsioon üheks tervikuks. Teisest küljest on abstraktsioon protsess, mille käigus näidatakse, kuidas üksus käitub\välja näeb, mitte sellele, kuidas seda rakendatakse.
Mis on kapseldamine?
Kapseldamine on protsess, mille käigus koondatakse andmed ja nendega toimivad toimingud ühte üksusesse. See tähendab sisuliselt seda, et andmetele juurdepääsuks tuleks kasutada teatud eelnev alt määratletud meetodeid. Teisisõnu ei ole kapseldatud andmetele otse juurdepääs. See tagab andmete terviklikkuse säilimise, kuna kasutajal ei ole võimalik andmetele otse juurde pääseda ja neid vastav alt oma soovile muuta. Kasutajad saavad või määravad andmeväärtused ainult kasutajatele avalikult kättesaadavate meetodite kaudu. Need meetodid tagavad tavaliselt andmete valideerimise, nii et väljadele on lubatud sisestada ainult sobivas vormingus andmeid. Seetõttu on kapseldamise eelised kolmekordsed. Kapseldamise kaudu saab programmeerija muuta klassi väljad kirjutuskaitstuks või kirjutamiseks. Teiseks saab klass omada täielikku kontrolli oma väljadele salvestatava üle. Lõpuks ei pea klassi kasutajad muretsema, kuidas selle andmeid salvestatakse. Javas saab programmeerija kuulutada kõik eksemplarimuutujad privaatseks ning pakkuda hankimis- ja seadistusmeetodeid (mis on avalikud), et pääseda juurde privaatväljadele ja neid muuta.
Mis on abstraktsioon?
Abstraktsioon on protsess, mille käigus eraldatakse esitluse üksikasjad teostuse üksikasjadest. Seda tehakse selleks, et arendaja vabaneks keerukamatest rakendusdetailidest. Selle asemel saab programmeerija keskenduda olemi esitlusele või käitumise üksikasjadele. Lihtsam alt öeldes keskendub abstraktsioon pigem sellele, kuidas teatud olemit saab kasutada, mitte sellele, kuidas seda rakendada. Abstraktsioon peidab sisuliselt juurutamise üksikasjad, nii et isegi kui juurutusmetoodika aja jooksul muutub, ei peaks programmeerija muretsema, kuidas see tema programmi mõjutab. Süsteemi saab abstraheerida mitmel kihil või tasandil. Näiteks paljastavad madala taseme abstraktsioonikihid riistvara üksikasju, kõrgetasemeline abstraktsioon aga ainult olemi äriloogikat. Terminit abstraktsioon võib kasutada nii üksuse kui protsessi viitamiseks ja see põhjustab segadust. Protsessina tähendab abstraktsioon oluliste detailide eraldamist, jättes tähelepanuta üksuse või üksuste rühma ebaolulised üksikasjad, samas kui üksusena tähendab abstraktsioon olemi mudelit või vaadet, millel on ainult olulised üksikasjad. Javas saab programmeerija kasutada märksõna abstract klassi abstraktseks olemiks deklareerimiseks, mis esindab reaalse maailma olemi olulisi defineerivaid tunnuseid.
Mis vahe on kapseldamisel ja abstraktsioonil?
Kuigi kapseldamine ja abstraktsioon on objektorienteeritud programmeerimiskeeltes väga seotud mõisted, on neil olulisi erinevusi. Abstraktsioon on tehnika, mis aitab meil tuvastada, mis peaks olema nähtav ja mida varjata. Kapseldamine on teabe pakendamise tehnika nii, et see muudab nähtavaks selle, mis peaks olema nähtav, ja peidab selle, mis peaks olema varjatud. Teisisõnu võib kapseldamist määratleda kui sammu abstraktsioonist kaugemale. Kui abstraktsioon taandab reaalse maailma objekti selle olulistele defineerivatele omadustele, siis kapseldamine laiendab seda ideed, modelleerides ja sidudes selle olemi funktsiooni.