Abstracție vs încapsulare: diferența dintre abstracție și încapsulare
Publicat: 2021-02-09Cuprins
Introducere
Fiecare programator se străduiește să dezvolte un cod îngrijit și curat și trebuie să folosească o armă adecvată din conceptele de armură sau OOP. Utilizarea conceptelor OOP adecvate va reduce complexitatea și entitatea obiectelor va fi disociată de alte părți ale codului. De asemenea, îmbunătățește lizibilitatea și poate fi ușor modificat dacă este necesar.
De asemenea, conceptul OOP precum moștenirea oferă extensibilitatea codului. Aceste concepte sunt utile pentru definirea claselor abstracte, actualizarea codurilor implementate anterior, implementarea unei aplicații pentru scenarii din viața reală.
Abstracția, încapsularea sunt conceptele fundamentale în programarea orientată pe obiecte. Și fiecare programator implementează aceste concepte pentru un cod curat și reutilizabil. Dar există un număr considerabil de diferențe între aceste două concepte, să le înțelegem în acest articol.
La început, să facem o scurtă plimbare prin conceptele de abstractizare și încapsulare.
Abstracția
Abstracția este un proces de ascundere a datelor inutile și de afișare numai a datelor relevante. Dintr-un ocean de date, menținem doar transparența unor date pentru utilizator. Acest concept important în programarea orientată pe obiecte va reduce complexitatea codului și va crește lizibilitatea.
De exemplu, să presupunem că ni s-a atribuit o sarcină pentru a crea un portal de înscriere la curs online, iar câmpurile de date disponibile pentru noi sunt {nume, vârstă, ocupație curentă, numele colegiului, numele cursului, metoda de plată, numele fratelui, starea civilă, vehiculul număr}.
După ce ne uităm la câmpurile de date disponibile, vom înțelege că unele dintre câmpuri nu sunt necesare pentru portalul de înscriere la curs, câmpuri precum {numele fratelui, starea civilă, numărul vehiculului} nu sunt necesare pentru înscrierea la curs.
Deci, trebuie să fim specifici și să alegem doar datele relevante. Acum, câmpurile necesare sunt {nume, vârstă, ocupație curentă, nume colegiu, nume curs, metodă de plată}, acest lucru reprezintă un exemplu de abstractizare în OOP, deoarece am escortat informații selectate din datele întregi.
Acum, aceste date noi pot fi folosite și pentru alte aplicații, cum ar fi urmărirea stării cursului, înregistrarea finalizării cursului etc. Putem folosi aceleași date fără nicio modificare.
Mulți oameni sunt adesea confuzi în legătură cu abstractizarea și clasa abstractă, deci sunt ambele legate?
O clasă abstractă este diferită de abstractizare, clasele/metodele abstracte sunt create cu intenția de a le implementa în clasa sau subclasa copil. În timp ce abstracția este pur și simplu ascunderea datelor și afișarea numai a datelor relevante prin utilizarea specificatorilor de acces precum public, protejat, privat.
Încapsulare
Încapsularea este legarea membrilor datelor cu variabilele membre. Acest lucru va evita accesul direct al variabilelor, deoarece accesul direct al variabilelor poate încălca confidențialitatea, iar ascunderea implementării nu va fi posibilă.
Este posibil să fi trecut prin unele metode clasice în clasă, cum ar fi set and get, unde metoda set este folosită pentru a actualiza sau aloca o valoare unei variabile, iar metoda get este folosită pentru a citi sau a prelua valoarea unei variabile. Aici putem accesa direct variabilele folosind obiectul acelei clase, dar dacă vrem să facem o variabilă privată, atunci ar trebui să folosim aceste setări și să obținem metode.
Conceptul este simplu, vom face setul și metodele publice, iar variabilele sunt private. Deci variabilele pot fi accesate numai prin metodele publice din afara clasei, deoarece obiectele private nu sunt accesibile în afara clasei, ci accesibile în interiorul clasei. Acest concept de legare sau grupare a variabilelor cu metode se numește încapsulare.
Să aruncăm o privire la un program java simplu pentru a înțelege mai bine acest lucru.
clasa CursÎnregistrare { private String student_name; private String nume_curs; public String getName (){ returnează student_name; } public void setName (nume șir){ acest .student_name=nume; } public String getCourse (){ returnează numele_cursului; } public void setCourse (curs șiruri){ acest .course_name=curs; } } clasă publică pGrad { public static void main (String[] args){ CourseRegistration c= new CourseRegistration(); c.setName( „mithun” ); c.setCourse( „Data Science” ); System.out.println(c.getName()); System.out.println(c.getCourse()); } } |
În codul de mai sus, am creat o clasă CourseRegistration, în care variabilele membre numele studentului și numele cursului sunt private, dar o accesăm într-o altă clasă folosind funcțiile set name și obținem nume. În clasa principală, am creat un obiect de tip CourseRegistration. Inițializam și accesăm variabilele membre folosind funcțiile set și get.
Acum că am văzut definiția și exemplul abstracției, să discutăm avantajele și diferențele dintre abstracție și încapsulare.
Avantajele abstracției
- Confidențialitatea datelor este menținută deoarece numai datele relevante sunt vizibile pentru utilizator.
- Reduce complexitatea codului și crește lizibilitatea.
- Clasa care implementează abstracția poate fi folosită ca clasă părinte prin moștenirea lor, îmbunătățind astfel reutilizarea și reducând dublarea.
Avantajele încapsulării
- Ajută la legarea membrilor de date cu funcțiile membre.
- Îmbunătățește eficiența și ușor de utilizat pentru analiza erorilor.
- Oferă flexibilitate programatorului în controlul accesibilității și transparenței datelor.
Diferența dintre abstracție și încapsulare
Definiție
- Abstracția ascunde detaliile și implementarea codului.
- Încapsularea ascunde datele și controlează vizibilitatea codului.
Fază
- Abstracția este un proces la nivel de design.
- Încapsularea este un proces la nivel de implementare.
Abilitatea pivot
- Abstracția este preocupată de ceea ce poate face o instanță de clasă, în loc de implementarea clasei.
- Încapsularea ajută la legarea datelor și la controlul menținerii transparenței datelor.
Utilizare caz
- Abstracția este un proces la nivel de proiectare și este utilizat pentru a reduce complexitatea în etapa de proiectare a unui proiect.
- Încapsularea este un proces la nivel de implementare și este utilizat pentru a oferi confidențialitate și pentru a menține controlul asupra transparenței datelor în etapa de implementare a unui proiect.
Cum se implementează
- Abstracția poate fi realizată folosind clasa și interfețele în Java.
- Încapsularea este, de asemenea, implementată folosind clase și controlul asupra confidențialității datelor este obținut prin specificarea specificatorilor de acces precum protejat, public, privat.
Învață cursuri de dezvoltare 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
Am trecut prin importanța conceptelor OOP, am înțeles definiția abstractizării și încapsulării. Am parcurs exemplele de abstractizare și încapsulare. Am avut, de asemenea, o privire asupra avantajelor utilizării conceptelor OOP precum abstractizarea și încapsularea. Și, în sfârșit, am trecut prin diferența dintre abstractizare și încapsulare.
Acum că sunteți conștient de definiția și implementarea abstracției, încapsulării, încercați să le implementați în codul dvs. și încercați să reduceți complexitatea codului pe care îl veți scrie de acum înainte!
Dacă sunteți interesat să aflați mai multe despre Java, dezvoltarea full-stack, consultați programul Executive PG de la upGrad și IIIT-B pentru dezvoltarea software full-stack, care este conceput pentru profesioniști care lucrează și oferă peste 500 de ore de formare riguroasă, peste 9 proiecte , și misiuni, statutul de absolvenți IIIT-B, proiecte practice practice și asistență pentru locuri de muncă cu firme de top.
Ce este abstractizarea în programarea orientată pe obiecte?
Abstracția în programarea orientată pe obiect este o tehnică de reprezentare a informațiilor de nivel înalt despre o problemă prin construirea unui obiect. Abstracția este implementată cu ajutorul interfeței, iar implementarea interfeței se face folosind codul propriu-zis. Abstracția este implementată acolo unde detaliile concrete sunt ascunse de modulele consumatoare, oferindu-i o interfață diferită. Abstracția este implementată pentru a ascunde detaliile de implementare ale detaliilor de nivel scăzut. De asemenea, este folosit pentru a ascunde detaliile complexe și pentru a oferi utilizatorului o interfață mai simplă.
Cum funcționează clasele și obiectele în programare?
Clasele și obiectele sunt cele două concepte principale folosite în toate limbajele de programare orientate pe obiecte. Fiecare clasă conține un set de variabile și metode pe care le poate folosi și manipula. Într-un limbaj de programare orientat pe obiecte, toate obiectele dintr-un program au un tip specific, iar variabilele și metodele unui obiect pot fi manipulate doar prin metode de același tip. În majoritatea limbajelor orientate pe obiect, clasa este folosită pentru a crea un obiect și invers. Un program orientat pe obiecte este alcătuit din obiecte, proceduri și tipuri de date. Totul într-un program orientat pe obiecte, inclusiv datele și codul, este un obiect.
Care sunt diferențele dintre încapsulare și abstractizare?
Abstracția este o metodă de a elimina detaliile inutile din cod și de a se concentra asupra părților relevante. De exemplu, în loc să scriem o funcție care înmulțește două numere, putem scrie o funcție „înmulțire” și să o folosim pentru a înmulți orice număr cu orice număr. Abstracția este o modalitate de reprezentare a unor date specifice. Încapsularea este o modalitate de a ascunde complexitatea a ceva și de a expune doar părțile pe care doriți să le expuneți. De exemplu, dacă aveți o clasă care are unul sau mai multe câmpuri private pe care le utilizați pentru a stoca datele, atunci vă aflați în încapsulare. Clasa conține datele și are metode care expun datele publice.