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
QCM sur C++ – Partie 1QCM sur C++ avec des réponses pour la préparation des concours, des tests en ligne, examens et aux certifications. Ces questions et réponses sur C++…Lire plus
- 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




Informer moi des nouveautés s’il vous plaît 🙏