Getters et Setters C++
Ce guide trivial présentera d’abord brièvement le concept d’encapsulation et de dissimulation de données dans la programmation orientée objet. Ensuite, nous passerons à l’utilisation des getters et des setters en C++.
Qu’est-ce que l’encapsulation
L’encapsulation est le concept de liaison de toutes les choses pertinentes ensemble. Une classe en C++ peut combiner toutes les données associées dans une seule capsule.
Par exemple, supposons que nous ayons un objet ou une entité Rectangle
avec certains attributs et propriétés. Nous pouvons combiner tous ses attributs et propriétés dans une seule classe.
Par conséquent, l’encapsulation est connue pour combiner des données et des méthodes connexes dans une seule classe. Il est souvent confondu avec le concept de dissimulation de données.
Le masquage de données est le concept selon lequel les attributs appartenant à une classe ne doivent pas être accessibles à tout le monde en dehors de la classe. C’est parce qu’il viole la sécurité des données.
Si les données membres d’une classe sont rendues privées, tout utilisateur extérieur à la classe ne peut pas y accéder, et nous pouvons donc assurer la sécurité des données.
En faisant cela, bien que nous ne puissions pas définir la valeur ou obtenir la valeur des membres de données en dehors de la classe, nous pouvons créer des méthodes qui peuvent être utilisées pour accéder aux membres, et ces méthodes garantissent que certaines données indésirables ne sont pas placées dans les membres de données. .
De telles méthodes pour définir ou obtenir la valeur des membres de données sont appelées getters
et setters
.
Getters et Setters en C++
Il s’agit d’une bonne pratique de programmation pour rendre les membres de données d’une classe privés afin que les données non valides ne puissent pas être attribuées aux membres de données de la classe. Avec cela, vous pouvez vérifier les données entrant dans les membres de données avant de les stocker dans les membres de données.
Par exemple, nous avons une classe, Shape
. L’attribut de longueur d’une forme ne peut jamais être négatif.
Par conséquent, lors de la définition de la valeur de longueur, nous vérifierons si la valeur fournie est supérieure ou non à zéro.
De même, si nous avons une classe Employee
, celle-ci a un attribut salary
. Cet attribut n’a ni une valeur négative ni une très grande valeur positive.
Par conséquent, un validateur doit être placé avant de définir la valeur salary
. Regardons l’exemple ci-dessous.
class Emp {
private:
int empSalary;
public:
void setEmpSalary(int sal) {
if (sal > 0 and sal < 10000000) empSalary = sal;
}
int getEmpSalary() { return empSalary; }
};
Dans cet extrait de code, nous avons le membre de données salary
, qui est privé pour réaliser le masquage des données. De plus, nous avons fourni un getter et un setter pour ce membre de données afin que la valeur puisse être définie et récupérée si nécessaire.
Dans la fonction setter, nous avons également créé un contrôle pour contrôler la valeur invalide saisie dans le membre de données salary
. Voici comment créer des setters et des getters pour tout membre de données dont vous avez besoin.
Regardons le code complet de l’exemple ci-dessus.
#include <iostream>
#include <string>
using namespace std;
class Emp {
private:
int empSalary;
string empName;
public:
Emp(string n, int s) {
setEmpName(n);
setEmpSalary(s);
}
void setEmpName(string s) { empName = s; }
string getEmpName() { return empName; }
void setEmpSalary(int sal) {
if (sal > 0 and sal < 10000000) empSalary = sal;
}
int getEmpSalary() { return empSalary; }
};
int main() {
Emp e("John", 50000);
cout << "Name: " << e.getEmpName() << endl;
cout << "Salary: " << e.getEmpSalary() << endl;
}
Production:
Name: John
Salary: 50000
Conclusion
L’ajout de méthodes getter et setter à l’interface de classe est essentiel. Étant donné que les variables membres d’une classe seront déclarées privées, les utilisateurs de votre classe auront besoin d’un moyen de récupérer et de définir leurs valeurs.
Étant donné que les méthodes setter peuvent inclure un code de validation des données pour garantir que les variables membres sont définies sur des valeurs légitimes, les fonctions getter et setter permettent cet accès en toute sécurité.
Bien sûr, il y a des moments où vous ne souhaitez pas proposer de méthodes getter, setter ou les deux pour toutes les variables membres d’une classe. Les variables membres en lecture seule sont des variables qui peuvent être obtenues mais pas modifiées.
Un tel exemple peut être des membres de données statiques, ou il peut y avoir des membres de données en lecture seule ; pour de tels membres, nous avons besoin d’une fonction getter mais pas d’une fonction setter.
Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.
LinkedIn