data abstraction c
Sve što trebate znati o apstrakciji na jeziku C ++.
U ovoj C ++ seriji tutorijala naučit ćemo sve glavne koncepte objektno orijentiranog programiranja na C ++-u koji su poznati kao četiri stupa OOP-a.
- Apstrakcija
- Kapsulacija
- Nasljeđivanje
- Polimorfizam
U ovom uputstvu istražit ćemo sve o apstrakciji podataka u jeziku C ++.
=> Kliknite ovdje za apsolutnu C ++ seriju treninga.
Što ćete naučiti:
- Što je apstrakcija?
- Implementacija apstrakcije u C ++
- Prednosti apstrakcije
- Zaključak
- Preporučena literatura
Što je apstrakcija?
Apstrakcija je tehnika objektno orijentiranog programiranja pomoću koje skrivamo detalje implementacije od korisnika i izlažemo samo potrebno sučelje.
Možemo uzeti stvarni primjer klima uređaja (AC). Imamo daljinski upravljač za upravljanje raznim AC funkcijama poput pokretanja, zaustavljanja, povećanja / smanjenja temperature, kontrole vlažnosti itd. Ovim funkcijama možemo upravljati samo pritiskom na sat, ali interno postoji složena logika koja je implementiran za obavljanje ovih funkcija.
Međutim, kao krajnjem korisniku, ono čemu smo bili izloženi je samo udaljeno sučelje, a ne i detalji o implementaciji svih ovih funkcija.
Apstrakcija je jedan od četiri stupa objektno orijentiranog programiranja i gotovo se sva OOP rješenja temelje na principima apstrakcije, tj. Odvajanju detalja sučelja i implementacije u programu.
U gornjem dijagramu prikazali smo objekt i njegov sadržaj kao slikovni prikaz. Vidimo da je najunutarnjiji sloj ovog objekta njegova osnovna funkcionalnost praćena detaljima implementacije.
U OOP-u ova dva sloja (iako je u većini slučajeva ovo samo jedan sloj) nisu izložena vanjskom svijetu. Najudaljeniji sloj, sučelje, je sloj koji je predviđen za krajnjeg korisnika kako bi pristupio funkcionalnosti objekta.
Kao rezultat toga, sve promjene izvršene na najunutarnjim slojevima objekta nisu vidljive krajnjem korisniku sve dok sučelje kojem je korisnik izložen ostaje isto.
Implementacija apstrakcije u C ++
C ++ podržava apstrakciju na velikoj dubini. U C ++-u se čak i funkcije knjižnice koje koristimo mogu smatrati primjerom apstrakcije.
Implementaciju apstrakcije u C ++ možemo prikazati na sljedeći način:
Kao što je prikazano na gornjoj slici, apstrakciju u C ++ možemo implementirati na dva načina:
# 1) Korištenje klasa i specifikacija pristupa
Klasa implementirana u C ++ s pristupnim specifikatorima javni, privatni i zaštićeni može se smatrati provedbom apstrakcije.
Kao što već znamo, upotreba specifikatora pristupa omogućuje nam kontrolu pristupa koji se daje članovima razreda. Neke članove možemo učiniti privatnima kako bi bili nepristupačni izvan razreda. Neke članove možemo zaštititi tako da budu dostupni samo izvedenim klasama. Na kraju, neke članove možemo učiniti javnima kako bi ti članovi bili dostupni izvan razreda.
Koristeći ovaj pojam, apstrakciju možemo implementirati na takav način da su detalji implementacije skriveni od vanjskog svijeta korištenjem privatnog specifikatora pristupa, dok sučelje može biti izloženo vanjskom svijetu pomoću javnog specifikatora.
Stoga apstrakciju možemo implementirati u C ++, koristeći klasu za grupiranje podataka i funkcija u jednu jedinicu, a pomoću specifikacija pristupa za kontrolu pristupa tim podacima i funkcijama.
Primijenimo sljedeći primjer da to pokažemo.
#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 = '< Izlaz:
Unesite broj1: 10
Unesite broj2: 20
Zbroj dva broja = 30
U gore navedenom programu imamo klasu uzorka koja ima dvije cjelobrojne varijable, num1 i num2. Također ima dvije funkcije readNum i displaySum. Num1 i num2 članova podataka, kao i funkcija readNum, privatni su za klasu.
Funkcija displaySum je javna za razred. U glavnoj funkciji stvaramo objekt klase sample i pozivamo displaySum koji čita dva broja kao i ispisuje njihov zbroj.
Ovo je primjena apstrakcije. Javnosti izlažemo samo jednu funkciju, a ostale članove i funkcije podataka držimo u tajnosti. Iako je ovo samo primjer za pokazivanje apstrakcije, dok implementiramo probleme iz stvarnog života, u C ++ možemo imati mnoge razine apstrakcije.
# 2) Korištenje implementacije datoteke zaglavlja
Datoteke zaglavlja u programu C ++ koristimo za uvoz i upotrebu unaprijed definiranih funkcija. U tu svrhu koristimo direktivu #include za uključivanje datoteka zaglavlja u naš program.
Na primjer, u gore navedenom programu koristili smo funkcije cin i cout. Što se tiče ovih funkcija, mi znamo samo kako ih koristiti i koji su parametri koje uzimaju.
Ne znamo što se događa u pozadini kada se te funkcije pozivaju niti kako se implementiraju u datoteku zaglavlja iostream. Ovo je još jedan način apstrakcije koji pruža C ++.
Ne znamo detalje implementacije svih funkcija koje uvozimo iz zaglavnih datoteka.
Evo još jednog primjera za demonstraciju apstrakcije.
#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 = '< Izlaz:
EmpId = 1 Ime = Ved
Plaća zaposlenika = 18245,4

U ovom smo primjeru definirali zaposlenika u razredu koji ima privatne detalje kao što su empId, ime, detalje o plaći kao što su osnovne i naknade. Također definiramo privatnu funkciju 'izračunaj plaću' koja izračunava plaću koristeći osnovne i naknade.
Imamo konstruktor za inicijalizaciju svih podataka za određeni objekt zaposlenika. Funkciju 'izračunaj platu' nazivamo i konstruktor za izračunavanje plaće trenutnog zaposlenika.
Dalje, imamo funkciju 'prikaz' koja prikazuje ispražnjeno, ime i plaću. U glavnoj funkciji kreiramo objekt zaposlenika klase i pozivamo funkciju prikaza.
Jasno možemo vidjeti razinu apstrakcije koju smo pružili u ovom programu. Sakrili smo sve detalje o zaposleniku, kao i funkciju izračun plaće od korisnika čineći ih privatnima.
kako izgraditi sigurnu mrežu
Korisniku smo izložili samo jedan prikaz funkcije koji korisniku daje sve informacije o predmetu zaposlenika, a istovremeno skriva i detalje poput privatnih podataka i načina na koji izračunavamo plaću zaposlenika.
Čineći to, u budućnosti, ako želimo dodati više detalja i promijeniti način na koji se izračunava plaća, ne moramo mijenjati funkciju prikaza. Korisnik neće biti svjestan ovih promjena.
Prednosti apstrakcije
U nastavku su navedene neke od prednosti apstrakcije.
- Programer ne mora pisati kod niske razine.
- Apstrakcija štiti internu implementaciju od zlonamjerne upotrebe i pogrešaka.
- Apstrakcija može spriječiti dupliciranje koda pa programer mora iznova izvoditi iste zadatke.
- Apstrakcija promiče ponovnu upotrebu koda i pravilno klasificira članove podataka klase.
- Programer može promijeniti interne detalje implementacije klase bez znanja krajnjeg korisnika, a time bez utjecaja na operacije vanjskog sloja.
Zaključak
Apstrakcija je jedan od najvažnijih koncepata u OOP-u i implementira se na velikoj dubini u C ++. Korištenjem apstrakcije možemo detalje o provedbi programa držati u tajnosti, a detalje koje želimo izložiti samo vanjskom svijetu.
Korištenjem koncepta apstrakcije možemo dizajnirati apstraktne tipove podataka i klase koji djeluju kao kostur programskog rješenja na vrhu kojeg je izgrađeno cijelo rješenje. Kako napredujemo kroz OOP teme, naučit ćemo više o tim vrstama i razredima.
U našim predstojećim vodičima saznat ćemo o drugom stupu OOP-a, tj. Kapsuliranju. Tamo ćemo također zajedno izvagati apstrakciju i inkapsulaciju.
=> Ovdje potražite cijelu C ++ seriju treninga.
Preporučena literatura
- Vrste podataka C ++
- Inkapsulacija u C ++
- 10 najboljih alata za znanost o podacima 2021. za uklanjanje programiranja
- Objektno orijentirano programiranje na jeziku C ++
- Uvod u strukture podataka na C ++
- 70+ NAJBOLJIH Vodiča za C ++ za BESPLATNO učenje C ++ programiranja
- JMeter parametalizacija podataka korištenjem korisnički definiranih varijabli
- 10+ najboljih alata za prikupljanje podataka sa strategijama prikupljanja podataka