Bonjour à tous,
Bienvenue dans mon troisième blog sur le langage de programmation C++. La semaine dernière, nous avons vu ensemble les variables, les classes ainsi que les fonctions en C++. Pour cette semaine, nous allons attaquer les trois concepts fondamentaux de la programmation orientée objet, l'encapsulation, l'héritage et le polymorphisme.
Encapsulation
Faisons un petit rappel sur l'encapsulation. Cette base de la programmation orientée objet consiste à gérer la visibilité des variables au sein d'une classe ainsi que leur accès. En effet, en encapsulant les données au sein d'une classe, on restreint leur accès direct depuis l'extérieur de la classe. Cela permet de protéger les données sensibles et d'éviter les manipulations non autorisées qui pourraient compromettre la cohérence interne de l'objet. En C++, cela se réalise en définissant des membres de classe comme publics, privés ou protégés, déterminant ainsi leur niveau de visibilité et d'accessibilité. Cette approche favorise la modularité, la sécurité et la maintenabilité du code en limitant les dépendances externes et en favorisant la réutilisation des classes dans différents contextes.
voici un exemple d'une classe avec encapsulation en C++:
class Personne {
private:
string nom;
int age;
public:
Personne(string n, int a) : nom(n), age(a) {}
string getNom() const {
return nom;
}
int getAge() const {
return age;
}
void setNom(string n) {
nom = n;
}
void setAge(int a) {
if (a >= 0) {
age = a;
}
}
};
Héritage
Pour ce qui est de l'héritage, celui-ci permet de créer de nouvelles classes qui sont dérivées d'une autre classe. En effet, les classes dérivées d'une autre classe héritent leurs attributs ainsi que leur méthode, ce qui favorise la réutilisation du code.
voici un exemple d'une classe qui hérite d'une autre classe en C++:
class Etudiant : public Personne {
private:
string matricule;
public:
// Constructeur par défaut
Etudiant() : Personne("", 0), matricule("") {}
// Constructeur avec nom, age et matricule
Etudiant(string n, int a, string m) : Personne(n, a), matricule(m) {}
void setMatricule(string m) {
matricule = m;
}
string getMatricule() {
return matricule;
}
};
Comme vous pouvez le voir, les : sont le symbole d'héritage. Alors, dans notre exemple, la classe Etudiant contiendra l'attribut matricule, mais aussi les attributs nom et age puisque celle-ci hérite de la classe Personne qui devient dans ce cal la classe mère.
Polymorphisme
Finalement, Le polymorphisme permet d'écrire un code plus générique, plus flexible et plus extensible en utilisant des classes de base pour manipuler des objets de types dérivés, sans avoir besoin de connaître le type exact de ces objets au moment de la compilation.
voici un exemple du polymorphisme en C++:
class Enseignant : public Personne {
private:
string matiere;
public:
Enseignant(string n, int age, string mat) : Personne(n, age), matiere(mat) {}
string getMatiere() {
return matiere;
}
};
int main() {
Etudiant etudiant;
etudiant.setNom("Alice");
etudiant.setAge(20);
etudiant.setMatricule("12345");
Enseignant enseignant("Bob", 35, "Informatique");
cout << "Etudiant : " << etudiant.getNom() << ", Age : " << etudiant.getAge() << ", Matricule : " << etudiant.getMatricule() << endl;
cout << "Enseignant : " << enseignant.getNom() << ", Age : " << enseignant.getAge() << ", Matière : " << enseignant.getMatiere() << endl;
return 0;
}
Comme vous pouvez le voir, on a un autre exemple d'héritage en C++ avec la nouvelle classe Enseignant. Celle-ci aura comme attribut le String matiere ainsi que tout les attributs que possède la classe Personne. Pour ce qui est du polymorphisme. Celui-ci ce fait dans le main() au sein d'un projet C++. En effet, on peut voir qu'un objet Etudiant de type Personne et un autre objet Enseignant de type personne ont été créé. Dans le print, il est clair que chaque objet a aussi accès à ses propres méthodes respectives ainsi que les méthodes dans la classe Personne ce qui regroupe le polymorphisme ainsi que la programmation orientée objet (OOP).
Résultat du code

Pour conclure, je vous remercie d'avoir appris avec moi aujourd'hui, mais ce n'est pas terminé. Restez à l'affût sur mes prochaines publications et à très bientôt.
Adham Elatris
Référence
W3schools encaplsulation C++ (Consulté le 23 Février)
W3schools héritage C++ (Consulté le 23 Février)
W3schools polymorphisne C++ (Consulté le 23 Février)
Commentaires