data abstraction c
Tout ce que vous devez savoir sur l'abstraction en C ++.
Dans cette série de didacticiels C ++, nous allons apprendre tous les principaux concepts de la programmation orientée objet en C ++, connus sous le nom de quatre piliers de la POO.
- Abstraction
- Encapsulation
- Héritage
- Polymorphisme
Dans ce didacticiel, nous explorerons tout sur l'abstraction des données en C ++.
=> Cliquez ici pour la série de formations Absolute C ++.
Ce que vous apprendrez:
- Qu'est-ce que l'abstraction?
- Implémentation de l'abstraction en C ++
- Avantages de l'abstraction
- Conclusion
- lecture recommandée
Qu'est-ce que l'abstraction?
L'abstraction est une technique de programmation orientée objet à l'aide de laquelle nous cachons les détails de l'implémentation à l'utilisateur et n'exposons qu'une interface qui est requise.
Nous pouvons prendre un exemple réel d'un climatiseur (AC). Nous avons une télécommande afin de contrôler les différentes fonctions AC comme démarrer, arrêter, augmenter / diminuer la température, contrôler l'humidité, etc. Nous pouvons contrôler ces fonctions simplement avec une horloge d'un bouton mais en interne il y a une logique complexe qui est mis en œuvre pour exécuter ces fonctions.
Cependant, en tant qu'utilisateur final, nous n'avons exposé que l'interface distante et non les détails d'implémentation de toutes ces fonctions.
L'abstraction est l'un des quatre piliers de la programmation orientée objet et presque toutes les solutions OOP sont basées sur les principes d'abstraction, c'est-à-dire la séparation de l'interface et des détails d'implémentation dans le programme.
Dans le diagramme ci-dessus, nous avons montré un objet et son contenu sous forme de représentation picturale. Nous pouvons voir que la couche la plus interne de cet objet est sa fonctionnalité de base suivie des détails d'implémentation.
En POO, ces deux couches (bien que dans la plupart des cas ce ne soit qu'une couche) ne sont pas exposées au monde extérieur. La couche la plus externe, l'interface, est la couche qui est fournie à l'utilisateur final afin d'accéder aux fonctionnalités de l'objet.
En conséquence, les modifications apportées aux couches les plus internes de l'objet ne sont pas évidentes pour un utilisateur final tant que l'interface à laquelle l'utilisateur est exposé reste la même.
Implémentation de l'abstraction en C ++
C ++ prend en charge l'abstraction à une grande profondeur. En C ++, même les fonctions de bibliothèque que nous utilisons peuvent être considérées comme un exemple d'abstraction.
Nous pouvons représenter l'implémentation de l'abstraction en C ++ comme suit:
Comme le montre la figure ci-dessus, nous pouvons implémenter l'abstraction en C ++ de deux manières:
# 1) Utilisation des classes et des spécificateurs d'accès
Une classe implémentée en C ++ avec des spécificateurs d'accès public, privé et protégé, peut être considérée comme une implémentation d'abstraction.
comment utiliser assert dans sélénium webdriver
Comme nous le savons déjà, l'utilisation de spécificateurs d'accès nous permet de contrôler l'accès donné aux membres de la classe. Nous pouvons rendre certains membres privés afin qu'ils soient inaccessibles en dehors de la classe. Nous pouvons avoir certains membres comme protégés afin qu'ils ne soient accessibles qu'aux classes dérivées. Enfin, nous pouvons rendre certains membres publics afin que ces membres soient accessibles en dehors de la classe.
En utilisant cette notion, nous pouvons implémenter l'abstraction de telle manière que les détails d'implémentation soient cachés du monde extérieur en utilisant un spécificateur d'accès privé tandis que l'interface peut être exposée au monde extérieur à l'aide du spécificateur public.
Par conséquent, nous pouvons implémenter l'abstraction en C ++, en utilisant une classe pour regrouper les données et les fonctions dans une seule unité et en utilisant des spécificateurs d'accès pour contrôler l'accès à ces données et fonctions.
Implémentons l'exemple suivant pour le démontrer.
#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 = '< Production:
Entrez num1: 10
Entrez num2: 20
Somme des deux nombres = 30
Dans le programme ci-dessus, nous avons un exemple de classe qui a deux variables entières, num1 et num2. Il a également deux fonctions readNum et displaySum. Les données num1 et num2 des membres de données, ainsi que la fonction readNum, sont privées pour la classe.
La fonction displaySum est publique pour la classe. Dans la fonction principale, nous créons un objet de classe sample et appelons displaySum qui lit les deux nombres et imprime leur somme.
Ceci est l'implémentation de l'abstraction. Nous exposons une seule fonction au public tout en gardant les autres membres de données et fonctions cachés. Bien que ce ne soit qu'un exemple pour démontrer l'abstraction, tout en implémentant des problèmes réels, nous pouvons avoir de nombreux niveaux d'abstraction en C ++.
# 2) Utilisation de l'implémentation du fichier d'en-tête
Nous utilisons des fichiers d'en-tête dans le programme C ++ pour importer et utiliser des fonctions prédéfinies. Pour cela, nous utilisons la directive #include pour inclure les fichiers d'en-tête dans notre programme.
Par exemple, dans le programme ci-dessus, nous avons utilisé les fonctions cin et cout. En ce qui concerne ces fonctions, nous savons seulement comment les utiliser et quels sont les paramètres qu'elles prennent.
Nous ne savons pas ce qui se passe en arrière-plan lorsque ces fonctions sont appelées ou comment elles sont implémentées dans le fichier d'en-tête iostream. C'est une autre manière d'abstraction fournie par C ++.
Nous ne connaissons pas les détails de l'implémentation de toutes les fonctions que nous importons à partir des fichiers d'en-tête.
Voici un autre exemple pour démontrer l'abstraction.
#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 = '< Production:
EmpId = 1 Nom = Ved
Salaire des employés = 18245,4
Dans cet exemple, nous avons défini un employé de classe qui a des détails privés comme empId, nom, détails de salaire comme de base et indemnités. Nous définissons également une fonction privée «calculerSalaire» qui calcule le salaire en utilisant les allocations de base et les indemnités.
Nous avons un constructeur pour initialiser toutes les données pour un objet employé particulier. Nous appelons également la fonction «CalculateSalary» du constructeur pour calculer le salaire de l'employé actuel.
Ensuite, nous avons une fonction «affichage» qui affiche empId, nom et salaire. Dans la fonction principale, nous créons un objet d'employé de classe et appelons la fonction d'affichage.
Nous pouvons clairement voir le niveau d'abstraction que nous avons fourni dans ce programme. Nous avons caché tous les détails de l'employé ainsi que la fonction CalculateSalary de l'utilisateur en les rendant privés.
Nous n'avons exposé qu'un seul affichage de fonction à l'utilisateur qui donne toutes les informations sur l'objet employé à l'utilisateur et en même temps, il cache également des détails tels que les données privées et la façon dont nous calculons le salaire de l'employé.
En faisant cela, à l'avenir, si nous voulons ajouter plus de détails et changer la façon dont le salaire est calculé, nous n'avons pas à changer la fonction d'affichage. L'utilisateur ne sera pas au courant de ces changements.
Avantages de l'abstraction
Voici quelques-uns des avantages de l'abstraction.
- Le programmeur n'a pas besoin d'écrire du code de bas niveau.
- L'abstraction protège l'implémentation interne contre les utilisations malveillantes et les erreurs.
- L'abstraction peut empêcher la duplication de code et le programmeur doit donc effectuer les mêmes tâches encore et encore.
- L'abstraction favorise la réutilisation du code et classe correctement les membres de données de classe.
- Le programmeur peut modifier les détails internes de l'implémentation de classe à l'insu de l'utilisateur final, sans affecter ainsi les opérations de la couche externe.
Conclusion
L'abstraction est l'un des concepts les plus importants de la POO et est implémentée en profondeur en C ++. En utilisant l'abstraction, nous pouvons garder secrets les détails d'implémentation du programme et n'exposer que les détails que nous voulons au monde extérieur.
En utilisant le concept d'abstraction, nous pouvons concevoir des types de données abstraits et des classes qui agissent comme un squelette de la solution de programmation sur laquelle une solution entière est construite. Au fur et à mesure que nous progressons dans les rubriques POO, nous en apprendrons davantage sur ces types et classes.
Dans nos prochains tutoriels, nous découvrirons un autre pilier de la POO, à savoir l'encapsulation. Nous y soupeserons également l'abstraction et l'encapsulation.
=> Recherchez la série complète de formations C ++ ici.
lecture recommandée
- Types de données C ++
- Encapsulation en C ++
- Top 10 des outils de science des données en 2021 pour éliminer la programmation
- Programmation orientée objet en C ++
- Introduction aux structures de données en C ++
- 70+ MEILLEURS tutoriels C ++ pour apprendre la programmation C ++ gratuitement
- Paramétrage des données JMeter à l'aide de variables définies par l'utilisateur
- 10+ meilleurs outils de collecte de données avec des stratégies de collecte de données