data abstraction c
Tot ce trebuie să știți despre abstractizare în C ++.
În această serie de tutoriale C ++, vom învăța toate conceptele majore ale programării orientate pe obiecte în C ++, cunoscute sub numele de cei patru piloni ai OOP.
- Abstracție
- Incapsularea
- Moştenire
- Polimorfism
În acest tutorial, vom explora totul despre abstractizarea datelor în C ++.
=> Faceți clic aici pentru seria Absolute C ++ Training.
oracle soa întrebări și răspunsuri de interviu pentru experți
Ce veți învăța:
- Ce este abstractizarea?
- Implementarea abstractizării în C ++
- Avantajele abstractizării
- Concluzie
- Lectură recomandată
Ce este abstractizarea?
Abstracția este o tehnică de programare orientată pe obiecte folosind care ascundem detaliile implementării de la utilizator și expunem doar o interfață care este necesară.
Putem lua un exemplu din viața reală a unui aparat de aer condiționat (AC). Avem o telecomandă pentru a controla diferitele funcții de CA, cum ar fi pornirea, oprirea, creșterea / scăderea temperaturii, controlul umidității etc. Putem controla aceste funcții doar cu un ceas de buton, dar intern există o logică complexă care este implementat pentru a îndeplini aceste funcții.
Cu toate acestea, ca utilizator final, la ce ne-am expus este doar interfața la distanță și nu detaliile de implementare a tuturor acestor funcții.
Abstracția este unul dintre cei patru piloni ai programării orientate obiect și aproape toate soluțiile OOP se bazează pe principiile de abstractizare, adică separarea interfeței și detaliile de implementare în program.
În diagrama de mai sus, am arătat un obiect și conținutul acestuia ca reprezentare picturală. Putem vedea că stratul cel mai interior al acestui obiect este funcționalitatea sa principală, urmată de detaliile implementării.
În POO, aceste două straturi (deși în majoritatea cazurilor acesta este doar un singur strat) nu sunt expuse lumii exterioare. Stratul cel mai exterior, interfața, este stratul care este furnizat utilizatorului final pentru a accesa funcționalitatea obiectului.
Ca rezultat, orice schimbări aduse straturilor cele mai interioare ale obiectului nu sunt evidente pentru un utilizator final atâta timp cât interfața la care este expus utilizatorul rămâne aceeași.
Implementarea abstractizării în C ++
C ++ suportă abstractizarea la o adâncime mare. În C ++, chiar și funcțiile de bibliotecă pe care le folosim pot fi considerate ca un exemplu de abstractizare.
Putem reprezenta implementarea abstractizării în C ++ după cum urmează:
După cum se arată în figura de mai sus, putem implementa abstractizarea în C ++ în două moduri:
# 1) Utilizarea claselor și a specificațiilor de acces
O clasă implementată în C ++ cu specificatori de acces public, privat și protejat, poate fi considerată ca o implementare a abstractizării.
îmbinare stângă versus îmbinare exterioară stângă
După cum știm deja, utilizarea specificatorilor de acces ne permite să controlăm accesul acordat membrilor clasei. Putem face unii membri privați, astfel încât să fie inaccesibili în afara clasei. Putem avea unii membri protejați, astfel încât să fie accesibile doar pentru clasele derivate. În cele din urmă, putem face publici unii membri, astfel încât acești membri să fie accesibile în afara clasei.
Folosind această noțiune, putem implementa abstractizarea în așa fel încât detaliile de implementare să fie ascunse de lumea exterioară utilizând un identificator de acces privat, în timp ce interfața poate fi expusă lumii exterioare utilizând specificatorul public.
Prin urmare, putem implementa abstractizarea în C ++, folosind o clasă pentru a grupa date și funcții într-o singură unitate și folosind specificatori de acces pentru a controla accesul la aceste date și funcții.
Să implementăm următorul exemplu pentru a demonstra acest lucru.
#include #include using namespace std; class sample { int num1,num2; void readNum(){ cout<>num1; cout<>num2; } public: void displaySum() { readNum(); cout<<'
Sum of the two numbers = '< Ieșire:
Introduceți num1: 10
Introduceți num2: 20
Suma celor două numere = 30
În programul de mai sus, avem o clasă eșantion care are două variabile întregi, num1 și num2. De asemenea, are două funcții readNum și displaySum. Num1 și num2 ai membrilor de date, precum și funcția readNum, sunt private pentru clasă.
Funcția displaySum este publică pentru clasă. În funcția principală, creăm un obiect de eșantion de clasă și apelăm displaySum care citește cele două numere, precum și le imprimă suma.
Aceasta este implementarea abstractizării. Expunem publicului o singură funcție, păstrând în același timp ceilalți membri și funcții de date. Deși acesta este doar un exemplu pentru a demonstra abstractizarea, în timp ce implementăm probleme din viața reală, putem avea multe niveluri de abstractizare în C ++.
# 2) Utilizarea implementării fișierului antet
Folosim fișiere antet în programul C ++ pentru a importa și utiliza funcții predefinite. Pentru aceasta, folosim directiva #include pentru a include fișierele antet în programul nostru.
De exemplu, în programul de mai sus, am folosit funcțiile cin și cout. În ceea ce privește aceste funcții, știm doar să le folosim și care sunt parametrii pe care îi iau.
Nu știm ce se întâmplă în fundal când sunt apelate aceste funcții sau cum sunt implementate în fișierul antet iostream. Acesta este un alt mod de abstractizare oferit de C ++.
Nu cunoaștem detaliile implementării tuturor funcțiilor pe care le importăm din fișierele antet.
Iată un alt exemplu pentru a demonstra abstractizarea.
#include #include using namespace std; class employee{ int empId; string name; double salary,basic,allowances; double calculateSalary(int empId){ salary = basic+allowances; return salary; } public: employee(int empId, string name,double basic,double allowances): empId(empId),name(name),basic(basic),allowances(allowances){ calculateSalary(empId); } void display(){ cout<<'EmpId = '< Ieșire:
cum se convertește un caracter într-un șir c ++
EmpId = 1 Nume = Ved
Salariul angajaților = 18245,4
În acest exemplu, am definit un angajat de clasă care are detalii private precum empId, nume, detalii salariale precum de bază și indemnizații. De asemenea, definim o funcție privată „calculateSalary” care calculează salariul utilizând alocațiile de bază și.
Avem un constructor pentru a inițializa toate datele pentru un anumit obiect angajat. De asemenea, numim funcția „calculateSalary” din constructor pentru a calcula salariul angajatului curent.
Apoi, avem o funcție de „afișare” care afișează empId, numele și salariul. În funcția principală, creăm un obiect al clasei angajat și apelăm funcția de afișare.
Putem vedea clar nivelul de abstractizare pe care l-am oferit în acest program. Am ascuns utilizatorului toate detaliile angajaților, precum și funcția calculateSalary, făcându-le private.
Am expus utilizatorului o singură afișare de funcții care oferă utilizatorului toate informațiile despre obiectul angajatului și, în același timp, ascunde detalii precum datele private și modul în care calculăm salariul angajatului.
Făcând acest lucru, în viitor, dacă dorim să adăugăm mai multe detalii și să schimbăm modul în care este calculat salariul, nu trebuie să schimbăm funcția de afișare. Utilizatorul nu va fi conștient de aceste modificări.
Avantajele abstractizării
Mai jos sunt enumerate câteva dintre avantajele abstractizării.
- Programatorul nu trebuie să scrie cod de nivel scăzut.
- Abstracția protejează implementarea internă împotriva utilizării rău intenționate și a erorilor.
- Abstracția poate preveni duplicarea codului și, prin urmare, programatorul trebuie să îndeplinească aceleași sarcini din nou și din nou.
- Abstracția promovează refolosirea codului și clasifică corect membrii clasei.
- Programatorul poate modifica detaliile interne ale implementării clasei fără cunoștința utilizatorului final, fără a afecta astfel operațiile stratului exterior.
Concluzie
Abstracția este unul dintre cele mai importante concepte din POO și este implementată la o profunzime mare în C ++. Folosind abstracția, putem păstra detaliile de implementare ale programului și expunem doar detaliile dorite pentru lumea exterioară.
Folosind conceptul de abstractizare, putem proiecta tipuri și clase de date abstracte care acționează ca un schelet pentru soluția de programare pe care este construită o întreagă soluție. Pe măsură ce progresăm subiectele OOP, vom afla mai multe despre aceste tipuri și clase.
În tutorialele noastre viitoare, vom afla despre un alt pilon al POO și anume încapsularea. De asemenea, vom cântări împreună abstractizarea și încapsularea.
=> Căutați întreaga serie de formare C ++ aici.
Lectură recomandată
- Tipuri de date C ++
- Incapsulare în C ++
- Top 10 instrumente pentru știința datelor în 2021 pentru eliminarea programării
- Programare orientată pe obiecte în C ++
- Introducere în structurile de date în C ++
- 70+ BEST Tutoriale C ++ Pentru a învăța programarea C ++ GRATUIT
- Parametrizarea datelor JMeter folosind variabile definite de utilizator
- Cele mai bune 10 instrumente de colectare a datelor cu strategii de colectare a datelor