Erinevus abstraktsiooni ja kapseldamise vahel

Abstraktsioon ja kapseldamine on mõlemad objektorienteeritud programmeerimise (OOP) põhikontseptsioonid, mis võimaldavad teil reaalaine objekte programmidesse ja koodidesse rakendada. Kuigi mõlemad käivad käsikäes, on nad üksteisest väga erinevad. Kuigi iga meetod on kapseldamine, on see ka abstraktsioon. Lihtsamalt öeldes, kui paned olemi loomiseks erinevad asjad kokku, loote tegelikult kontseptsiooni - abstraktsuse. Ehkki mõlemad on tehniliselt lahutamatud, pole neil sõna otseses mõttes midagi ühist. On peaaegu tõsi, et iga kapseldamine on abstraktsioon, sest nad mõlemad varjavad midagi, kuid neil on erinevuste osas õiglane osa.

Mis on abstraktsioon?

Abstraktsioon on põhiline OOP-kontseptsioon, mis keskendub vaid objekti olulistele andmetele ja peidab kõik ebaolulised üksikasjad, mis võivad olla või mitte olla üldise või spetsialiseeritud käitumise jaoks. See peidab tausta üksikasju ja rõhutab olulisi punkte keerukuse vähendamiseks ja tõhususe suurendamiseks. Põhimõtteliselt on abstraktsioon programmeerimisvahend keerukuse juhtimiseks. Abstraktsioon keskendub pigem ideedele kui sündmustele. See peidab üksikasjad disaini tasemel, pakkudes kasutajatele funktsioone. Saadud objekti võib nimetada ka abstraktsiooniks. Programmeerija hoolitseb selle eest, et nimetatud olemis oleksid kõik olulised aspektid ja mitte ükski ebaoluline.

Võtame abstraktsiooni reaalses maailmas. Vaatleme sõiduki juhtumit, mis antud juhul on teie sõiduk. Mehaanik proovib teie autot remontida või ütleme teie auto konkreetse osa. Siin olete kasutaja ja te ei soovi süveneda oma auto eripärasse ega sellesse, mis osa tegelikult purunes. Sa tegelikult ei hooli neist asjadest; soovite oma sõidukit lihtsalt algses seisukorras, muretsemata detailide pärast. Niisiis, te tegelikult ütlesite mehaanikule, mida te soovite, eraldades rakendusosa. See on abstraktsioon. Keskendusite kõige olulisemale asjale, milleks on auto fikseerimine, selle asemel, et keskenduda konkreetsetele.

Mis on kapseldamine?

Kapseldamine on veel üks OOP-kontseptsioon, mis seob andmed ja funktsioonid üheks komponendiks, piirates samas juurdepääsu mõnele komponendile. See on OOP üks peamisi kontseptsioone, mis mähivad andmed ja teabe ühe üksuse alla. Tehnilises mõttes tähendab kapseldamine kilpmuutujate atribuutide peitmist väljastpoolt juurdepääsu eest, nii et muudatused rakenduse ühes osas ei mõjuta teisi osi. Vastupidi, muutes teabe avatumaks, riskite andmete väärkasutamisega. See tagab andmete põhilise terviklikkuse, kaitstes neid välismaailma eest. Lihtsamalt öeldes peidab see lisadetailid välismaailmast.

Võtame näiteks Bluetooth-hiire. Peate teadma ainult seadme käitumist, muretsemata rakenduse üksikasjade pärast, näiteks milliseid andureid hiir omab, kas see on juhtmevaba või mitte jne. Iga detail kirjeldab hiirt, kuid olenemata üksikasjadest, on see lihtsalt hiir. Hiire kasutamiseks on vaja lihtsalt liidest, mis sel juhul on hiirekursor. See on kapseldamine.

Erinevus abstraktsiooni ja kapseldamise vahel

Ehkki mõlemad on OOP-ga seotud põhimõisted ja nad on tehniliselt lahutamatud, on neil siiski paljudes aspektides erinevusi.

  1. Erinevused abstraktsiooni ja kapseldamise määratluses - Abstraktsioon on põhiline OOP-kontseptsioon, mis rõhutab kõiki objekti olulisi aspekte, varjates ebaolulisi detaile, et suurendada tõhusust ja kõrvaldada keerukus. Kapseldamine on seevastu andmete peitmise mehhanism, mis mähitakse andmed ja teave kapslisse, et piirata juurdepääsu välismaailmast.
  2. Erinevused funktsionaalsuses abstraktsiooni ja kapseldamise kohta- Abstraktsioon on andmete peitmise mehhanism, mis toob keerukate programmide lihtsustamiseks esile ainult olulised omadused, samas kui kapseldamine on meetod andmete ja koodide sidumiseks ühtseks tervikuks. Idee on kaitsta rakenduse üksikasju välise juurdepääsu eest.
  3. Erinevused abstraktsiooni ja kapseldamise “rakendamisel” - Abstraktsiooni rakendatakse abstraktse klassi ja liidese abil, kapseldamist aga juurdepääsu modifikaatorite abil. Andmete kapseldamiseks kasutatakse viit tüüpi modifikaatoreid: privaatne, avalik, sisemine, kaitstud ja kaitstud sisemine.
  4. Erinevused kontseptsioonis abstraktsiooni ja kapseldamise kohta- Abstraktsiooni idee on keskenduda pigem sellele, mis kuidas. Kapseldus peidab sisemise mehaanika, kuidas. Näiteks teate autoga sõites täpselt, mida piduripedaal teeb, kuid ei pruugi teada kogu selle taga olevat mehhanismi, kuna andmed on kapseldatud.
  5. Erinevused abstraktsiooni ja kapseldamise näites - Võtame näiteks nutitelefoni. Tead, mida see teeb, kuid võib-olla ei teagi, kuidas ta seda teeb. Teid huvitab ainult kuvar ja klaviatuurinupud, mitte selle sisemise vooluringi pärast muretsemine. Siin on nutitelefon abstraktne, kus sisemised rakenduse üksikasjad on kapseldatud.

Abstraktsioon vs kapseldamine võrdlustabeliga

Abstraktsioon Kapseldamine
Selles käsitletakse ainult asjakohaseid üksikasju, varjates ebaolulisi, et vähendada keerukust, suurendades seeläbi tõhusust. See seob andmed ja teabe üheks tervikuks, et kaitsta andmeid väliste allikate eest.
See viitab andmete peitmise ideele, mida esitlemiseks pole vaja. See peidab andmeid ja koodi soovimatu juurdepääsu piiramiseks.
See keskendub pigem sellele, kuidas kuidas. See peidab endas sisemise mehaanika, kuidas see midagi teeb.
See peidab ebavajalikud detailid disaini tasemel. Samuti peidab see üksikasju, kuid rakenduse tasandil.
Teave ja andmed on olulistest andmetest eraldatud. Informatsioon on peidetud kapsli sisse, et seda tihedalt juurde pääseda.
See tegeleb pigem ideede kui sündmustega. Idee on kaitsta andmeid välismaailma eest.
Selle rakendamiseks kasutatakse abstraktset klassi ja liidest. Selle rakendamiseks kasutatakse kaitstud, privaatseid ja pakett-privaatse juurdepääsu muundajaid.

Kokkuvõte

Ehkki mõlemad on andmete peitmisega seotud OOP-kontseptsioonid, on nad üksteisest üsna erinevad. Abstraktsioon on seotud ka varjamisega nagu kapseldumine, kuid esimene varjab keerukust, kuid viimane hoiab kapseldatud andmeid, kontrollides neile juurdepääsu. Abstraktsioon viitab ainult vajalike tunnuste esindamise kontseptsioonile, varjates ebaolulisi detaile, et vähendada rakenduse keerukust, suurendades sellega tõhusust. Kapseldamine tähendab teiselt poolt programmi kogu sisemise mehaanika peitmist, et kaitsta teavet soovimatu juurdepääsu eest. See seob andmed ja teabe kokku üheks komponendiks, piirates juurdepääsu teistele komponentidele.