data abstraction c
Alles wat u moet weten over abstractie in C ++.
In deze C ++ -serie met tutorials leren we alle belangrijke concepten van objectgeoriënteerd programmeren in C ++, die bekend staan als de vier pijlers van OOP.
- Abstractie
- Inkapseling
- Erfenis
- Polymorfisme
In deze tutorial zullen we alles onderzoeken over data-abstractie in C ++.
Klik hier voor de Absolute C ++ trainingsserie.
Wat je leert:
- Wat is abstractie?
- Implementatie van abstractie in C ++
- Voordelen van abstractie
- Gevolgtrekking
- Aanbevolen literatuur
Wat is abstractie?
Abstractie is een techniek van objectgeoriënteerd programmeren waarbij we de details van de implementatie voor de gebruiker verbergen en alleen een interface blootleggen die nodig is.
We kunnen een realistisch voorbeeld nemen van een airconditioner (AC). We hebben een afstandsbediening om de verschillende AC-functies te bedienen, zoals starten, stoppen, de temperatuur verhogen / verlagen, de luchtvochtigheid regelen, enz. We kunnen deze functies bedienen met een klok van een knop, maar intern is er een complexe logica die is geïmplementeerd om deze functies uit te voeren.
Als eindgebruiker zijn we echter alleen blootgesteld aan de externe interface en niet aan de implementatiedetails van al deze functies.
Abstractie is een van de vier pijlers van objectgeoriënteerd programmeren en bijna alle OOP-oplossingen zijn gebaseerd op de abstractieprincipes, d.w.z. scheiding van interface en implementatiedetails in het programma.
In het bovenstaande diagram hebben we een object en de inhoud ervan als een picturale weergave getoond. We kunnen zien dat de binnenste laag van dit object de kernfunctionaliteit is, gevolgd door de implementatiedetails.
In OOP worden deze twee lagen (hoewel dit in de meeste gevallen slechts één laag is) niet blootgesteld aan de buitenwereld. De buitenste laag, de interface, is de laag die wordt voorzien voor de eindgebruiker om toegang te krijgen tot de functionaliteit van het object.
Als gevolg hiervan zijn wijzigingen die zijn aangebracht in de binnenste lagen van het object niet duidelijk voor een eindgebruiker zolang de interface waaraan de gebruiker wordt blootgesteld hetzelfde blijft.
Implementatie van abstractie in C ++
C ++ ondersteunt abstractie op een grote diepte. In C ++ kunnen zelfs de bibliotheekfuncties die we gebruiken als een voorbeeld van abstractie worden beschouwd.
We kunnen de implementatie van abstractie in C ++ als volgt weergeven:
hoe java-applicatie te maken in eclipse
Zoals te zien is in de bovenstaande afbeelding, kunnen we abstractie in C ++ op twee manieren implementeren:
# 1) Klassen en toegangsspecificaties gebruiken
Een klasse geïmplementeerd in C ++ met toegangsspecificaties public, private en protected, kan worden beschouwd als een implementatie van abstractie.
Zoals we al weten, stelt het gebruik van toegangsspecificaties ons in staat om de toegang die aan de klasleden wordt gegeven te controleren. We kunnen sommige leden privé maken zodat ze niet toegankelijk zijn buiten de klas. We kunnen sommige leden als beschermd hebben, zodat ze alleen toegankelijk zijn voor de afgeleide klassen. Ten slotte kunnen we sommige leden openbaar maken, zodat deze leden ook buiten de klas toegankelijk zijn.
Door dit begrip te gebruiken, kunnen we abstractie op een zodanige manier implementeren dat de implementatiedetails voor de buitenwereld worden verborgen door gebruik te maken van een privétoegangsspecificatie, terwijl de interface kan worden blootgesteld aan de buitenwereld met behulp van de openbare specificatie.
Daarom kunnen we abstractie implementeren in C ++, een klasse gebruiken om gegevens en functies te bundelen in een enkele eenheid en toegangsspecificaties gebruiken om de toegang tot deze gegevens en functies te regelen.
Laten we het volgende voorbeeld implementeren om dit te demonstreren.
Uitgang:
Voer num1: 10 in
Voer num2: 20 in
Som van de twee getallen = 30
In het bovenstaande programma hebben we een voorbeeldklasse met twee integer-variabelen, num1 en num2. Het heeft ook twee functies readNum en displaySum. De num1 en num2 van de gegevensleden, evenals de functie readNum, zijn privé voor de klas.
De functie displaySum is openbaar voor de klas. In de hoofdfunctie maken we een object van class sample en noemen we displaySum dat zowel de twee getallen leest als hun som afdrukt.
Dit is de abstractie-implementatie. We stellen slechts één functie openbaar, terwijl we de andere gegevensleden en functies geheim houden. Hoewel dit slechts een voorbeeld is om abstractie te demonstreren, kunnen we bij het implementeren van echte problemen veel abstractieniveaus hebben in C ++.
# 2) Implementatie van koptekstbestanden gebruiken
We gebruiken header-bestanden in het C ++ -programma om vooraf gedefinieerde functies te importeren en te gebruiken. Hiervoor gebruiken we de # include-richtlijn om header-bestanden in ons programma op te nemen.
Bijvoorbeeld, in het bovenstaande programma hebben we de functies cin en cout gebruikt. Wat deze functies betreft, weten we alleen hoe we ze moeten gebruiken en welke parameters ze gebruiken.
We weten niet wat er op de achtergrond gebeurt wanneer deze functies worden aangeroepen of hoe ze worden geïmplementeerd in het iostream-headerbestand. Dit is een andere manier van abstractie die wordt geboden door C ++.
We kennen niet de details van de implementatie van alle functies die we importeren uit de header-bestanden.
Hier is nog een voorbeeld om abstractie te demonstreren.
Uitgang:
EmpId = 1 Naam = Ved
Salaris van werknemer = 18245,4
In dit voorbeeld hebben we een klassenmedewerker gedefinieerd die privégegevens heeft zoals werk, naam, salarisgegevens zoals basis en toelagen. We definiëren ook een privéfunctie “berekenSalaris” die het salaris berekent op basis van basis- en toelagen.
We hebben een constructor om alle gegevens voor een bepaald werknemersobject te initialiseren. We noemen ook de functie “berekenSalaris” van de constructeur om het salaris van de huidige werknemer te berekenen.
Vervolgens hebben we een 'display' -functie die werk, naam en salaris weergeeft. In de hoofdfunctie maken we een object van klassenmedewerker en roepen we de weergavefunctie aan.
We kunnen duidelijk het abstractieniveau zien dat we in dit programma hebben geboden. We hebben alle werknemersgegevens en de berekeningssalarisfunctie voor de gebruiker verborgen door ze privé te maken.
We hebben slechts één functiedisplay aan de gebruiker getoond dat alle informatie over het object van de werknemer aan de gebruiker geeft en tegelijkertijd ook details verbergt zoals privégegevens en hoe we het salaris van de werknemer berekenen.
Als we dit in de toekomst willen doen, als we meer details willen toevoegen en de manier waarop het salaris wordt berekend, willen wijzigen, hoeven we de weergavefunctie niet te wijzigen. De gebruiker is niet op de hoogte van deze wijzigingen.
Voordelen van abstractie
Hieronder worden enkele van de voordelen van abstractie genoemd.
- De programmeur hoeft geen code op laag niveau te schrijven.
- Abstraction beschermt de interne implementatie tegen kwaadwillig gebruik en fouten.
- Abstractie kan codeduplicatie voorkomen en daarom moet de programmeur dezelfde taken steeds opnieuw uitvoeren.
- Abstraction bevordert het hergebruik van code en classificeert de groepsgegevens op de juiste manier.
- De programmeur kan de interne details van de klasse-implementatie wijzigen zonder medeweten van de eindgebruiker, zonder de bewerkingen van de buitenste laag te beïnvloeden.
Gevolgtrekking
Abstractie is een van de belangrijkste concepten in OOP en wordt diepgaand geïmplementeerd in C ++. Met behulp van abstractie kunnen we de implementatiedetails van het programma geheim houden en alleen de details die we willen aan de buitenwereld blootstellen.
Door gebruik te maken van het abstractieconcept kunnen we abstracte datatypes en klassen ontwerpen die als skelet fungeren voor de programmeeroplossing waarop een volledige oplossing wordt gebouwd. Naarmate we verder komen met de OOP-onderwerpen, zullen we meer leren over deze typen en klassen.
In onze aanstaande tutorials zullen we leren over een andere pijler van OOP, namelijk inkapseling. We zullen daar ook abstractie en inkapseling afwegen.
Zoek hier de volledige C ++ trainingsserie.
Aanbevolen literatuur
- C ++ gegevenstypen
- Inkapseling in C ++
- Top 10 Data Science Tools in 2021 om programmeren te elimineren
- Objectgeoriënteerd programmeren in C ++
- Inleiding tot gegevensstructuren in C ++
- 70+ BESTE C ++ Tutorials om GRATIS C ++ Programmeren te leren
- Parametrering van JMeter-gegevens met behulp van door de gebruiker gedefinieerde variabelen
- 10+ beste tools voor gegevensverzameling met strategieën voor het verzamelen van gegevens