Accès public et privé en C++ | Guide complet
Table of Contents
- Introduction
- Les spécificateurs d'accès public et privé
- 2.1 Accès public
- 2.2 Accès privé
- Utilisation des spécificateurs d'accès dans une classe en C++
- Variables membres publiques et privées
- 4.1 Accès aux variables membres publiques
- 4.2 Accès aux variables membres privées
- Fonctions membres publiques et privées
- 5.1 Accès aux fonctions membres publiques
- 5.2 Accès aux fonctions membres privées
- Encapsulation et gestion des données
- 6.1 Getters et Setters
- 6.2 Avantages de l'encapsulation
- Fonctions membres privées et confidentialité
- 7.1 Information hiding
- 7.2 Utilisation des fonctions membres privées
- Conclusion
📚 Les spécificateurs d'accès public et privé en C++
Lors de la programmation en C++, il est important de comprendre les spécificateurs d'accès public et privé, car ils permettent de contrôler l'accès aux membres d'une classe. Dans cet article, nous allons discuter de ces spécificateurs et de leur utilisation dans la création de classes.
2. Les spécificateurs d'accès public et privé
Dans le langage C++, il existe deux spécificateurs d'accès principaux : public et privé. Ces spécificateurs déterminent où les membres d'une classe peuvent être utilisés.
2.1 Accès public
L'accès public permet aux membres d'une classe d'être utilisés et accessibles à l'extérieur de celle-ci. Par exemple, si nous déclarons une variable membre en tant que membre public, nous pourrons y accéder et l'utiliser dans d'autres parties du programme. De même, les fonctions membres publiques peuvent être appelées et utilisées en dehors de la classe.
2.2 Accès privé
L'accès privé restreint l'utilisation des membres d'une classe à l'intérieur de celle-ci. Les variables membres privées ne peuvent pas être utilisées à l'extérieur de la classe, ce qui signifie qu'elles ne peuvent pas être directement accessibles ou modifiées depuis d'autres parties du programme. De même, les fonctions membres privées ne peuvent être appelées qu'à partir de l'intérieur de la classe.
3. Utilisation des spécificateurs d'accès dans une classe en C++
Pour illustrer l'utilisation des spécificateurs d'accès public et privé, créons une classe Employee (employé) qui représente les employés d'une entreprise.
#include <iostream>
#include <string>
class Employee {
public:
std::string name; // Variable membre publique
private:
double salary; // Variable membre privée
public:
double getSalary() {
return salary;
}
void setSalary(double potentialSalary) {
if (potentialSalary < 0) {
salary = 0;
} else {
salary = potentialSalary;
}
}
void printBonus() {
double bonus = calculateBonus();
std::cout << "Le bonus pour l'employé " << name << " est de : " << bonus << std::endl;
}
private:
double calculateBonus() {
return salary * 0.10;
}
};
int main() {
Employee employee1;
employee1.name = "Kevin";
employee1.setSalary(50000);
employee1.printBonus();
return 0;
}
Dans cet exemple, nous avons déclaré une variable membre publique (name
) et une variable membre privée (salary
). Cela signifie que la variable name
peut être utilisée en dehors de la classe, tandis que la variable salary
est restreinte à l'intérieur de la classe.
4. Variables membres publiques et privées
4.1 Accès aux variables membres publiques
Les variables membres publiques peuvent être utilisées et modifiées en dehors de la classe. Dans notre exemple, nous avons accédé à la variable name
de l'objet employee1
dans la fonction main
et nous l'avons modifiée en lui attribuant la valeur "Kevin".
Employee employee1;
employee1.name = "Kevin";
4.2 Accès aux variables membres privées
En revanche, les variables membres privées ne peuvent pas être directement accessibles à l'extérieur de la classe. Si nous essayons d'accéder à la variable salary
, comme dans l'exemple ci-dessous, une erreur de compilation se produira.
Employee employee1;
employee1.salary = 50000; // Erreur de compilation !
Cela garantit que les données sensibles ou les détails d'implémentation d'une classe restent confidentiels et ne peuvent être modifiés que via des fonctions membres appropriées.
5. Fonctions membres publiques et privées
Tout comme les variables membres, les fonctions membres peuvent également être spécifiées comme publiques ou privées.
5.1 Accès aux fonctions membres publiques
Les fonctions membres publiques peuvent être appelées et utilisées en dehors de la classe. Dans notre exemple, nous avons défini les fonctions getSalary()
, setSalary()
et printBonus()
en tant que fonctions membres publiques. Cela signifie que nous pouvons appeler ces fonctions sur l'objet employee1
dans notre fonction main
.
Employee employee1;
employee1.getSalary(); // Appel de la fonction membre publique
5.2 Accès aux fonctions membres privées
Les fonctions membres privées ne peuvent être appelées que depuis l'intérieur de la classe. Dans notre exemple, nous avons défini la fonction calculateBonus()
comme une fonction membre privée. Si nous essayons d'appeler cette fonction à partir de la fonction main
, une erreur de compilation se produira.
Employee employee1;
employee1.calculateBonus(); // Erreur de compilation !
6. Encapsulation et gestion des données
L'utilisation appropriée des spécificateurs d'accès public et privé nous permet de mettre en œuvre le concept d'encapsulation. L'encapsulation consiste à masquer les détails d'implémentation d'une classe et à fournir uniquement des interfaces publiques pour interagir avec celle-ci. Cela permet de protéger les données et de garantir leur cohérence.
6.1 Getters et Setters
Les fonctions membres publiques qui permettent d'accéder et de modifier les données privées d'une classe sont souvent appelées "getters" et "setters". Dans notre exemple, les fonctions getSalary()
et setSalary()
sont des exemples de getters et setters.
Employee employee1;
employee1.setSalary(50000);
double salary = employee1.getSalary();
Ces fonctions permettent de contrôler l'accès aux données et d'effectuer des vérifications ou des modifications supplémentaires avant de permettre la lecture ou l'écriture des valeurs.
6.2 Avantages de l'encapsulation
L'encapsulation offre plusieurs avantages, notamment :
- La protection des données sensibles contre les modifications non autorisées
- La garantie de cohérence des données grâce à des vérifications dans les fonctions membres
- La possibilité de modifier l'implémentation interne sans affecter les utilisateurs de la classe
- Une interface claire et simplifiée pour interagir avec la classe
7. Fonctions membres privées et confidentialité
Les fonctions membres privées jouent un rôle important dans la confidentialité et la sécurité des données d'une classe.
7.1 Information hiding
L'encapsulation des fonctions membres privées permet de masquer les détails d'implémentation d'une classe. Cela signifie que les utilisateurs de la classe ne sont pas conscients de l'existence de ces fonctions privées, ce qui contribue à la modularité et à la sécurité du code.
7.2 Utilisation des fonctions membres privées
Dans notre exemple, la fonction calculateBonus()
est définie comme une fonction membre privée. Cette fonction est utilisée pour effectuer des calculs internes dans la classe et n'est pas destinée à être utilisée à l'extérieur de celle-ci. Les fonctions membres privées peuvent être utilisées pour effectuer des tâches internes, cacher des détails d'implémentation et rendre le code plus modulaire et sécurisé.
8. Conclusion
Dans cet article, nous avons discuté des spécificateurs d'accès public et privé en C++. Nous avons vu comment ils peuvent être utilisés pour contrôler l'accès aux membres d'une classe, tant pour les variables que pour les fonctions membres. Nous avons également exploré les concepts d'encapsulation et d'information hiding, qui contribuent à la conception de classes bien structurées et sécurisées.
Pour en savoir plus sur la programmation en C++ et créer un portfolio impressionnant, visitez notre site checoportfoliocourses.com.
FAQ
Q: Quelle est la différence entre les spécificateurs d'accès public et privé ?
A: Le spécificateur d'accès public permet l'accès aux membres d'une classe depuis l'extérieur, tandis que le spécificateur d'accès privé restreint l'accès aux membres à l'intérieur de la classe.
Q: Pourquoi utiliser des getters et setters pour accéder aux variables membres privées ?
A: Les getters et setters permettent de contrôler l'accès aux variables membres privées et de mettre en place des vérifications ou des modifications supplémentaires avant d'accéder aux données.
Q: Qu'est-ce que l'encapsulation en programmation orientée objet ?
A: L'encapsulation est un concept qui consiste à regrouper les données et les fonctions associées dans une classe, en masquant les détails d'implémentation et en ne fournissant que des interfaces publiques pour interagir avec la classe.
Q: Pourquoi cacher des fonctions membres en les définissant comme privées ?
A: Cacher des fonctions membres en les définissant comme privées permet de masquer les détails d'implémentation et de protéger les données sensibles d'une classe.
Ressources supplémentaires