Université Sultan Moulay Slimane
FP – Khouribga
Département : Mathématiques et Informatique
Filière : Mathématiques, Informatique, Physique (S4)
Module : POO (C++)
TP : POO (C++)
Année Universitaire : 2024/2025
Pr. Ibtissam Bakkouri
TP - 8
Exercice 1 :
1. Créez une classe de base Livre avec un attribut titre et une méthode virtuelle afficher().
2. Créez deux classes dérivées : Roman et Magazine, qui redéfinissent la méthode afficher().
3. Utilisez un vector<Livre*> pour stocker plusieurs types de livres.
4. Affichez les détails de chaque livre à l’aide du polymorphisme.
Exercice 2 :
1. Créez une classe Animal avec une méthode virtuelle parler().
2. Implémentez les classes Chien et Chat qui redéfinissent parler().
3. Simulez une file d’attente d’animaux à l’aide de queue<Animal*>.
4. Faites parler chaque animal.
Exercice 3 :
1. Créez une classe Notification avec une méthode virtuelle envoyer().
2. Implémentez Email et SMS comme classes dérivées.
3. Utilisez une list<Notification*> pour stocker différents types de notifications.
4. Parcourez la liste pour envoyer chaque notification.
Exercice 4 :
1. Définissez une classe Forme avec une méthode virtuelle afficher().
2. Créez les classes Cercle et Rectangle avec leur propre implémentation.
3. Stockez les formes dans un vector<Forme*>.
4. Parcourez et affichez chaque forme.
Exercice 5 :
1. Définissez une classe Transport avec une méthode virtuelle deplacer().
2. Créez Voiture et Train.
3. Utilisez un deque<Transport*> pour simuler un terminal de transport.
4. Appelez la méthode deplacer() sur chaque objet.
Exercice 6 :
1. Définir une classe de base Robot contenant une méthode virtuelle executerTache().
2. Créer deux classes dérivées :
● RobotMenager : redéfinit executerTache() pour afficher un message tel que "Le
robot ménager nettoie la maison.".
● RobotIndustriel : redéfinit executerTache() pour afficher un message tel que "Le
robot industriel assemble des pièces.".
3. Utiliser un conteneur std::map<int, Robot*> pour stocker des robots avec un identifiant
unique.
4. Ajouter plusieurs objets de type RobotMenager et RobotIndustriel dans la map.
5. Parcourir la map et appeler la méthode executerTache() pour chaque robot afin de démontrer
le polymorphisme.
Exercice 7 :
1. Créer une classe de base Vehicule avec :
● Une méthode virtuelle afficherType().
● Un attribut statique totalVehicules.
● Une méthode statique afficherTotal().
2. Créer deux classes dérivées :
● Voiture avec un attribut statique totalVoitures, redéfinissant afficherType() pour
afficher "Je suis une voiture".
● Camion avec un attribut statique totalCamions, redéfinissant afficherType()
pour afficher "Je suis un camion".
3. Chaque fois qu’un objet est créé, incrémenter les compteurs correspondants.
4. Utiliser un std::map<std::string, Vehicule*> pour associer un nom de véhicule à son objet.
5. Afficher :
● Le total global des véhicules.
● Le nombre de voitures et de camions créés.
● Parcourir la map et afficher le type de chaque véhicule.