Exercices corrigés C++ – Programmation Orientée Objet | Partie 6
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:
Écrire un programme C++ pour créer une classe appelée « Animal » avec des attributs tels que le nom, la race et l’âge. Créez des sous-classes « Chien » et « Oiseau » qui ajoutent des attributs spécifiques tels que le jouet préféré pour les chiens et la taille de l’aile pour les oiseaux. Implémentez des méthodes pour afficher les détails de l’animal et calculer son âge en années humaines.
Diagrame de classe:

#include <iostream> #include <string> using namespace std; // Définir la classe Animal class Animal { protected: // Attributs de la classe Animal string nom; string race; int age; public: // Constructeur pour la classe Animal Animal(string nom, string race, int age) { this->nom = nom; this->race = race; this->age = age; } // Méthode d'affichage des détails de l'animal virtual void afficher() { cout << "Nom: " << nom << endl; cout << "Race: " << race << endl; cout << "Age: " << age << " années" << endl; } // Méthode de calcul de l'âge de l'animal en années humaines virtual int calculerAge() { if (race == "Chien") { return age * 7; } else { // En supposant que l'âge de l'oiseau en années humaines // est le même que l'âge réel return age; } } }; // Définir la classe Chien qui hérite de Animal class Chien : public Animal { private: // Attribut supplémentaire pour la classe Chien string jouet; public: // Constructeur pour la classe Chien Chien(string nom, int age, string jouet) : Animal(nom, "Chien", age) { this->jouet = jouet; } // Surcharger la méthode afficher pour inclure le jouet préféré void afficher() override { // Appeler la méthode de la classe mère Animal::afficher(); cout << "Le jouet préféré: " << jouet << endl; } }; // Définir la classe Oiseau qui hérite de Animal class Oiseau : public Animal { private: // Attribut supplémentaire pour la classe Oiseau double tailleAile; public: // Constructeur pour la classe Oiseau Oiseau(string nom, int age, double tailleAile) : Animal(nom, "Oiseau", age) { this->tailleAile = tailleAile; } // Surcharger la méthode afficher pour inclure la taille de // l'aile void afficher() override { // Appeler la méthode de la classe mère Animal::afficher(); cout << "La taille de l'aile: " << tailleAile << " mètres" << endl; } }; // Définir la fonction Main int main() { // Créer une instance de Chien Chien c("Beagle", 4, "Cordes"); // Créer une instance de Oiseau Oiseau o("Calopsitte", 3, 1.5); // Afficher les informations sur le chien cout << "Informations sur le chien:" << endl; c.afficher(); cout << "Âge du chien en années humaines: " << c.calculerAge() << endl; // Afficher les informations sur l'oiseau cout << "\nInformations sur l'oiseau:" << endl; o.afficher(); cout << "Âge de l'oiseau en années humaines: " << o.calculerAge() << endl; return 0; }
Sortie:
Informations sur le chien: Nom: Beagle Race: Chien Age: 4 années Le jouet préféré: Cordes Âge du chien en années humaines: 28 Informations sur l'oiseau: Nom: Calopsitte Race: Oiseau Age: 3 années La taille de l'aile: 1.5 mètres Âge de l'oiseau en années humaines: 3
Exercice 2:
Écrire un programme C++ pour créer une classe appelée « AbonnementGym » avec des attributs pour le nom du membre, le type d'adhésion et la durée. Créer une sous-classe « AbonnementPremium » qui ajoute des attributs pour la disponibilité d'un entraîneur personnel et l'accès au spa. Implémentez des méthodes pour calculer les frais d'adhésion et vérifier s'il existe des offres spéciales basées sur le type d'adhésion.
Diagrame de classe:

#include <iostream> #include <string> using namespace std; // Définir la classe AbonnementGym class AbonnementGym { protected: // Attributs pour AbonnementGym string nom; string type; int duree; // en mois public: // Constructeur pour AbonnementGym AbonnementGym(string nom, string type, int duree) { this->nom = nom; this->type = type; this->duree = duree; } // Méthode de calcul des frais d'adhésion virtual double calculerFrais() { double base = 50.0; // Frais de base par mois return base * duree; } // Méthode pour vérifier les offres spéciales virtual string checkOffresSpeciales() { if (type == "annuelle" || type == "Annuelle") { return "10% réduction sur l'adhésion annuelle."; } else { return "Aucune offre spéciale n'est disponible."; } } // Méthode pour afficher les détails sur l'abonnement virtual void afficher() { cout << "Nom du membre: " << nom << endl; cout << "Type d'abonnement: " << type << endl; cout << "Durée: " << duree << " mois" << endl; cout << "Frais d'abonnement: " << calculerFrais() << " €" << endl; cout << "Offre spéciale: " << checkOffresSpeciales() << endl; } }; // Définir la classe AbonnementPremium qui hérite de AbonnementGym class AbonnementPremium : public AbonnementGym { private: // Attributs supplémentaires pour AbonnementPremium bool entraineurPersonnel; bool AccesSpa; public: // Constructeur pour AbonnementPremium AbonnementPremium(string nom, string type, int duree, bool entraineurPersonnel, bool AccesSpa) : AbonnementGym(nom, type, duree) { this->entraineurPersonnel = entraineurPersonnel; this->AccesSpa = AccesSpa; } // Surcharger la méthode calculerFrais pour inclure des coûts // supplémentaires double calculerFrais() override { double base = AbonnementGym::calculerFrais(); double fraisSupplementaires = 0.0; if (entraineurPersonnel) { // Frais supplémentaires par mois pour un entraîneur // personnel fraisSupplementaires += 30.0 * duree; } if (AccesSpa) { // Frais supplémentaires par mois pour l'accès au spa fraisSupplementaires += 20.0 * duree; } return base + fraisSupplementaires; } // Surcharger la méthode afficher pour inclure les détails de // l'abonnement premium void afficher() override { // Appeler la méthode de la classe mère AbonnementGym::afficher(); cout << "Entraîneur personnel disponible: " << (entraineurPersonnel ? "Oui" : "Non") << endl; cout << "Accès au spa: " << (AccesSpa ? "Oui" : "Non") << endl; } }; // Définir la fonction Main int main() { // Créer une instance de AbonnementGym AbonnementGym a("Alex Babto", "Mensuel", 5); // Créer une instance de AbonnementPremium AbonnementPremium b("Emily Lyona", "Annuelle", 12, true, true); // Afficher les détails de l'abonnement de base cout << "Détails de l'abonnement de base:" << endl; a.afficher(); // Afficher les détails de l'abonnement premium cout << "\nDétails de l'abonnement premium:" << endl; b.afficher(); return 0; }
Sortie:
Détails de l'abonnement de base: Nom du membre: Alex Babto Type d'abonnement: Mensuel Durée: 5 months Frais d'abonnement: 250.0 € Offre spéciale: Aucune offre spéciale n'est disponible. Détails de l'abonnement premium: Nom du membre: Emily Lyona Type d'abonnement: Annuelle Durée: 12 months Frais d'abonnement: 1200.0 € Offre spéciale: 10% réduction sur l'adhésion annuelle. Entraîneur personnel disponible: Oui Accès au spa: Oui
É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