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 ühendamine ühe tervikuna. Teisest küljest on abstraktsioon üksuse käitumise \ väljanägemise esitlemise protsess, mitte selle rakendamine.
Mis on kapseldamine?
Kapseldamine on andmete pakkimine ja toiming, mis toimivad neil ühes üksuses. See tähendab sisuliselt seda, et andmetele juurdepääsu saamiseks tuleks kasutada teatavaid eelnevalt määratletud meetodeid. Teisisõnu, kapseldatud andmetele pole otseselt juurde pääseda. See tagab andmete terviklikkuse säilimise, kuna kasutaja ei saa andmetele otse juurde pääseda ja neid vastavalt oma soovidele muuta. Kasutajad saavad või määravad andmeväärtused ainult nende meetodite kaudu, mis on kasutajatele avalikult kättesaadavad. Need meetodid pakuvad tavaliselt andmete valideerimist, nii et väljadele lubatakse sisestada ainult sobivas vormingus andmeid. Seetõttu on kapseldamise eelised kolmekordsed. Kapseldamise kaudu saab programmeerija muuta klassi väljad kirjutuskaitstud või ainult kirjutamiseks. Teiseks võib klass omada täielikku kontrolli selle üle, mida oma väljadele talletatakse. Lõpuks ei pea klassi kasutajad muretsema, kuidas selle andmeid hoitakse. Java-keeles saab programmeerija kuulutada kõik esinemismuutujad privaatseks ning pakkuda privaatsete väljade juurde pääsemiseks ja muutmiseks hanke- ja määramismeetodeid (mis on avalikud).
Mis on abstraktsioon?
Abstraktsioon on esitluse ja rakenduse üksikasjade eraldamise protsess. Seda tehakse nii, et arendaja vabastatakse keerukamatest rakenduse üksikasjadest. Selle asemel saab programmeerija keskenduda olemi esitlusele või käitumise üksikasjadele. Lihtsamalt öeldes keskendub abstraktsioon sellele, kuidas teatud üksust saab kasutada, mitte sellele, kuidas seda rakendatakse. Abstraktsioon peidab sisuliselt ära rakenduse üksikasjad, nii et isegi kui rakendusmetoodika aja jooksul muutub, ei peaks programmeerija muretsema, kuidas see tema programmi mõjutab. Süsteemi saab kokku võtta mitmes kihis või tasandil. Näiteks madala taseme abstraktsiooni kihid paljastavad riistvara üksikasjad, kõrge taseme abstraktsioon aga ainult üksuse äriloogika. Mõistet abstraktsioon võib kasutada nii üksuse kui ka protsessi kohta ning see põhjustab teatavat segadust. Protsessina tähendab abstraktsioon oluliste detailide eraldamist, jättes samal ajal tähelepanuta üksuse või esemete rühma ebaolulised üksikasjad, ent kui entiteet tähendab abstraktsiooni mudelit või vaadet olemile, milles on ainult olulised üksikasjad. Java-keeles saab programmeerija kasutada klassi abstraktse üksusena kuulutamiseks märksõna abstraktne, mis kujutab endast reaalse maailma olemuse olulisi määratlevaid tunnuseid.
Mis vahe on kapseldamisel ja abstraktsioonil??
Ehkki kapseldamine ja abstraktsioon on objektorienteeritud programmeerimiskeeltes väga sarnased mõisted, on neil olulisi erinevusi. Abstraktsioon on tehnika, mis aitab meil kindlaks teha, mis peaks olema nähtav ja mis varjatud. Kapseldamine on tehnika pakkimise tehnikad, mis muudavad nähtavaks selle, mis peaks olema nähtav, ja varjab seda, mida tuleks varjata. Teisisõnu, kapseldamist võib määratleda ühe sammuna abstraktsioonist kaugemale. Kui abstraktsioon taandab reaalse maailma objekti selle oluliste määratlevate tunnuste juurde, siis kapseldamine laiendab seda ideed, modelleerides ja sidudes selle olemi funktsionaalsuse.