Implémentation du polymorphisme dynamique en C++

C++C++Beginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons implémenter le concept de polymorphisme en C++. Le polymorphisme est un concept du langage de programmation orienté objet où une seule fonction peut être utilisée de différentes manières. Il existe deux types de polymorphisme : le polymorphisme de temps de compilation ou polymorphisme statique et le polymorphisme d'exécution ou polymorphisme dynamique. Dans ce laboratoire, nous allons nous concentrer sur le polymorphisme d'exécution ou dynamique.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/OOPGroup(["OOP"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/SyntaxandStyleGroup(["Syntax and Style"]) cpp/OOPGroup -.-> cpp/classes_objects("Classes/Objects") cpp/OOPGroup -.-> cpp/class_methods("Class Methods") cpp/OOPGroup -.-> cpp/inheritance("Inheritance") cpp/OOPGroup -.-> cpp/polymorphism("Polymorphism") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("Code Formatting") subgraph Lab Skills cpp/classes_objects -.-> lab-96154{{"Implémentation du polymorphisme dynamique en C++"}} cpp/class_methods -.-> lab-96154{{"Implémentation du polymorphisme dynamique en C++"}} cpp/inheritance -.-> lab-96154{{"Implémentation du polymorphisme dynamique en C++"}} cpp/polymorphism -.-> lab-96154{{"Implémentation du polymorphisme dynamique en C++"}} cpp/output -.-> lab-96154{{"Implémentation du polymorphisme dynamique en C++"}} cpp/files -.-> lab-96154{{"Implémentation du polymorphisme dynamique en C++"}} cpp/code_formatting -.-> lab-96154{{"Implémentation du polymorphisme dynamique en C++"}} end

Créez un nouveau fichier main.cpp

Tout d'abord, nous allons créer un nouveau fichier C++ nommé main.cpp dans le répertoire ~/project :

$ cd ~/project
$ touch main.cpp

Ajoutez du code pour implémenter le polymorphisme

Dans cette étape, nous allons créer une classe nommée Shape. La classe Shape aura une fonction virtuelle nommée area(). Ensuite, nous créerons deux classes Rectangle et Triangle qui hériteront de la classe Shape et qui redéfiniront la fonction virtuelle area(). Une fois les classes créées, nous créerons un tableau d'objets de la classe Shape puis nous ferons une boucle sur le tableau pour appeler la fonction area() de chaque objet.

#include <iostream>
using namespace std;

class Shape {
    public:
        virtual float area() {
            return 0;
        }
};

class Rectangle: public Shape {
    public:
        float area() {
            cout << "Rectangle class area()" << endl;
            return 0;
        }
};

class Triangle: public Shape {
    public:
        float area() {
            cout << "Triangle class area()" << endl;
            return 0;
        }
};

int main() {
    Shape *shape;
    Rectangle rec;
    Triangle tri;

    shape = &rec;
    shape->area();

    shape = &tri;
    shape->area();

    return 0;
}

Compilez et exécutez le code

Dans cette étape, nous allons compiler et exécuter le code à l'aide des commandes suivantes :

$ g++ main.cpp -o main
$./main

La sortie du programme ci-dessus sera :

Rectangle class area()
Triangle class area()

Résumé

Dans ce laboratoire, nous avons appris à implémenter le concept de polymorphisme en C++. Nous avons créé une classe avec une fonction virtuelle nommée Shape. Ensuite, nous avons créé deux classes Rectangle et Triangle qui ont hérité de la classe Shape et ont redéfini la fonction virtuelle area(). Enfin, nous avons créé des objets des classes Rectangle et Triangle et avons appelé la fonction area() en utilisant l'objet de la classe de base Shape, ce qui a entraîné l'appel aux classes respectives.