data abstraction c
Alt du trenger å vite om abstraksjon i C ++.
I denne C ++ -serien med opplæringsprogrammer vil vi lære alle de viktigste konseptene for objektorientert programmering i C ++, som er kjent som de fire søylene i OOP.
- Abstraksjon
- Innkapsling
- Arv
- Polymorfisme
I denne opplæringen vil vi utforske alt om dataabstrahering i C ++.
=> Klikk her for den absolutte C ++ treningsserien.
Hva du vil lære:
- Hva er abstraksjon?
- Implementering av abstraksjon i C ++
- Fordeler med abstraksjon
- Konklusjon
- Anbefalt lesing
Hva er abstraksjon?
Abstraksjon er en teknikk for objektorientert programmering der vi skjuler detaljene for implementering for brukeren og bare avslører et nødvendig grensesnitt.
Vi kan ta et reelt eksempel på et klimaanlegg (AC). Vi har en fjernkontroll for å kontrollere de forskjellige vekselstrømsfunksjonene som start, stopp, økning / reduksjon av temperatur, kontroll av fuktighet osv. Vi kan kontrollere disse funksjonene bare med en klokke på en knapp, men internt er det en kompleks logikk som er implementert for å utføre disse funksjonene.
Imidlertid, som sluttbruker, er det vi utsatte for bare det eksterne grensesnittet og ikke implementeringsdetaljene for alle disse funksjonene.
hvordan bli en tester for produkter
Abstraksjon er en av de fire søylene i objektorientert programmering, og nesten alle OOP-løsningene er basert på abstraksjonsprinsippene, dvs. separasjon av grensesnitt og implementeringsdetaljer i programmet.
I diagrammet ovenfor har vi vist et objekt og dets innhold som en billedlig fremstilling. Vi kan se at det innerste laget av dette objektet er kjernefunksjonaliteten etterfulgt av implementeringsdetaljene.
I OOP er disse to lagene (selv om dette i de fleste tilfeller bare er ett lag) ikke utsatt for omverdenen. Det ytterste laget, grensesnittet, er laget som blir gitt til sluttbrukeren for å få tilgang til funksjonaliteten til objektet.
Som et resultat er eventuelle endringer i de innerste lagene av objektet ikke tydelige for en sluttbruker så lenge grensesnittet som brukeren blir utsatt for forblir det samme.
Implementering av abstraksjon i C ++
C ++ støtter abstraksjon i stor dybde. I C ++ kan selv biblioteksfunksjonene vi bruker betraktes som et eksempel på abstraksjon.
Vi kan representere implementeringen av abstraksjon i C ++ som følger:
Som vist i figuren ovenfor kan vi implementere abstraksjon i C ++ på to måter:
# 1) Bruk av klasser og tilgangsspesifikatorer
En klasse implementert i C ++ med tilgangsspesifikatorer offentlig, privat og beskyttet, kan betraktes som en implementering av abstraksjon.
Som vi allerede vet, tillater bruken av tilgangsspesifikatorer oss å kontrollere tilgangen til klassemedlemmene. Vi kan gjøre noen medlemmer private slik at de er utilgjengelige utenfor klassen. Vi kan ha noen medlemmer beskyttet slik at de bare er tilgjengelige for de avledede klassene. Til slutt kan vi gjøre noen medlemmer offentlige slik at disse medlemmene er tilgjengelige utenfor klassen.
Ved å bruke denne forestillingen kan vi implementere abstraksjon på en slik måte at implementeringsdetaljene er skjult for omverdenen ved å bruke privat tilgangsspesifikator mens grensesnittet kan eksponeres for omverdenen ved hjelp av det offentlige spesifiseringssystemet.
hvordan åpne swf-filer på Windows 7
Derfor kan vi implementere abstraksjon i C ++, ved hjelp av en klasse for å samle data og funksjoner i en enkelt enhet og bruke tilgangsspesifikatorer for å kontrollere tilgang til disse dataene og funksjonene.
La oss implementere følgende eksempel for å demonstrere dette.
#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 = '< Produksjon:
Skriv inn nummer1: 10
Skriv inn nummer2: 20
Summen av de to tallene = 30
I programmet ovenfor har vi en prøveklasse som har to heltallvariabler, num1 og num2. Den har også to funksjoner readNum og displaySum. Datamedlemmenes num1 og num2, samt funksjonen readNum, er private for klassen.
Funksjonen displaySum er offentlig for klassen. I hovedfunksjonen lager vi et objekt med klasseprøve og anrop displaySum som leser de to tallene, samt skriver ut summen.
Dette er abstraksjonsimplementeringen. Vi utsetter bare en funksjon for publikum mens vi holder de andre datamedlemmene og funksjonene under omslag. Selv om dette bare er et eksempel for å demonstrere abstraksjon, mens vi implementerer virkelige problemer, kan vi ha mange nivåer av abstraksjon i C ++.
# 2) Bruk av implementering av headerfil
Vi bruker headerfiler i C ++ - programmet for å importere og bruke forhåndsdefinerte funksjoner. For dette bruker vi #include-direktivet for å inkludere headerfiler i programmet vårt.
For eksempel, i programmet ovenfor har vi brukt funksjonene cin og cout. Når det gjelder disse funksjonene, vet vi bare hvordan du bruker dem og hva er parametrene de tar.
Vi vet ikke hva som skjer i bakgrunnen når disse funksjonene kalles eller hvordan de implementeres i iostream header-fil. Dette er en annen måte for abstraksjon levert av C ++.
Vi kjenner ikke detaljene til implementeringen av alle funksjonene vi importerer fra headerfilene.
Her er et annet eksempel for å demonstrere abstraksjon.
#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 = '< Produksjon:
EmpId = 1 Navn = Ved
Lønn til ansatte = 18245.4

verktøy for å overvåke CPU-temp og viftehastighet
I dette eksemplet har vi definert en klassemedarbeider som har private detaljer som empId, navn, lønnsdetaljer som grunnleggende og kvoter. Vi definerer også en privat funksjon “calcnalary” som beregner lønnen ved hjelp av basis- og kvoter.
Vi har en konstruktør til å initialisere alle dataene for et bestemt ansattobjekt. Vi kaller også funksjonen for “beregne Salar” fra konstruktøren for å beregne lønnen til den nåværende ansatte.
Deretter har vi en “display” -funksjon som viser empId, navn og lønn. I hovedfunksjonen lager vi et objekt av klassemedarbeider og kaller displayfunksjonen.
Vi kan tydelig se nivået på abstraksjonen vi har gitt i dette programmet. Vi har skjult alle medarbeideropplysningene, samt beregner lønnsfunksjonen for brukeren ved å gjøre dem private.
Vi har bare eksponert en funksjonsvisning for brukeren som gir all informasjon om ansattes objekt til brukeren, og samtidig skjuler det også detaljer som private data og hvordan vi beregner lønnen til den ansatte.
Ved å gjøre dette, hvis vi ønsker å legge til flere detaljer og endre måten lønnen beregnes på i fremtiden, trenger vi ikke å endre visningsfunksjonen. Brukeren vil ikke være klar over disse endringene.
Fordeler med abstraksjon
Nedenfor er noen av fordelene med abstraksjon.
- Programmereren trenger ikke skrive kode på lavt nivå.
- Abstraksjon beskytter den interne implementeringen mot ondsinnet bruk og feil.
- Abstraksjon kan forhindre duplisering av kode, og dermed må programmereren utføre de samme oppgavene om og om igjen.
- Abstraksjon fremmer kodebruk og klassifiserer klassedatamedlemmene riktig.
- Programmereren kan endre de interne detaljene i klasseimplementeringen uten kjennskap til sluttbrukeren, uten å påvirke ytre lagoperasjoner.
Konklusjon
Abstraksjon er et av de viktigste begrepene i OOP og er implementert i stor dybde i C ++. Ved hjelp av abstraksjon kan vi holde implementeringsdetaljene for programmet under innpakning og bare avsløre detaljene vi ønsker for omverdenen.
Ved å bruke abstraksjonskonseptet kan vi designe abstrakte datatyper og klasser som fungerer som et skjelett til programmeringsløsningen som en hel løsning er bygget på. Når vi går gjennom OOP-emnene, vil vi lære mer om disse typene og klassene.
I våre kommende veiledninger vil vi lære om en annen søyle i OOP, dvs. innkapsling. Vi vil også veie abstraksjon og innkapsling sammen der.
=> Se etter hele C ++ treningsserien her.
Anbefalt lesing
- C ++ datatyper
- Innkapsling i C ++
- Topp 10 Data Science-verktøy i 2021 for å eliminere programmering
- Objektorientert programmering i C ++
- Introduksjon til datastrukturer i C ++
- 70+ BEST C ++ opplæringsprogrammer for å lære C ++ programmering GRATIS
- JMeter-dataparameterisering ved bruk av brukerdefinerte variabler
- 10+ beste datainnsamlingsverktøy med strategier for datainnsamling