data abstraction c
Tot el que heu de saber sobre l'abstracció a C ++.
En aquesta sèrie de tutorials C ++, aprendrem tots els conceptes principals de la programació orientada a objectes en C ++, que es coneixen com els quatre pilars de l'OOP.
com puc obrir un fitxer de dades en un Mac
- Abstracció
- Encapsulació
- Herència
- Polimorfisme
En aquest tutorial, explorarem tot sobre l'abstracció de dades en C ++.
=> Feu clic aquí per obtenir la sèrie de formació Absolute C ++.
Què aprendreu:
- Què és l'abstracció?
- Implementació de l’abstracció en C ++
- Avantatges de l’abstracció
- Conclusió
- Lectura recomanada
Què és l'abstracció?
L’abstracció és una tècnica de programació orientada a objectes mitjançant la qual ocultem els detalls de la implementació de l’usuari i només exposem la interfície necessària.
Podem prendre un exemple de la vida real d’un aire condicionat (AC). Disposem d’un control remot per controlar les diverses funcions de CA com iniciar, aturar, augmentar / disminuir la temperatura, controlar la humitat, etc. Podem controlar aquestes funcions només amb un rellotge de botó, però internament hi ha una lògica complexa que és implementat per realitzar aquestes funcions.
Tanmateix, com a usuari final, el que exposàvem és només la interfície remota i no els detalls d’implementació de totes aquestes funcions.
L’abstracció és un dels quatre pilars de la programació orientada a objectes i gairebé totes les solucions OOP es basen en els principis d’abstracció, és a dir, la separació de la interfície i els detalls d’implementació del programa.
Al diagrama anterior, hem mostrat un objecte i el seu contingut com a representació pictòrica. Podem veure que la capa més interna d’aquest objecte és la seva funcionalitat bàsica seguida dels detalls de la implementació.
A POO, aquestes dues capes (tot i que en la majoria dels casos es tracta només d’una capa) no estan exposades al món exterior. La capa més externa, la interfície, és la capa que es proporciona a l'usuari final per tal d'accedir a la funcionalitat de l'objecte.
Com a resultat, els canvis realitzats a les capes més internes de l’objecte no són evidents per a l’usuari final sempre que la interfície a la qual estigui exposat sigui la mateixa.
Implementació de l’abstracció en C ++
C ++ admet l'abstracció a gran profunditat. A C ++, fins i tot les funcions de biblioteca que fem servir es poden considerar com un exemple d’abstracció.
Podem representar la implementació de l’abstracció en C ++ de la següent manera:
Com es mostra a la figura anterior, podem implementar l’abstracció en C ++ de dues maneres:
# 1) Ús de classes i especificadors d'accés
Una classe implementada en C ++ amb especificadors d'accés públics, privats i protegits, es pot considerar com una implementació d'abstracció.
Com ja sabem, l’ús d’especificadors d’accés ens permet controlar l’accés donat als membres de la classe. Podem fer que alguns membres siguin privats perquè siguin inaccessibles fora de la classe. Podem tenir alguns membres protegits perquè només siguin accessibles a les classes derivades. Per últim, podem fer públics alguns membres perquè aquests membres siguin accessibles fora de la classe.
Mitjançant aquesta noció, podem implementar l’abstracció de manera que els detalls de la implementació queden amagats del món exterior mitjançant l’ús d’un especificador d’accés privat, mentre que la interfície es pot exposar al món exterior mitjançant l’especificador públic.
Per tant, podem implementar l’abstracció en C ++, utilitzant una classe per agrupar dades i funcions en una sola unitat i utilitzar especificadors d’accés per controlar l’accés a aquestes dades i funcions.
Implantem el següent exemple per demostrar-ho.
#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 = '< Sortida:
Introduïu num1: 10
Introduïu num2: 20
Suma dels dos nombres = 30
Al programa anterior, tenim una classe de mostra que té dues variables enteres, num1 i num2. També té dues funcions readNum i displaySum. Els membres num1 i num2 dels membres de les dades, així com la funció readNum, són privats per a la classe.
La funció displaySum és pública per a la classe. A la funció principal, creem un objecte de mostra de classe i cridem displaySum que llegeix els dos números i n'imprimeix la suma.
Aquesta és la implementació d'abstracció. Exposem només una funció al públic, mentre mantenim els altres membres i funcions de dades de forma conjunta. Tot i que aquest és només un exemple per demostrar l’abstracció, mentre implementem problemes de la vida real, podem tenir molts nivells d’abstracció en C ++.
# 2) Ús de la implementació de fitxers de capçalera
Utilitzem fitxers de capçalera al programa C ++ per importar i utilitzar funcions predefinides. Per a això, fem servir la directiva #include per incloure fitxers de capçalera al nostre programa.
Per exemple, al programa anterior, hem utilitzat les funcions cin i cout. Pel que fa a aquestes funcions, només sabem utilitzar-les i quins són els paràmetres que prenen.
No sabem què passa al fons quan es diuen aquestes funcions ni com s’implementen al fitxer de capçalera iostream. Aquesta és una altra forma d'abstracció proporcionada per C ++.
No coneixem els detalls de la implementació de totes les funcions que importem dels fitxers de capçalera.
Aquí hi ha un altre exemple per demostrar l’abstracció.
#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 = '< Sortida:
EmpId = 1 Nom = Ved
Salari dels empleats = 18245,4

En aquest exemple, hem definit un empleat de la classe que té dades privades com empId, nom, detalls salarials com a base i dietes. També definim una funció privada 'calculateSalary' que calcula el salari utilitzant els subsidis bàsics i.
Tenim un constructor per inicialitzar totes les dades d’un objecte concret de l’empleat. També anomenem la funció 'calculateSalary' del constructor per calcular el salari de l'empleat actual.
A continuació, tenim una funció de 'visualització' que mostra empId, nom i salari. A la funció principal, creem un objecte de la classe empleat i anomenem la funció de visualització.
Podem veure clarament el nivell d’abstracció que hem proporcionat en aquest programa. Hem ocultat totes les dades dels empleats, així com la funció calculateSalary, fent-les privades.
Només hem exposat a l’usuari una pantalla de funcions que proporciona tota la informació sobre l’objecte dels empleats a l’usuari i, al mateix temps, també amaga detalls com dades privades i com calculem el salari de l’empleat.
Preguntes i respostes d’entrevistes informatica durant 5 anys d’experiència
Fent això, en el futur, si volem afegir més detalls i canviar la forma de calcular el salari, no hem de canviar la funció de visualització. L’usuari desconeixerà aquests canvis.
Avantatges de l’abstracció
A continuació es detallen alguns dels avantatges de l’abstracció.
- No cal que el programador escrigui codi de baix nivell.
- L’abstracció protegeix la implementació interna d’errors i ús maliciós.
- L’abstracció pot evitar la duplicació de codi i, per tant, el programador ha de realitzar les mateixes tasques una vegada i una altra.
- L’abstracció promou la reutilització del codi i classifica adequadament els membres de les dades de la classe.
- El programador pot canviar els detalls interns de la implementació de la classe sense el coneixement de l'usuari final, sense afectar les operacions de la capa exterior.
Conclusió
L’abstracció és un dels conceptes més importants de POO i s’implementa a gran profunditat en C ++. Mitjançant l’abstracció, podem mantenir els detalls d’implementació del programa completats i només exposar els detalls que desitgem al món exterior.
Mitjançant l’ús del concepte d’abstracció, podem dissenyar tipus i classes de dades abstractes que actuen com a esquelet de la solució de programació sobre la qual es construeix tota una solució. A mesura que avancem en els temes de POO, anirem aprenent més sobre aquests tipus i classes.
En els nostres propers tutorials, coneixerem un altre pilar de la POO, és a dir, l’encapsulació. També pesarem l’abstracció i l’encapsulació junts allà.
=> Cerqueu aquí tota la sèrie de formació C ++.
Lectura recomanada
- Tipus de dades C ++
- Encapsulació en C ++
- Top 10 de les eines de ciència de dades el 2021 per eliminar la programació
- Programació orientada a objectes en C ++
- Introducció a les estructures de dades en C ++
- 70+ BEST Tutorials C ++ per aprendre programació C ++ GRATIS
- Parametrizació de dades de JMeter mitjançant variables definides per l'usuari
- 10+ millors eines de recopilació de dades amb estratègies de recopilació de dades