Le masquage des données est l'un des principes fondamentaux de la POO. Il consiste à contrôler l'accès aux membres d'une classe grâce aux spécificateurs d'accès : public, private et protected.
public, private et protected définissent qui peut accéder à chaque membre d'une classe. Par défaut (sans spécificateur), tous les membres d'une class sont privés.class NomClasse {
public:
// membres accessibles de partout
private:
// membres accessibles uniquement dans la classe
protected:
// membres accessibles dans la classe et ses sous-classes
};Membres public
Les membres déclarés public sont accessibles de partout dans le programme via l'opérateur d'accès .. C'est l'interface visible de la classe.
Exemple — tous les attributs en public
#include <iostream>
using namespace std;
class Voiture {
public:
int Id;
int NB_roues;
double vitesse;
int kilometrage;
void afficher() {
cout << "Id=" << Id << " Roues=" << NB_roues
<< " Vitesse=" << vitesse
<< " Km=" << kilometrage << endl;
}
};
int main()
{
Voiture v1;
v1.Id = 1;
v1.NB_roues = 4;
v1.vitesse = 250;
v1.kilometrage = 20000;
v1.afficher();
return 0;
}Id=1 Roues=4 Vitesse=250 Km=20000
private.Membres private
Les membres private sont inaccessibles de l'extérieur de la classe. Seules les fonctions membres de la classe (et les fonctions amies) peuvent y accéder. C'est le mode d'accès par défaut pour les membres d'une class.
La convention recommandée est de placer les données en private et d'y accéder via des méthodes publiques (getters/setters).
Exemple — données privées, méthodes publiques
#include <iostream>
using namespace std;
class Voiture {
private:
int Id;
int NB_roues;
double vitesse;
int kilometrage;
public:
// méthode d'initialisation (remplace l'accès direct)
void initialiser(int id, int roues, double vit, int kilo) {
Id = id; NB_roues = roues; vitesse = vit; kilometrage = kilo;
}
void afficher() {
cout << "Id=" << Id << " Roues=" << NB_roues
<< " Vitesse=" << vitesse
<< " Km=" << kilometrage << endl;
}
};
int main()
{
Voiture v1;
v1.initialiser(1, 4, 250, 20000);
v1.afficher();
return 0;
}Id=1 Roues=4 Vitesse=250 Km=20000
Membres protected
protected se comportent comme des membres private vis-à-vis de l'extérieur : ils sont inaccessibles en dehors de la classe. Cependant, ils sont accessibles dans les sous-classes (classes dérivées), ce qui les distingue de private.protected est principalement utile en contexte d'héritage : les attributs protégés sont partagés entre la classe parent et ses enfants, sans être exposés publiquement. Ce point sera développé en détail dans le cours sur l'héritage.Tableau récapitulatif
| Accès depuis… | public | protected | private |
|---|---|---|---|
| La classe elle-même | ✓ | ✓ | ✓ |
| Une sous-classe (héritage) | ✓ | ✓ | ✗ |
| Code extérieur à la classe | ✓ | ✗ | ✗ |
Discussion (0)
Soyez le premier à laisser un commentaire !
Laisser un commentaire
Votre commentaire sera visible après modération.