Exercices corrigés C++ – Programmation Orientée Objet | Partie 1
Avec des exercices corrigés en C++, vous pratiquerez divers concepts du langage C++. Vous commencerez par des exercices C++ de base à des exercices plus avancés. La solution est fournie pour chaque exercice. Vous devez essayer de résoudre chaque problème par vous-même avant de vérifier la solution. Si vous avez des questions concernant chaque problème, nous vous encourageons à les poster sur notre forum.
Exercice 1:
Écrivez un programme C++ pour créer une classe appelée « Personne » avec un nom et un attribut age. Créez deux instances de la classe « Personne », définissez leurs attributs à l’aide du constructeur et affichez leur nom et leur âge.
Exemple de sortie:
Alex Babtise a 25 ans. Emily Tonari a 18 ans.
Diagrame de classe:

#include <iostream> #include <string> using namespace std; // Définir la classe Personne class Person { // Déclarer des variables privées pour stocker le nom et l'âge de // la personne private: string name; // Nom int age; // Âge // Constructeur de la classe Personne qui initialise les // variables public: Person(string name, int age) { // Attribuer à la variable name la valeur du paramètre // name fourni this->name = name; // Attribuer à la variable age la valeur du paramètre age this->age = age; } // Méthode pour récupérer le nom de la personne string getName() { // Retourner la valeur de la variable name return name; } // Méthode pour récupérer l'âge de la personne int getAge() { // Retourner la valeur de la variable age return age; } // Méthode pour définir le nom de la personne void setName(string name) { // Attribuer à la variable name la valeur du paramètre // name fourni this->name = name; } // Méthode pour définir l'âge de la personne void setAge(int age) { // Attribuer à la variable age la valeur du paramètre age this->age = age; } }; // Définir la fonction main int main() { // Créer une instance de la classe Personne avec le nom 'Alex // Babtise' et l'âge 25 Person p1("Alex Babtise", 25); // Créer une autre instance de la classe Personne avec le nom // "Emily Tonari" et l'âge 18 Person p2("Emily Tonari", 18); // Afficher le nom et l'âge de p1 sur la console cout << p1.getName() << " a " << p1.getAge() << " ans." << endl; // Afficher le nom et l'âge de p2 sur la console cout << p2.getName() << " a " << p2.getAge() << " ans." << endl; // Modifier le nom et l'âge de p2 en utilisant les méthodes // setter p2.setName("Thomas Gozilla"); p2.setAge(30); // Afficher le nom et l'âge actualisés de p2 sur la console cout << p2.getName() << " a " << p2.getAge() << " ans." << endl; return 0; // Fin du programme }
Sortie:
Alex Babtise a 25 ans. Emily Tonari a 18 ans. Thomas Gozilla a 30 ans.
Explication:
Dans l'exemple ci-dessus, nous créons deux instances de la classe « Personne », nous définissons leurs attributs à l'aide du constructeur et nous affichons leur nom et leur âge à l'aide des méthodes getter. Nous modifions également les attributs à l'aide des méthodes setter et affichons les valeurs mises à jour.
Exercice 2:
Écrivez un programme C++ pour créer une classe appelée « Chien » avec un nom et un attribut de race. Créez deux instances de la classe « Chien », définissez leurs attributs à l'aide du constructeur et modifiez les attributs à l'aide des méthodes setter, puis affichez les valeurs mises à jour.
Diagrame de classe:

#include <iostream> #include <string> using namespace std; // Définir la classe Chien class Chien { // Déclarer des variables privées pour stocker le nom et la race // du Chien private: string nom; // Nom string race; // Race // Constructeur de la classe Chien qui initialise les variables // nom et race public: Chien(string nom, string race) { // Attribuer à la variable nom la valeur du paramètre nom this->nom = nom; // Attribuer à la variable race la valeur du paramètre // race fourni this->race = race; } // Méthode pour récupérer le nom du Chien string getNom() { // Retourner la valeur de la variable nom return nom; } // Méthode pour définir le nom du Chien void setNom(string nom) { // Attribuer à la variable nom la valeur du paramètre nom this->nom = nom; } // Méthode pour récupérer la race du Chien string getRace() { // Retourner la valeur de la variable race return race; } // Méthode pour définir la race du Chien void setRace(string race) { // Attribuer à la variable race la valeur du paramètre // race fourni this->race = race; } }; // Définir la fpnction main int main() { // Créer une instance de la classe Chien avec le nom 'Rio' et la // race 'Berger allemand' Chien ch1("Rio", "Berger allemand"); // Créer une autre instance de la classe Chien avec le nom // 'Rocky' et la race 'Husky' Chien ch2("Rocky", "Husky"); // Afficher le nom et la race de ch1 sur la console cout << ch1.getNom() << " est un " << ch1.getRace() << endl; // Afficher le nom et la race de ch2 sur la console cout << ch2.getNom() << " est un " << ch2.getRace() << endl; // Afficher un message indiquant que la race de ch1 et le nom de // ch2 vont être modifiés cout << "\nDéfinir la nouvelle race de ch1 et le nouveau nom de ch2:" << endl; // Changer la race du ch1 en "Beagle" ch1.setRace("Beagle"); // Changer le nom de ch2 en "Simba" ch2.setNom("Simba"); // Afficher sur la console le nom et la race mis à jour de ch1 cout << ch1.getNom() << " est un " << ch1.getRace() << endl; // Afficher sur la console le nom et la race mis à jour de ch2 cout << ch2.getNom() << " est un " << ch2.getRace() << endl; return 0; // Fin du programme }
Sortie:
Rio est un Berger allemand Rocky est un Husky Définir la nouvelle race de ch1 et le nouveau nom de ch2: Rio est un Beagle Simba est un Husky
Exercice 3:
Écrire un programme C++ pour créer une classe appelée « Livre » avec des attributs pour le titre, l'auteur et l'ISBN, et des méthodes pour ajouter et supprimer des livres d'une collection.
Diagrame de classe:

#include <iostream> #include <string> using namespace std; // Définir la classe Livre class Livre { private: string titre; // Titre string auteur; // Auteur string ISBN; // ISBN public: // Constructeur Livre(string titre, string auteur, string ISBN) : titre(titre), auteur(auteur), ISBN(ISBN) {} // Méthodes pour obtenir les attributs string getTitre() { return titre; } string getAuteur() { return auteur; } string getISBN() { return ISBN; } // Méthodes pour définir les attributs void setTitre(string titre) { this->titre = titre; } void setAuteur(string auteur) { this->auteur = auteur; } void setISBN(string ISBN) { this->ISBN = ISBN; } // Afficher les informations du livre void afficher() const { cout<< titre <<" par "<< auteur <<", ISBN: "<< ISBN <<endl; } }; // Classe pour gérer la collection de livres class Bibliotheque { private: static const int MAX_LIVRES = 100; // Taille maximum du tableau Livre* livres[MAX_LIVRES]; // Tableau de livres int nombreLivres; // Compteur de livres public: // Initialiser le compteur à 0 Bibliotheque() : nombreLivres(0) {} // Méthode pour ajouter un livre void ajouterLivre(Livre* livre) { if (nombreLivres < MAX_LIVRES) { // Ajouter le livre et incrémenter le compteur livres[nombreLivres++] = livre; } else { cout << "Bibliothèque pleine, impossible d'ajouter le livre." << endl; } } // Méthode pour supprimer un livre void supprimerLivre(string ISBN) { for (int i = 0; i < nombreLivres; ++i) { if (livres[i]->getISBN() == ISBN) { delete livres[i]; // Libérer la mémoire for (int j = i; j < nombreLivres - 1; ++j) { livres[j] = livres[j + 1]; // Décaler les livres } --nombreLivres; // Décrémenter le compteur break; // Sortir de la boucle après suppression } } } // Méthode pour afficher tous les livres void afficherLivres() { cout << "Liste des livres:" << endl; for (int i = 0; i < nombreLivres; ++i) { livres[i]->afficher(); // Afficher chaque livre } } ~Bibliotheque() { // Destructeur pour libérer la mémoire for (int i = 0; i < nombreLivres; ++i) { delete livres[i]; // Libérer chaque livre } } }; // Fonction principale int main() { Bibliotheque biblio; // Créer des livres dynamiquement Livre* livre1 = new Livre("L'Étranger", "Albert Camus", "6547165001881"); Livre* livre2 = new Livre("Le père Goriot", "Honoré de Balzac", "661100321741"); // Ajouter les livres à la bibliothèque biblio.ajouterLivre(livre1); biblio.ajouterLivre(livre2); // Afficher la liste des livres biblio.afficherLivres(); // Supprimer un livre par son ISBN biblio.supprimerLivre("6547165001881"); // Afficher la liste mise à jour des livres cout << "\nAprès suppression de L'Étranger:" << endl; biblio.afficherLivres(); return 0; // Fin du programme }
Sortie:
Liste des livres: L'Étranger par Albert Camus, ISBN: 6547165001881 Le père Goriot par Honoré de Balzac, ISBN: 661100321741 Après suppression de L'Étranger: Liste des livres mise à jour: Le père Goriot par Honoré de Balzac, ISBN: 661100321741
Exercice 4:
Écrire un programme C++ pour créer une classe appelée « Employee » avec un nom, un poste et un salaire, ainsi que des méthodes pour calculer et mettre à jour le salaire.
Diagrame de classe:

#include <iostream> #include <string> using namespace std; // Définir la classe Employee class Employee { private: // Déclarer une variable privée pour stocker le nom de l'employé string nom; // Déclarer une variable privée pour stocker le poste de l'emp string poste; // Déclarer une variable privée pour stocker le salaire de l'emp double salaire; public: // Constructeur de la classe Employee qui initialise les // variables nom, poste et salaire Employee(string nom, string poste, double salaire) { // Attribue à la variable nom la valeur du paramètre nom this->nom = nom; // Attribue à la variable poste la valeur du paramètre poste this->poste = poste; // Attribue à la variable salaire la valeur du paramètre // salaire fourni this->salaire = salaire; } // Méthode pour récupérer le nom de l'employé string getNom() { return nom; // Retourner la valeur de la variable nom } // Méthode pour définir le nom de l'employé void setNom(string nom) { // Attribue à la variable nom la valeur du paramètre nom this->nom = nom; } // Méthode pour récupérer le poste de l'employé string getPoste() { // Retourner la valeur de la variable poste return poste; } // Méthode pour définir le poste de l'employé void setPoste(string poste) { // Attribue à la variable poste la valeur du paramètre poste this->poste = poste; } // Méthode pour récupérer le salaire de l'employé double getSalaire() { // Retourner la valeur de la variable salaire return salaire; } // Méthode pour définir le salaire de l'employé void setSalaire(double salaire) { // Attribue à la variable salaire la valeur du paramètre // salaire fourni this->salaire = salaire; } // Méthode pour augmenter le salaire de l'employé d'un // pourcentage donné void augSalaire(double pourcentage) { // Calculer le nouveau salaire en augmentant le salaire // actuel du pourcentage donné salaire += salaire * pourcentage / 100; } // Méthode pour afficher les détails de l'employé void afficherEmployee() { // Afficher le nom de l'employé cout << "Nom: " << nom << endl; // Afficher le poste de l'employé cout << "Poste: " << poste << endl; // Afficher le salaire de l'employé cout << "Salaire: " << salaire << endl; } }; // Définir la fonction Main int main() { // Créer une instance de la classe Employee Employee e1("Alex Babtise", "Développeur", 80000); // Créer une autre instance de la classe Employee Employee e2("Emily Firoza", "Comptable", 70000); cout << "\nDétails de l'employé:" << endl; // Afficher les détails de e1 e1.afficherEmployee(); // Afficher les détails de e2 e2.afficherEmployee(); // Augmenter le salaire de e1 de 5% e1.augSalaire(5); // Augmenter le salaire de e2 de 10% e2.augSalaire(10); cout << "\nAprès l'augmentation des salaires:" << endl; cout << "\n5% pour 'Alex Babtise':" << endl; // Afficher les données mises à jour de e1 e1.afficherEmployee(); cout << "\n10% pour 'Emily Firoza':" << endl; // Afficher les données mises à jour de e2 e2.afficherEmployee(); return 0; // Fin du programme }
Sortie:
Détails de l'employé: Nom: Alex Babtise Poste: Développeur Salaire: 80000.0 Nom: Emily Firoza Poste: Comptable Salaire: 70000.0 Après l'augmentation des salaires: 5% pour 'Alex Babtise': Nom: Alex Babtise Poste: Développeur Salaire: 84000.0 10% pour 'Emily Firoza': Nom: Emily Firoza Poste: Comptable Salaire: 77000.0
Exercice 5:
Écrivez un programme C++ pour créer une classe appelée « Banque » avec une collection de comptes et des méthodes pour ajouter et supprimer des comptes, et pour déposer et retirer de l'argent. Définissez également une classe appelée « Compte » pour gérer les détails du compte d'un client particulier.
Diagrame de classe:

#include <iostream> #include <string> using namespace std; // Définir la classe Compte class Compte { private: string nom; // Nom du titulaire du compte string numCompte; // Numéro de compte double solde; // Solde du compte public: // Constructeur de la classe Compte Compte(string nom, string numCompte, double solde) { this->nom = nom; this->numCompte = numCompte; this->solde = solde; } // Méthode pour récupérer le nom du titulaire du compte string getNom() { return nom; } // Méthode pour définir le nom du titulaire du compte void setNom(string nom) { this->nom = nom; } // Méthode pour récupérer le numéro de compte string getNumCompte() { return numCompte; } // Méthode pour définir le numéro de compte void setNumCompte(string numCompte) {this->numCompte = numCompte;} // Méthode pour récupérer le solde du compte double getSolde() { return solde; } // Méthode pour définir le solde du compte void setSolde(double solde) { this->solde = solde; } // Méthode de dépôt d'un montant sur le compte void deposer(double montant) { solde += montant; } // Méthode de retrait d'un montant du compte void retirer(double montant) { solde -= montant; } // Méthode pour récupérer les informations sur le compte string getCompteInfo() { return "Nom: "+ nom +", Numéro de compte: "+ numCompte +", Solde: "+ to_string(solde); } }; // Définir la classe Banque class Banque { private: Compte* comptes[100]; // Tableau pour stocker les comptes int count; // Compteur de comptes public: // Constructeur de la classe Banque Banque() { count = 0; // Initialiser le compteur de comptes } // Méthode pour ajouter un compte à la liste des comptes void addCompte(Compte* compte) { comptes[count++] = compte; // Ajouter le compte } // Méthode pour supprimer un compte de la liste des comptes void removeCompte(Compte* compte) { // Implémentation simple pour l'exemple for (int i = 0; i < count; i++) { if (comptes[i] == compte) { for (int j = i; j < count - 1; j++) { // Déplacer les éléments comptes[j] = comptes[j + 1]; } count--; // Réduire le compteur break; } } } // Méthode pour déposer de l'argent sur un compte spécifique void deposerArgent(Compte* compte, double montant) { compte->deposer(montant); } // Méthode pour retirer de l'argent d'un compte spécifique void retirerArgent(Compte* compte, double montant) { compte->retirer(montant); } // Méthode pour obtenir la liste de tous les comptes Compte** getComptes() { return comptes; } int getCount() { return count; } //Récupérer le nombre de comptes }; // Définir la fonction main int main() { // Créer un nouvel objet Banque Banque b; // Créer trois nouveaux objets Compte Compte* cpt1 = new Compte("Alex Babtise", "C101", 8000); Compte* cpt2 = new Compte("Ali Koris", "C102", 6500); Compte* cpt3 = new Compte("Bob Finor", "C103", 50000); // Ajouter les trois comptes au Banque b b.addCompte(cpt1); b.addCompte(cpt2); b.addCompte(cpt3); // Récupérer la liste des comptes de la Banque b cout << "Liste des comptes:" << endl; for (int i = 0; i < b.getCount(); i++) { cout << b.getComptes()[i]->getCompteInfo() << endl; } // Afficher un message indiquant le début d'une opération de // dépôt cout << "\nAprès avoir déposé 500 dans cpt1:" << endl; b.deposerArgent(cpt1, 500); cout << cpt1->getCompteInfo() << endl; // Afficher un message indiquant qu'il n'y a pas de transaction // pour cpt2 cout << "Pas de transaction dans cpt2:" << endl; cout << cpt2->getCompteInfo() << endl; // Afficher un message indiquant le début d'une opération de // retrait cout << "Après avoir retiré 2000 de cpt3 :" << endl; b.retirerArgent(cpt3, 2000); cout << cpt3->getCompteInfo() << endl; // Libérer la mémoire delete cpt1; delete cpt2; delete cpt3; return 0; }
Sortie:
Nom: Alex Babtise, Numéro de compte: C101, Solde: 8000.0 Nom: Ali Koris, Numéro de compte: C102, Solde: 6500.0 Nom: Bob Finor, Numéro de compte: C103, Solde: 50000.0 Après avoir déposé 500 dans cpt1: Nom: Alex Babtise, Numéro de compte: C101, Solde: 8500.0 Pas de transaction dans cpt2: Nom: Ali Koris, Numéro de compte: C102, Solde: 6500.0 Après avoir retiré 2000 de cpt3 : Nom: Bob Finor, Numéro de compte: C103, Solde: 48000.0
Éditeur de code C++: Testez votre code en ligne!
Exercices corrigés C++ - Programmation Orientée Objet | Partie 2
Exercices corrigés C++ - Programmation Orientée Objet | Partie 3
Exercices corrigés C++ - Programmation Orientée Objet | Partie 4
Exercices corrigés C++ - Programmation Orientée Objet | Partie 5
Exercices corrigés C++ - Programmation Orientée Objet | Partie 6

- Exercice C++ Corrigé pour Débutant | Partie 1
- Exercice C++ Corrigé pour Débutant | Partie 2
- Exercice C++ Corrigé pour Débutant | Partie 3
- Exercice C++ Corrigé pour Débutant | Partie 4
- Exercice C++ Corrigé pour Débutant | Partie 5
- Exercice C++ Corrigé pour Débutant | Partie 6
- Exercice C++ Corrigé pour Débutant | Partie 7
- Exercice C++ Corrigé pour Débutant | Partie 8
- Exercice C++ Corrigé pour Débutant | Partie 9
- Exercice C++ Corrigé pour Débutant | Partie 10
- Exercices corrigés C++ – Programmation Orientée Objet | Partie 1
- Exercices corrigés C++ – Programmation Orientée Objet | Partie 2
- Exercices corrigés C++ – Programmation Orientée Objet | Partie 3
- Exercices corrigés C++ – Programmation Orientée Objet | Partie 4
- Exercices corrigés C++ – Programmation Orientée Objet | Partie 5
- Exercices corrigés C++ – Programmation Orientée Objet | Partie 6
- Exercices corrigés C++ les classes et l’héritage – Partie 1
- Exercices corrigés C++ les classes et l’héritage – Partie 2
- Exercice C++ Corrigé – Partie 1