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 - 9
Exercice 1 :
Dans cet exercice, on vous demande de concevoir un système orienté objet en C++ permettant de
gérer différents types de comptes bancaires. Vous devez commencer par créer une classe de base
nommée CompteBancaire contenant les attributs titulaire (le nom du client) et solde (le montant
disponible dans le compte), ainsi que des méthodes de base telles que deposer(), retirer() et une
méthode virtuelle afficher() permettant d’afficher les informations du compte. Cette classe doit
également inclure un attribut statique compteurComptes permettant de compter le nombre total
de comptes créés, et une méthode statique afficherNombreComptes() pour afficher cette valeur.
Ensuite, vous devez créer deux classes dérivées : CompteCourant, qui hérite de
CompteBancaire et ajoute un attribut decouvertAutorise, et CompteEpargne, qui ajoute un
attribut tauxInteret ainsi qu’une méthode calculerInterets() permettant d’ajouter les intérêts au
solde. Chaque classe doit redéfinir la méthode afficher() pour afficher ses propres informations.
Enfin, vous devez créer plusieurs objets de ces deux types de comptes, les stocker dans un
conteneur de type vector<CompteBancaire*>, puis itérer sur ce vecteur pour afficher les
informations de chaque compte de manière polymorphe. Vous devrez aussi afficher le nombre
total de comptes créés grâce à la méthode statique fournie.
Exercice 2 :
Dans cet exercice, vous allez modéliser un système de gestion des enseignants d’un établissement
en utilisant la programmation orientée objet. Commencez par définir une classe de base appelée
Professeur, qui contient les attributs communs comme nom, prénom et matricule, ainsi qu’une
méthode virtuelle afficher() pour afficher les informations du professeur. Ajoutez à cette classe
un attribut statique nommé nombreProfesseurs, qui permettra de compter le nombre total
d’objets Professeur créés, ainsi qu’une méthode statique afficherNombreProfesseurs() pour
l’afficher. Ensuite, créez deux classes dérivées : ProfesseurPermanent, qui contient un attribut
supplémentaire salaireFixe, et ProfesseurVacataire, qui contient les attributs nombreHeures et
tarifHoraire, ainsi qu’une méthode calculerSalaire() pour calculer le salaire en multipliant les
heures par le tarif horaire. Chaque classe doit redéfinir la méthode afficher() pour montrer ses
propres informations spécifiques. Enfin, créez un conteneur vector<Professeur*> pour stocker
différents types de professeurs, et utilisez le polymorphisme pour afficher les informations de
tous les professeurs. À la fin, utilisez la méthode statique pour afficher le nombre total de
professeurs créés.
Exercice 3 :
Dans cet exercice, vous allez modéliser un système de gestion de véhicules dans une agence de
location en C++. Commencez par créer une classe de base appelée Vehicule avec des attributs
génériques tels que marque, modele et immatriculation, ainsi qu’une méthode virtuelle
afficher() pour afficher les informations du véhicule. Ajoutez à cette classe un attribut statique
nbVehicules qui comptabilise le nombre de véhicules créés, et une méthode statique
getNbVehicules() pour retourner cette valeur. Ensuite, créez deux classes dérivées : Voiture avec
un attribut nombrePortes, et Camion avec un attribut capaciteCharge. Chaque classe doit
redéfinir la méthode afficher() pour inclure ses informations spécifiques. Pour la classe Camion,
ajoutez également une méthode estLourd() qui retourne vrai si la capacité de charge dépasse une
certaine valeur (par exemple 3 tonnes). Ensuite, dans le programme principal, créez un
vector<Vehicule*> pour stocker un ensemble de véhicules variés, puis affichez leurs
informations en utilisant le polymorphisme. Enfin, affichez le nombre total de véhicules créés en
appelant la méthode statique.
Exercice 4 :
Dans cet exercice, vous allez gérer différents types de cartes bancaires. Créez une classe de base
CarteBancaire avec les attributs numero, titulaire et solde, ainsi qu’une méthode virtuelle
afficherInfo(). Créez deux classes dérivées : CarteCredit (avec un attribut plafondCredit et une
méthode utiliserCredit()), et CarteDebit (avec un attribut compteLie). Chaque classe doit
redéfinir afficherInfo() selon son type. Ajoutez un champ statique nbCartes et une méthode
statique qui affiche le nombre total de cartes créées. Utilisez un vector<CarteBancaire*> pour
gérer un portefeuille de cartes et exploitez le polymorphisme pour afficher les informations de
chaque carte.
Exercice 5 :
Dans cet exercice, vous allez modéliser les membres d’une université en utilisant les principes de
la programmation orientée objet. Vous devez créer une classe de base appelée
MembreUniversite, contenant les attributs nom, prenom et id, ainsi qu’une méthode virtuelle
afficherInfos() servant à afficher les informations générales d’un membre. Ensuite, vous allez
dériver deux classes : Etudiant, qui ajoute les attributs filiere et niveau, et Enseignant, qui
ajoute les attributs grade et departement. Chaque classe dérivée doit redéfinir la méthode
afficherInfos() pour afficher ses propres informations. La classe MembreUniversite doit
également comporter un attribut statique nbMembres permettant de compter le nombre total de
membres créés, ainsi qu’une méthode statique getNbMembres() qui retourne ce nombre.
L’objectif est de créer une liste (par exemple un vector<MembreUniversite*>) contenant à la
fois des étudiants et des enseignants, puis de parcourir cette liste pour afficher les informations à
l’aide du polymorphisme, et enfin d’afficher le nombre total de membres créés en utilisant la
méthode statique.