Skirtumas tarp abstrakcijos ir kapsuliavimo

Abstrakcija ir kapsulė yra pagrindinės objektinio programavimo (OOP) sąvokos, leidžiančios realiojo pasaulio objektus įdiegti į programas ir kodus. Nors abu eina koja kojon, jie labai skiriasi vienas nuo kito. Nors kiekvienas metodas yra kapsulė, tai taip pat yra abstrakcija. Paprastai tariant, sudėję skirtingus dalykus, kad sukurtumėte subjektą, jūs iš tikrųjų sukuriate sąvoką - santrauką. Nors abu jie yra neatsiejami, jie pažodžiui neturi nieko bendra. Beveik tiesa, kad kiekviena kapsuliacija yra abstrakcija, nes jie abu kažką slepia, vis dėlto jie turi nemažą skirtumų dalį.

Kas yra abstrakcija?

Abstrakcija yra pagrindinė OOP koncepcija, kurioje dėmesys sutelkiamas tik į svarbius objekto duomenis ir paslepiama visa nesvarbi informacija, kuri gali būti arba nėra bendro pobūdžio ar specializuota. Jis slepia pagrindines detales ir pabrėžia svarbiausius dalykus, kad sumažintų sudėtingumą ir padidintų efektyvumą. Iš esmės abstrakcija yra programavimo įrankis, padedantis valdyti sudėtingumą. Abstrakcija orientuojama į idėjas, o ne į įvykius. Jis slepia detales projektavimo lygiu, suteikdamas vartotojams funkcionalumą. Gautas objektas taip pat gali būti vadinamas abstrakcija. Programuotojas pasirūpina, kad įvardytas subjektas įtrauktų visus esminius aspektus ir nė vieną iš nesvarbių.

Paimkime realaus pasaulio abstrakcijos pavyzdį. Panagrinėkime transporto priemonės atvejį, kuris šiuo atveju yra jūsų transporto priemonė. Mechanikas bando suremontuoti jūsų mašiną arba tarkime, kad jūsų automobilio dalis yra tam tikra. Čia esate vartotojas ir nenorite įsigilinti į savo automobilio specifiką ar tai, kokia dalis iš tikrųjų sugedo. Jums iš tikrųjų nerūpi tie dalykai; jūs tiesiog norite, kad jūsų transporto priemonė grįžtų į pradinę būklę, nesijaudindami dėl detalių. Taigi, jūs iš tikrųjų pasakėte mechanikui to, ko norite, atskyrę diegimo dalį. Tai yra abstrakcija. Jūs sutelkėte dėmesį į svarbiausią dalyką, tai yra automobilio taisymą, o ne į specifiką.

Kas yra kapsulė?

Kapsuliavimas yra dar viena OOP koncepcija, jungianti duomenis ir funkcijas į vieną komponentą, tuo pačiu ribojant prieigą prie kai kurių komponentų. Tai viena iš pagrindinių OOP sąvokų, supankanti duomenis ir informaciją į vieną mazgą. Technine prasme kapsuliavimas reiškia skydo kintamųjų atributų slėpimą iš išorinės prieigos, kad vienos programos dalies pakeitimas nepaveiktų kitų dalių. Atvirkščiai, padarius informaciją atviresnę, rizikuosite netinkamai naudoti duomenis. Tai suteikia pagrindinį duomenų vientisumą saugant juos nuo išorinio pasaulio. Kalbant paprastai, jis slepia papildomas detales iš išorinio pasaulio.

Paimkime „Bluetooth“ pelės pavyzdį. Jums tereikia žinoti apie įrenginio elgesį, nesijaudinant dėl ​​informacijos apie įgyvendinimą, pvz., Kokius jutiklius turi pelė, ar ji belaidė, ar ne ir pan. Norint naudoti pelę, jums tiesiog reikia sąsajos, kuri šiuo atveju yra pelės žymiklis. Tai yra kapsuliacija.

Skirtumas tarp abstrakcijos ir kapsuliavimo

Nors abi yra pagrindinės sąvokos, susijusios su OOP, ir yra techniškai neatsiejamos, jos vis dar turi skirtumų daugeliu aspektų.

  1. Abstrakcijos ir kapsulės „apibrėžimo“ skirtumai - Abstrakcija yra pagrindinė OOP koncepcija, kurioje pabrėžiami visi esminiai objekto aspektai, paslepiant nesvarbias detales, siekiant padidinti efektyvumą ir pašalinti sudėtingumą. Kita vertus, kapsulė yra duomenų slėpimo mechanizmas, kuris įvynioja duomenis ir informaciją kapsulėje, siekiant apriboti prieigą iš išorinio pasaulio..
  2. „Funkcionalumo“ skirtumai abstrakcijos ir kapsulės tyrimas- Abstrakcija yra duomenų slėpimo mechanizmas, išryškinantis tik esmines sudėtingesnių programų supaprastinimo savybes, tuo tarpu, kita vertus, kapsuliavimas yra duomenų ir kodų susiejimo į vieną objektą metodas. Idėja yra apsaugoti įgyvendinimo detales nuo išorinės prieigos.
  3. Abstrakcijos ir kapsulės „diegimo“ skirtumai - Abstrakcija įgyvendinama naudojant abstrakčią klasę ir sąsają, o kapsuliavimas įgyvendinamas naudojant prieigos modifikatorius. Duomenims kaupti naudojami penki modifikatorių tipai: privatus, viešas, vidinis, apsaugotas ir apsaugotas vidinis.
  4. „Koncepcijos“ skirtumai abstrakcijos ir kapsulės tyrimas- Abstrakcijos idėja yra sutelkti dėmesį į ką, o ne kaip. Inkapsuliacija slepia vidinę mechaniką, kaip. Pvz., Vairuodamas automobilį tiksliai žinai, ką daro stabdžių pedalas, bet gali žinoti ne visą mechanizmą, nes už jo yra duomenys.
  5. Abstrakcijos ir kapsuliavimo pavyzdžio skirtumai - Paimkime išmaniojo telefono pavyzdį. Jūs žinote, ką jis daro, bet galbūt ir nežinote, kaip tai daro. Jums nerūpi tik vidinis ekranas ir klaviatūros mygtukai, o ne vidinė jo schema. Čia išmanusis telefonas yra abstraktas, kuriame yra įdėtos vidinės įdiegimo detalės.

Abstrakcija ir palyginimas su palyginimo lentele

Abstrakcija Inkapsuliacija
Jame nagrinėjamos tik svarbios detalės, paslepiant nesvarbias detales, kad būtų sumažintas sudėtingumas ir padidintas efektyvumas. Jis sujungia duomenis ir informaciją į vieną visumą, kad apsaugotų duomenis nuo išorinių šaltinių.
Tai reiškia idėją paslėpti duomenis, kurie nėra būtini pateikimo tikslais. Jis slepia duomenis ir kodą, kad apribotų nepageidaujamą prieigą.
Daugiausia dėmesio skiriama tam, o ne kaip. Tai slepia vidinę mechaniką, kaip ji ką nors daro.
Tai slepia nereikalingas detales projektavimo lygiu. Tai taip pat slepia detales, tačiau įgyvendinimo lygiu.
Informacija ir duomenys yra atskirti nuo svarbių duomenų. Informacija yra paslėpta kapsulės viduje, kad ją būtų galima pasiekti.
Čia kalbama ne apie įvykius, o su idėjomis. Idėja yra apsaugoti duomenis nuo išorinio pasaulio.
Tai įgyvendinama naudojant abstrakčią klasę ir sąsają. Tai įgyvendinta naudojant apsaugotus, privačius ir privačių paketų prieigos modifikatorius.

Santrauka

Nors abi yra OOP sąvokos, susijusios su duomenų slėpimu, jos labai skiriasi viena nuo kitos. Abstrakcija taip pat susijusi su slėpimu, pavyzdžiui, kapsuliacija, tačiau, nors pirmasis slepia sudėtingumą, pastarasis saugo duomenis, kuriuos kaupia, kontroliuodamas prieigą prie jų. Abstrakcija reiškia, kad vaizduojamos tik būtinos savybės, slepiant nesvarbias detales, kad būtų sumažintas programos sudėtingumas ir padidintas efektyvumas. Kita vertus, kapsuliacija reiškia visos programos mechanikos paslėpimo koncepciją, siekiant apsaugoti informaciją nuo nepageidaujamos prieigos. Tai sujungia duomenis ir informaciją į vieną komponentą ribojant prieigą prie kitų komponentų.