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. Kui lihtsustatult öelda, et kui üksuse loomiseks erinevaid asju kokku panna, siis 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 funktsionaalsust. 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 reaalse maailma näite. 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äradesse või 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 rääkisite mehaanikule, mida te soovite, eraldades rakendusosa. See on abstraktsioon. Keskendusite kõige olulisemale asjale, milleks on auto fikseerimine, selle asemel, et keskenduda konkreetsetele.

Erinevus abstraktsiooni ja kapseldamise vahel

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 üks peamisi OOP põhimõisteid, 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äärkasutusega. 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 OOP-kontseptsioon, mis rõhutab kõiki objekti olulisi aspekte, varjates ebaolulisi detaile efektiivsuse suurendamiseks ja keerukuse kaotamiseks. Kapseldamine on seevastu andmete peitmise mehhanism, mis mähitakse andmed ja teave kapslisse, et piirata juurdepääsu välismaailmast.
    Erinevused abstraktsiooni ja kapseldamise funktsionaalsuses - abstraktsioon on andmete peitmise mehhanism, mis tõstab esile ainult olulised omadused keerukate programmide lihtsustamiseks, samas kui kapseldamine on seevastu meetod andmete ja koodide sidumiseks üheks tervikuks. Idee on kaitsta rakenduse üksikasju välise juurdepääsu eest.
    Erinevused abstraktsiooni ja kapseldamise "rakendamises" - abstraktsiooni rakendatakse abstraktse klassi ja liidese abil, kapseldamise puhul aga juurdepääsu modifikaatoreid. Andmete kapseldamiseks kasutatakse viit tüüpi modifikaatoreid: privaatne, avalik, sisemine, kaitstud ja kaitstud sisemine.
    Erinevused abstraktsiooni ja kapseldamise kontseptsioonis - abstraktsiooni mõte on keskenduda sellele, kuidas, mitte 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.
    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 klahvistiku nupud, selle asemel et muretseda selle sisemise vooluringi pärast. Siin on nutitelefon abstraktne, kus sisemised rakenduse üksikasjad on kapseldatud.

Abstraktsioon vs kapseldamine võrdlustabeliga

Kokkuvõte

Ehkki mõlemad on andmete peitmisega seotud OOP-mõisted, 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.

Viited

  • Buyya. Objektorienteeritud programmeerimine Java abil: Essentials ja rakendused. NYC: Tata McGraw-Hill Education, 2009. Trükk
  • McConnell, Steve. Kood valmis (2. väljaanne). London: Pearson Education, 2004. Trükk
  • Michelsen, Klaus. C # Primer Plus. Indianapolis: Sams Publishing, 2002. Trükk
  • "Pildikrediit: https://stackoverflow.com/questions/742341/difference-between-abstraction-and-encapsulation"