data abstraction c
Alt hvad du behøver at vide om abstraktion i C ++.
I denne C ++ -serie af tutorials lærer vi alle de vigtigste begreber inden for objektorienteret programmering i C ++, der er kendt som de fire søjler i OOP.
- Abstraktion
- Indkapsling
- Arv
- Polymorfisme
I denne vejledning vil vi udforske alt om dataabstraktion i C ++.
=> Klik her for den absolutte C ++ træningsserie.
Hvad du lærer:
- Hvad er abstraktion?
- Implementering af abstraktion i C ++
- Fordele ved abstraktion
- Konklusion
- Anbefalet læsning
Hvad er abstraktion?
Abstraktion er en teknik til objektorienteret programmering, hvor vi skjuler detaljerne i implementeringen for brugeren og kun udsætter en påkrævet grænseflade.
Vi kan tage et virkeligt eksempel på et klimaanlæg (AC). Vi har en fjernbetjening for at styre de forskellige vekselstrømsfunktioner som start, stop, forøgelse / sænkning af temperaturen, kontrol af fugtighed osv. Vi kan styre disse funktioner bare med et ur på en knap, men internt er der en kompleks logik, der er implementeret for at udføre disse funktioner.
Som en slutbruger er det, vi eksponerede for, dog kun fjerngrænsefladen og ikke implementeringsoplysningerne om alle disse funktioner.
Abstraktion er en af de fire søjler i objektorienteret programmering, og næsten alle OOP-løsninger er baseret på abstraktionsprincipperne, dvs. adskillelse af interface og implementeringsdetaljer i programmet.
I ovenstående diagram har vi vist et objekt og dets indhold som en billedlig gengivelse. Vi kan se, at det inderste lag af dette objekt er dets kernefunktionalitet efterfulgt af implementeringsoplysninger.
I OOP er disse to lag (selvom dette i de fleste tilfælde kun er et lag) ikke udsat for omverdenen. Det yderste lag, grænsefladen, er det lag, der leveres til slutbrugeren for at få adgang til objektets funktionalitet.
Som et resultat er eventuelle ændringer foretaget i objektets inderste lag ikke tydelige for en slutbruger, så længe den grænseflade, som brugeren udsættes for, forbliver den samme.
Implementering af abstraktion i C ++
C ++ understøtter abstraktion i stor dybde. I C ++ kan selv de biblioteksfunktioner, vi bruger, betragtes som et eksempel på abstraktion.
Vi kan repræsentere implementeringen af abstraktion i C ++ som følger:
Java programmeringsspørgsmål og svar til skriftlig test
Som vist i ovenstående figur kan vi implementere abstraktion i C ++ på to måder:
# 1) Brug af klasser og adgangsspecifikatorer
En klasse implementeret i C ++ med adgangsspecifikatorer offentlig, privat og beskyttet kan betragtes som en implementering af abstraktion.
Som vi allerede ved, tillader brugen af adgangsspecifikatorer os at kontrollere adgangen til klassemedlemmerne. Vi kan gøre nogle medlemmer private, så de er utilgængelige uden for klassen. Vi kan have nogle medlemmer beskyttet, så de kun er tilgængelige for de afledte klasser. Endelig kan vi offentliggøre nogle medlemmer, så disse medlemmer er tilgængelige uden for klassen.
Ved hjælp af denne opfattelse kan vi implementere abstraktion på en sådan måde, at implementeringsdetaljerne skjules for omverdenen ved hjælp af privat adgangsspecifikator, mens grænsefladen kan eksponeres for omverdenen ved hjælp af den offentlige specifikator.
Derfor kan vi implementere abstraktion i C ++ ved hjælp af en klasse til at samle data og funktioner i en enkelt enhed og bruge adgangsspecifikatorer til at kontrollere adgangen til disse data og funktioner.
Lad os implementere følgende eksempel for at 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 = '< Produktion:
Indtast nummer 1: 10
Indtast nummer2: 20
Summen af de to tal = 30
I ovenstående program har vi en prøveklasse, der har to heltalvariabler, num1 og num2. Det har også to funktioner readNum og displaySum. Datamedlemmernes num1 og num2 samt funktionen readNum er private for klassen.
Funktionen displaySum er offentlig for klassen. I hovedfunktionen opretter vi et objekt med klasseprøve og opkald displaySum, der læser de to numre samt udskriver deres sum.
Dette er abstraktionens implementering. Vi udsætter kun en funktion for offentligheden, mens vi holder de andre datamedlemmer og funktioner under omslag. Selvom dette kun er et eksempel på at demonstrere abstraktion, mens vi implementerer problemer i det virkelige liv, kan vi have mange abstraktionsniveauer i C ++.
# 2) Brug af implementering af headerfil
Vi bruger headerfiler i C ++ - programmet til at importere og bruge foruddefinerede funktioner. Til dette bruger vi #include-direktivet til at inkludere headerfiler i vores program.
For eksempel, i ovenstående program har vi brugt funktionerne cin og cout. Hvad disse funktioner angår, ved vi kun, hvordan vi bruger dem, og hvad er de parametre, de tager.
Vi ved ikke, hvad der foregår i baggrunden, når disse funktioner kaldes, eller hvordan de implementeres i iostream-headerfilen. Dette er en anden måde for abstraktion leveret af C ++.
hvad udfører verificeringsfasen i softwarelevecyklussen?
Vi kender ikke detaljerne i implementeringen af alle de funktioner, vi importerer fra header-filerne.
Her er et andet eksempel til demonstration af abstraktion.
#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 = '< Produktion:
EmpId = 1 Name = Ved
Medarbejderløn = 18245.4

I dette eksempel har vi defineret en klassemedarbejder, der har private detaljer som empId, navn, løndetaljer som grundlæggende og kvoter. Vi definerer også en privat funktion ”calcularSalary”, der beregner lønnen ved hjælp af basis- og kvoter.
Vi har en konstruktør til at initialisere alle data for et bestemt medarbejderobjekt. Vi kalder også funktionen 'calcularSalary' fra konstruktøren for at beregne lønnen til den nuværende medarbejder.
Dernæst har vi en “display” -funktion, der viser empId, navn og løn. I hovedfunktionen opretter vi et objekt for klassemedarbejder og kalder displayfunktionen.
Vi kan tydeligt se det abstraktionsniveau, vi har givet i dette program. Vi har skjult alle medarbejderoplysningerne samt beregnerSalary-funktionen for brugeren ved at gøre dem private.
Vi har kun eksponeret en funktionsvisning for brugeren, der giver alle oplysninger om medarbejderobjekt til brugeren og på samme tid skjuler den også detaljer som private data, og hvordan vi beregner medarbejderens løn.
Ved at gøre dette, hvis vi i fremtiden vil tilføje flere detaljer og ændre den måde, hvorpå lønnen beregnes, behøver vi ikke ændre skærmfunktionen. Brugeren vil ikke være opmærksom på disse ændringer.
Fordele ved abstraktion
Nedenfor er nogle af fordelene ved abstraktion.
- Programmøren behøver ikke at skrive lavt niveau kode.
- Abstraktion beskytter den interne implementering mod ondsindet brug og fejl.
- Abstraktion kan forhindre duplikering af kode, og derfor skal programmøren udføre de samme opgaver igen og igen.
- Abstraktion fremmer genbrug af kode og klassificerer klassedatamedlemmer korrekt.
- Programmøren kan ændre de interne detaljer i klasseimplementeringen uden kendskab til slutbrugeren og derved uden at påvirke de ydre lagoperationer.
Konklusion
Abstraktion er et af de vigtigste begreber i OOP og implementeres i en stor dybde i C ++. Ved hjælp af abstraktion kan vi holde implementeringsoplysningerne om programmet under omslag og kun udsætte de detaljer, vi ønsker, for omverdenen.
Ved at bruge abstraktionskonceptet kan vi designe abstrakte datatyper og klasser, der fungerer som et skelet til programmeringsløsningen, hvorpå en hel løsning er bygget. Når vi udvikler os gennem OOP-emnerne, lærer vi mere om disse typer og klasser.
I vores kommende tutorials lærer vi om en anden søjle i OOP, dvs. indkapsling. Vi vil også veje abstraktion og indkapsling sammen der.
=> Se efter hele C ++ træningsserien her.
Anbefalet læsning
- C ++ datatyper
- Indkapsling i C ++
- Top 10 datavidenskabsværktøjer i 2021 til at fjerne programmering
- Objektorienteret programmering i C ++
- Introduktion til datastrukturer i C ++
- 70+ BEST C ++ tutorials til at lære C ++ programmering GRATIS
- JMeter-dataparameterisering ved hjælp af brugerdefinerede variabler
- 10+ bedste dataindsamlingsværktøjer med strategier til dataindsamling