Encapsulare vs Abstracție
Încapsularea și abstracția sunt două concepte diferite, dar înrudite, găsite în limbajele OOP (Object Oriented Programming). Încapsularea este conceptul de a combina datele și comportamentul împreună ca o singură entitate. Pe de altă parte, abstracția este procesul de prezentare a modului în care se comportă\arata o entitate, spre deosebire de modul în care este implementată.
Ce este încapsularea?
Încapsularea este procesul de împachetare a datelor și operațiunilor care operează asupra lor într-o singură entitate. Acest lucru înseamnă în esență că pentru a accesa date, trebuie utilizate anumite metode predefinite. Cu alte cuvinte, datele încapsulate nu sunt direct accesibile. Acest lucru asigură păstrarea integrității datelor deoarece utilizatorul nu poate accesa direct și modifica datele după cum dorește. Utilizatorii vor obține sau seta valorile datelor numai prin metodele care sunt disponibile public pentru utilizatori. Aceste metode oferă de obicei validarea datelor, astfel încât numai datele în formatul adecvat pot fi inserate în câmpuri. Prin urmare, beneficiile încapsulării sunt de trei ori. Prin Encapsulation, programatorul poate face câmpuri dintr-o clasă doar pentru citire sau doar pentru scriere. În al doilea rând, o clasă poate avea control total asupra a ceea ce este stocat în câmpurile sale. În cele din urmă, utilizatorii unei clase nu trebuie să-și facă griji cum sunt stocate datele acesteia. În Java, programatorul poate declara toate variabilele de instanță ca fiind private și poate oferi metode get și set (care sunt publice) pentru a accesa și modifica câmpurile private.
Ce este abstracția?
Abstracția este procesul de separare a detaliilor prezentării de detaliile implementării. Acest lucru se face astfel încât dezvoltatorul să fie scutit de detaliile de implementare mai complexe. În schimb, programatorul se poate concentra pe prezentarea sau pe detaliile comportamentale ale entității. În termeni simpli, abstractizarea se concentrează pe modul în care o anumită entitate poate fi utilizată, mai degrabă decât pe modul în care este implementată. Abstracția ascunde în esență detaliile implementării, astfel încât, chiar dacă metodologia de implementare se schimbă în timp, programatorul nu ar trebui să-și facă griji cum i-ar afecta programul. Un sistem poate fi abstractizat în mai multe straturi sau niveluri. De exemplu, straturile de abstracție la nivel scăzut vor dezvălui detalii hardware, în timp ce abstracția la nivel în alt va dezvălui doar logica de afaceri a entității. Termenul de abstractizare poate fi folosit pentru a se referi atât la o entitate, cât și la un proces și acest lucru duce la o anumită confuzie. Ca proces, abstracția înseamnă extragerea detaliilor esențiale ignorând în același timp detaliile neesențiale ale unui articol sau ale unui grup de articole, în timp ce ca entitate, abstracția înseamnă un model sau o vedere a unei entități cu doar detaliile esențiale. În Java, programatorul poate folosi cuvântul cheie abstract pentru a declara o clasă ca entitate abstractă, care reprezintă caracteristicile definitorii esențiale ale unei entități din lumea reală.
Care este diferența dintre încapsulare și abstracție?
Chiar dacă încapsularea și abstracția sunt concepte foarte înrudite găsite în limbajele de programare orientată pe obiecte, ele au diferențe cheie. Abstracția este o tehnică, care ne ajută să identificăm ce ar trebui să fie vizibil și ce ar trebui ascuns. Încapsularea reprezintă tehnicile de ambalare a informațiilor astfel încât să facă vizibil ceea ce ar trebui să fie vizibil și să ascunde ceea ce ar trebui să fie ascuns. Cu alte cuvinte, încapsularea poate fi identificată ca un pas dincolo de abstractizare. În timp ce abstracția reduce un obiect din lumea reală la caracteristicile sale definitorii esențiale, încapsularea extinde această idee prin modelarea și legarea acestei funcționalități a acelei entități.