Ce este ascunderea datelor în C++? Abstracția și încapsularea explicate

Publicat: 2021-05-24

Cuprins

Introducere în ascunderea datelor

Datele sunt cea mai sensibilă și mai volatilă componentă a unui program, care, dacă este manipulată, poate duce la o ieșire incorectă și poate afecta integritatea datelor. Aici ascunderea datelor se dovedește esențială. În jargonul tehnic, ascunderea datelor, denumită și ascunderea informațiilor, este un mecanism inerent de programare orientată pe obiecte (OOP) pentru a ascunde detaliile interne ale obiectului de utilizatorul final.

Obiectivul de bază al ascunderii datelor este de a ascunde datele dintr-o clasă de la accesul neautorizat și de a evita pătrunderea inutilă din afara clasei. Ascunderea datelor garantează accesul limitat la date pentru a asigura integritatea obiectului și pentru a preveni modificările neintenționate sau intenționate ale programului în cauză.

Mai simplu spus, ascunderea datelor preia anumite părți ale unui cod de program și îl ecranizează de membrii obiectului. Dacă un membru al obiectului încearcă să acceseze date ascunse, programul va returna o eroare. Acesta este un mecanism de precauție introdus pentru a se asigura că programatorul se abține de la conectarea la date eronate care au fost ascunse. Adesea sunt ascunse componentele interne fără nicio nevoie previzibilă din partea utilizatorului.

Ascunderea datelor, abstracția datelor și încapsularea datelor

Ascunderea datelor în C++ este strâns corelată cu alte două proprietăți OOP - abstracția și încapsularea.

Abstracția datelor

Abstracția datelor este un mecanism pentru a expune utilizatorului final doar interfața relevantă a programului și pentru a ascunde detaliile de implementare mai complicate și mai complexe. Să luăm în considerare un exemplu din viața reală pentru o mai bună înțelegere. Luați în considerare televizorul dvs. Puteți să porniți și să opriți televizorul, să schimbați canalul, să îi reglați volumul și să adăugați componente externe, cum ar fi VCR, DVD playere și difuzoare. Dar nu cunoașteți mecanismele interne ale televizorului.

Nu știi cum primește semnale, le traduce și în sfârșit afișează ieșirea. Astfel, televiziunea este un exemplu adept al separării dintre implementarea internă și influența externă. Cu abstracția datelor, implementarea clasei este protejată de erorile accidentale și evoluează ca răspuns la cerințele în schimbare sau la rapoartele de erori fără interferențe la nivel de utilizator.

Încapsularea datelor

Încapsularea datelor se referă la gruparea datelor și a funcțiilor aferente acestora într-o singură unitate numită clasă. Mai exact, dacă aveți un atribut invizibil din exteriorul unui obiect și îl combinați cu metode care oferă acces la citire sau scriere la acesta, puteți ascunde informații delicate și puteți regla accesul la starea internă a obiectului.

Prin urmare, în funcție de metodele pe care le implementați, aveți sarcina de a decide dacă un atribut poate fi citit și modificat sau dacă este doar în citire sau nu este vizibil deloc.

Diferența dintre ascunderea datelor și încapsularea datelor

În discutarea OOP, ascunderea datelor și încapsularea datelor sunt adesea folosite în mod interschimbabil, deoarece ambele aceste noțiuni cooperează pentru a realiza un obiectiv comun, auxiliar de gatekeeper al informațiilor sensibile. Ideea de încapsulare a datelor este, fără îndoială, comparativă din punct de vedere funcțional cu ascunderea datelor, dar deoarece funcționează la niveluri diferite, sunt diferite din punct de vedere structural.

Deși sunt intrinsec legate între ele, există o diferență crucială între ascunderea datelor și încapsularea datelor.

  1. Principala diferență dintre ascunderea și încapsularea datelor este că prima se concentrează pe îmbunătățirea securității datelor în program, în timp ce a doua se ocupă cu ascunderea complexității programului.
  2. Ascunderea datelor se concentrează pe accesibilitatea unui membru al obiectului dintr-o clasă, în timp ce încapsularea datelor se concentrează pe modul în care sunt accesate datele și pe modul în care se comportă diferitele obiecte. Încapsularea se realizează în principal prin ascunderea informațiilor și nu doar prin ascunderea informațiilor. Aceasta înseamnă că programatorul ascunde structurile membrului obiectului și ascunde implementarea tuturor metodelor acestuia.
  3. În timp ce ascunderea datelor se concentrează pe restricționarea utilizării datelor într-un program pentru a asigura securitatea datelor, încapsularea datelor se concentrează pe împachetarea (sau încapsularea) datelor complexe pentru a prezenta utilizatorului o vizualizare mai simplă.
  4. În ascunderea datelor, datele trebuie definite doar ca private. În încapsularea datelor, datele pot fi publice sau private.
  5. Ascunderea datelor este atât un proces, cât și o tehnică în sine, în timp ce încapsularea datelor este un sub-proces în ascunderea datelor.

Specificatori de acces

C++ acceptă ascunderea datelor și, prin extensie, abstracția datelor și încapsularea datelor prin crearea de tipuri definite de utilizator, cunoscute sub numele de clase. Sfera de aplicare a membrilor acestei clase create este definită de cuvinte cheie cunoscute ca specificatori de acces. În mod obișnuit, există trei tipuri de specificatori de protecție sau acces disponibili într-o categorie - privat, protejat și public, utilizați pentru a construi capacitățile de încapsulare ale clasei.

Specificatorii de acces ajută la definirea modului în care variabilele și funcțiile unui tip pot fi accesate din afara clasei. De obicei, datele dintr-o clasă sunt private pentru a elimina cazurile de manipulare accidentală, iar operațiunile sale sunt publice. Cu toate acestea, accesibilitatea în cadrul unui rang nu este legată de nicio restricție.

Variabile/funcții private: pot fi accesate numai de membrii definiți ca parte a clasei.

Variabile/funcții publice: pot fi accesate de oriunde în program.

Variabilele/funcțiile protejate Sunt private în cadrul unei clase și sunt disponibile numai pentru acces la distanță în clasa derivată.

Aplicarea Ascunderii Datelor

Pentru a înțelege mai bine ascunderea datelor, să luăm în considerare următorul exemplu. Având în vedere că sunteți programatorul, să presupunem că declarați o clasă cu numele „CheckAccount”, în care ați definit un membru de date prin termenul „Sold”, care se referă la soldul contului bancar al unui utilizator.

În acest exemplu particular, membrul de date „Sold” este informații sensibile. Deși este posibil să oferiți acces la aplicație externă pentru a vizualiza aceste informații sensibile, după toate probabilitățile, nu veți lăsa această aplicație exterioară să modifice atributele datelor stocate în "Soldul" membrului. Acest rezultat poate fi obținut folosind ascunderea datelor și, mai precis, este controlat prin utilizarea specificatorului de acces privat.

  1. Ascunderea datelor este de obicei executată pe date care sunt imprevizibile și delicate. Acest tip de date este fundamental pentru a rula un program eficient și rapid. Datorită accesului necorespunzător, datele care rezultă din modificările datelor sunt permanente și impun o reluare completă din partea programatorului înainte de utilizare ulterioară.
  2. Ascunderea datelor ajută la protejarea membrilor clasei împotriva neglijărilor neintenționate. O clasă cuprinde de obicei diverse câmpuri înrudite care trebuie să fie într-o stare de încredere. Să presupunem că unui programator i se permite să controleze direct oricare dintre aceste câmpuri. În acest caz, există posibilitatea să transformați o zonă fără a modifica câmpurile conexe critice, lăsând clasa dvs. într-o stare conflictuală.

Beneficiile ascunderii datelor

Beneficiile ascunderii datelor sunt multiple:

  1. Este folosit pentru a reduce impredictibilitatea și complexitatea datelor.
  2. Îmbunătățește reutilizarea programului.
  3. Prin limitarea interdependențelor dintre componentele software, se reduce și complexitatea sistemului pentru o robustețe sporită.
  4. Ascunde designul fizic de stocare a datelor. Acest lucru ajută la definirea clară a interfeței, îmbunătățește lizibilitatea și comprehensibilitatea.
  5. Oferă asigurarea datelor împotriva corupției și accesului nejustificat. Cu alte cuvinte, ajută la ascunderea datelor importante, asigurând astfel protocoale de securitate sporite împotriva hackerilor. Dacă toate datele interne ar fi făcute publice, hackerii ar putea pătrunde cu ușurință în datele interne și ar putea face modificări intenționate pentru a modifica funcționarea programului. Ascunderea datelor face mult mai dificilă spargerea codului, deoarece datele ascunse vor apărea invizibile pentru membrii externi ai clasei și, prin urmare, pentru hacker.
  6. Clasele încapsulate sunt simple, ușor de gestionat și facilitează dezvoltarea viitoare a aplicației.

Dezavantajul ascunderii datelor

Singurul dezavantaj al ascunderii datelor este codarea suplimentară. Ascunderea datelor necesită ca programatorii să scrie coduri mai lungi pentru a crea efectul dorit în datele ascunse.

Învață cursuri de inginerie software online de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.

Concluzie

Ascunderea datelor este asemănătoare cu un joc de ruletă rusă. La ruleta rusă, doar una din șase găuri are un glonț. Să ne imaginăm că fotografia este o amenințare perceptibilă de date. Ați fi dispus să riscați? S-ar putea să existe cinci scenarii care funcționează în favoarea dvs., dar puteți identifica în mod specific amenințarea? Raspunsul este nu. Toate scenariile poartă o povară probabilistică egală de suspiciune și frică. În loc să cedeți în fața acestei incertitudini, luați atitudine împotriva amenințărilor legate de date. Intră sub acoperire cu ascunderea datelor.

Dacă sunteți interesat să aflați mai multe despre Java, OOP și dezvoltarea de software full-stack, consultați programul Executive PG de la upGrad și IIIT-B în dezvoltarea de software Full-stack, care este conceput pentru profesioniști care lucrează și oferă peste 500 de ore de formare riguroasă, Peste 9 proiecte și sarcini, statutul de absolvenți IIIT-B, proiecte practice practice și asistență pentru locuri de muncă cu firme de top.

Ce este încapsularea în programarea orientată pe obiecte?

Încapsularea este o modalitate de a lega împreună datele și codul care operează asupra datelor. Este un mecanism folosit pentru a ascunde detaliile de implementare a datelor în timp ce expune abstracția datelor lumii exterioare. Procesul de ascundere a informațiilor în spatele unei interfețe bine definite este cunoscut sub numele de încapsulare. Încapsularea este un concept puternic de programare orientată pe obiecte. Este procesul de ascundere a datelor și operațiunilor interne ale unui obiect din lumea exterioară prin crearea de funcții accesorii.

Ce este abstractizarea în programarea orientată pe obiecte?

Abstracția este o tehnică folosită în programarea orientată pe obiecte pentru a separa interfețele claselor de detaliile de implementare ale fiecărui obiect individual. Aceasta înseamnă că codul poate fi schimbat fără a modifica codul care utilizează clasa. În programarea orientată pe obiecte (OOP), o abstractizare reprezintă un obiect care poate fi manipulat, dar nu definit în mod explicit. Abstracția este o parte importantă a POO; este procesul de separare a interfeței unei clase de implementarea metodelor sale.

Cum interacționează clasele și obiectele în programarea orientată pe obiecte?

Clasele și obiectele sunt fundamentul programării orientate pe obiecte (OO). Programarea orientată pe obiecte este o paradigmă de programare, care utilizează obiecte și clase pentru a modela lumea reală. O clasă este un plan sau un șablon. Este o descriere sau o specificație a ceea ce ar trebui să fie un obiect. Acesta definește caracteristicile, comportamentele și datele unui anumit tip de obiect. Obiectele sunt instanțe sau exemple ale unei clase. Fiecare obiect dintr-un program poate fi clasificat în una sau mai multe clase. O clasă poate moșteni proprietățile, metodele și alte caracteristici ale altei clase. Aceasta se numește moștenire.