Classes et objets C++ : Guide pratique de la programmation orientée objet
Classes et objets C++
Découvrez comment encapsuler données et comportement en C++ en utilisant classes et objets, avec des exemples clairs et bonnes pratiques.
Pourquoi utiliser des classes ?
Dans les leçons précédentes, nous avons exploré les fonctions et variables. À mesure que les projets grandissent, regrouper données et opérations liées devient essentiel pour la maintenabilité et la clarté. Une classe vous permet de regrouper des membres de données et fonctions membres en une seule unité logique, permettant la programmation orientée objet (POO) — la base du design C++ moderne.
Illustration : Une pièce
Considérez une pièce rectangulaire. Vous devez stocker sa longueur, largeur et hauteur tout en calculant sa surface et son volume. Avec une classe, vous pouvez garder ces éléments étroitement couplés :
class Piece {
public:
double longueur;
double largeur;
double hauteur;
double calculerSurface() {
return longueur * largeur;
}
double calculerVolume() {
return longueur * largeur * hauteur;
}
};
Définition d'une classe
Une classe est définie avec le mot-clé class, suivi de son nom et d'un corps entre accolades, se terminant par un point-virgule :
class NomClasse {
// membres de données
// fonctions membres
};
Dans l'exemple ci-dessus, Piece est un plan. Les variables à l'intérieur sont appelées membres de données ; les fonctions sont des fonctions membres.
Création d'objets
Définir une classe ne spécifie que la disposition ; elle n'alloue pas de mémoire. Les objets sont des instances concrètes créées à partir de ce plan :
Piece piece1; // objet unique
Piece piece2, piece3; // plusieurs objets en une déclaration
Les objets peuvent être instanciés n'importe où — à l'intérieur de fonctions, d'autres classes, ou globalement — tant que leur portée est respectée.
Accès aux membres
Utilisez l'opérateur point (.) pour appeler les fonctions membres ou accéder aux membres de données :
piece1.longueur = 5.5;
double surface = piece1.calculerSurface();
Exemple 1 : Calcul des métriques d'une pièce
#include <iostream>
using namespace std;
class Piece {
public:
double longueur;
double largeur;
double hauteur;
double calculerSurface() {
return longueur * largeur;
}
double calculerVolume() {
return longueur * largeur * hauteur;
}
};
int main() {
Piece piece1;
piece1.longueur = 42.5;
piece1.largeur = 30.8;
piece1.hauteur = 19.2;
cout << "Surface de la pièce = " << piece1.calculerSurface() << endl;
cout << "Volume de la pièce = " << piece1.calculerVolume() << endl;
return 0;
}
Sortie
Surface de la pièce = 1309 Volume de la pièce = 25132.8
Encapsulation : Public vs Private
L'encapsulation protège les données en contrôlant l'accès. Les membres déclarés private sont cachés du monde extérieur et ne peuvent être accédés que via des fonctions membres publiques.
class Test {
private:
int a;
void fonction1() {}
public:
int b;
void fonction2() {}
};
Dans l'exemple suivant, les membres de données sont privés et sont initialisés via une méthode publique :
#include <iostream>
using namespace std;
class Piece {
private:
double longueur;
double largeur;
double hauteur;
public:
void initialiserDonnees(double len, double larg, double hgt) {
longueur = len;
largeur = larg;
hauteur = hgt;
}
double calculerSurface() {
return longueur * largeur;
}
double calculerVolume() {
return longueur * largeur * hauteur;
}
};
int main() {
Piece piece1;
piece1.initialiserDonnees(42.5, 30.8, 19.2);
cout << "Surface de la pièce = " << piece1.calculerSurface() << endl;
cout << "Volume de la pièce = " << piece1.calculerVolume() << endl;
return 0;
}
Sortie
Surface de la pièce = 1309 Volume de la pièce = 25132.8
Lectures supplémentaires
Pour des directives autoritatives, consultez la norme ISO/IEC 14882:2023 C++ ou des ressources de confiance comme cplusplus.com et cppreference.com.
Langue C
- Classes et objets C# : Fondations pour une POO robuste
- Maîtriser les classes et méthodes abstraites C# : Guide pratique
- Comprendre les classes et méthodes partielles C#
- Maîtriser les classes et méthodes sealed en C# : Quand les utiliser, exemples clairs et sécurité du code
- Fonctions amies et classes amies en C++ : Maîtriser le contrôle d'accès
- Maîtriser les templates de classe en C++ : Guide pratique
- Classes et objets en Java : Guide pratique
- Structures C++ vs Classes : guide pratique pour développeurs embarqués
- Struct vs Class en C++ : Différences Clés, Syntaxe et Cas d'Utilisation Optimaux