Encapsulation vs. Abstraction

Encapsularea și abstractizarea sunt două concepte diferite, dar legate, găsite în limbile OOP (Object Oriented Programming). Encapsularea este conceptul de combinare a datelor și comportamentului împreună ca o singură entitate. Pe de altă parte, abstractizarea este procesul de prezentare a modului în care o entitate se comportă \, spre deosebire de modul în care este implementată.

Ce este încapsularea?

Encapsularea este procesul de împachetare a datelor și a operării care operează pe ele într-o singură entitate. Acest lucru înseamnă, în esență, că, pentru a avea acces la date, ar trebui folosite anumite metode predefinite. Cu alte cuvinte, datele încapsulate nu sunt direct accesibile. Acest lucru asigură faptul că integritatea datelor este păstrată deoarece utilizatorul nu poate accesa și modifica direct datele așa cum dorește. Utilizatorii vor primi sau stabili valorile datelor doar prin metodele care sunt accesibile publicului utilizatorilor. Aceste metode oferă de obicei validarea datelor, astfel încât numai datele din formatul corespunzător să poată fi introduse în câmpuri. Prin urmare, beneficiile Encapsulation sunt de trei ori. Prin încapsulare, programatorul poate face câmpuri dintr-o clasă numai pentru citire sau 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 cu privire la modul în care sunt stocate datele. În Java, programatorul poate declara ca toate variabilele instanței să fie private și să furnizeze și să stabilească metode (care sunt publice) pentru a accesa și a modifica câmpurile private.

Ce este abstractizarea?

Abstractizarea este procesul de separare a detaliilor prezentării de detaliile implementării. Acest lucru se face astfel încât dezvoltatorul să fie eliberat de detaliile de implementare mai complexe. În schimb, programatorul se poate concentra asupra prezentării sau a detaliilor comportamentale ale entității. În termeni simpli, abstractizarea se concentrează asupra modului în care o anumită entitate poate fi utilizată mai degrabă decât modul în care aceasta este implementată. Abstracția ascunde, în esență, detaliile implementării, astfel încât, chiar dacă metodologia de implementare se modifică în timp, programatorul nu ar trebui să-și facă griji cu privire la modul în care va afecta programul său. Un sistem poate fi abstracționat în mai multe straturi sau nivele. De exemplu, straturile de abstractizare de nivel scăzut vor dezvălui detaliile hardware, în timp ce abstractizarea la nivel înalt va dezvălui 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, ceea ce duce la o anumită confuzie. Ca un proces, abstractizarea înseamnă extragerea detaliilor esențiale în timp ce ignoră detaliile neesențiale ale unui element sau unui grup de elemente, în timp ce ca entitate, abstractizarea înseamnă un model sau o vedere a unei entități care conține doar detaliile esențiale. În Java, programatorul poate folosi abstractul de cuvinte cheie pentru a declara o clasă ca o entitate abstractă, care reprezintă caracterele esențiale esențiale ale unei entități din lumea reală.

Care este diferența dintre încapsulare și abstractizare?

Chiar dacă încapsularea și abstractizarea sunt concepte foarte apropiate găsite în limbile de programare orientate pe obiecte, ele au diferențe-cheie. Abstractizarea este o tehnică care ne ajută să identificăm ce ar trebui să fie vizibil și ce ar trebui ascuns. Encapsularea este tehnica de ambalare a informațiilor, astfel încât să fie vizibil ceea ce ar trebui să fie vizibil și ascunde ceea ce ar trebui ascuns. Cu alte cuvinte, încapsularea poate fi identificată ca un pas dincolo de abstractizare. În timp ce abstractizarea reduce un obiect din lumea reală la caracteristicile sale esențiale de definire, încapsularea extinde această idee prin modelarea și conectarea acestei funcționalități a acelei entități.