0% ont trouvé ce document utile (0 vote)
14 vues3 pages

Polymorphisme en C++ : Véhicules et Médias

Transféré par

merbah2007
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
14 vues3 pages

Polymorphisme en C++ : Véhicules et Médias

Transféré par

merbah2007
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Elément de module : P.O.

O 1 (C++)
Série des TD 9 :
Le polymorphisme
Exercice 1 :

Créez un programme en C++ qui utilise le polymorphisme pour gérer différents types de véhicules.
Vous devez créer une hiérarchie de classes où la classe de base s'appelle Vehicule et les classes
dérivées représentent différents types de véhicules, tels que Voiture, Bateau, et Avion.

Chaque véhicule a une méthode virtuelle deplacer(), mais chaque type de véhicule se déplace
différemment. De plus, chaque véhicule a un attribut vitesse, mais le calcul du temps nécessaire pour
parcourir une distance varie en fonction du type de véhicule.

1. Créez la classe de base Vehicule avec une méthode virtuelle deplacer() et un attribut protégé
« vitesse ».
2. Créez la classe dérivée :
o Voiture : Se déplace sur la route, et la méthode deplacer() doit afficher un message
spécifique, comme "La voiture roule sur la route."
3. Ajoutez une méthode calculerTemps(double distance) dans chaque classe dérivée pour calculer
le temps nécessaire pour parcourir une distance donnée, en utilisant la formule temps = distance
/ vitesse.
4. Dans le main, alloué dynamiquement un tableau de véhicules, remplir le tableau avec des objets
alloué dynamiquement de type véhicule et voiture et afficher leur information par la suite.

Exercice 2 :

La bibliothèque universitaire "Bibliothèque de l'Université" souhaite gérer les livres et les


articles scientifiques qu’elle prête à ses étudiants.

1. Définir une classe Document ayant les fonctions suivantes :

 Un constructeur avec paramètres permettant d'initialiser tous les attributs protégé d'un
document : id (autoincrémenté), prix, durée, genre.
 La méthode prix_pret() qui calcule et retourne le prix standard du prêt d'un document. Le prix
est calculé comme suit :
o Le prix est égal à la durée de prêt (en jours) multipliée par un tarif de base de 1 dirham
par jour.
o Si le document est un bestseller (une nouveauté), un supplément de 5 dirhams est
ajouté.

4. Un article scientifique est un type spécifique de document.


 Un article est caractérisé par un attribut privé précisant son sujet (par exemple,
"Informatique", "Biologie", etc.), ainsi qu’un facteur de réduction sur le prix de prêt en
fonction de son sujet.

5. Définir une classe Article héritée de la classe Document :

 Implémentez un constructeur pour initialiser tous les attributs de l'article scientifique.


 Redéfinissez la méthode prix_pret() pour un article scientifique. Le prix est réduit en fonction
du sujet :
o Si l’article est en "Informatique", le prix de prêt est réduit de 10 dirhams.
o Si l’article est en "Biologie", le prix de prêt est réduit de 5 dirhams.
o Aucun ajustement pour d'autres sujets.

5. Utilisation du polymorphisme pour la méthode prix_pret() : La méthode prix_pret() doit être


appelée de manière polymorphique pour afficher le prix d'un document, qu'il soit un
document simple ou un article scientifique.
6. Définir la fonction afficherDocuments(Document * tab[], int n) :

 Cette fonction prend un tableau de documents et affiche les informations et le prix de prêt de
chaque document stocké dans ce tableau.

7. Dans le main tester les différentes fonctions

Exercice 3 :

1. Définir une classe Média ayant les attributs et les méthodes suivantes :

 Attributs protégés : titre, genre, durée, prix de base.


 Un constructeur avec paramètres permettant d'initialiser tous les attributs d'un média (titre,
genre, durée, prix de base).
 Une méthode prix_location() qui calcule et retourne le prix standard de location d'un média. Le
prix est calculé comme suit :
o Le prix de location est égal à la durée de location (en jours) multipliée par un tarif de
base de 2 dirhams par jour.
o Si le média est un "bestseller" (nouveau film ou série populaire), un supplément de 5
dirhams est ajouté.

2. Une série télévisée est un type spécifique de média.

 Une série est caractérisée par un attribut précisant le nombre de saisons, ainsi qu’un facteur de
réduction sur le prix de location en fonction du nombre de saisons.

3. Définir une classe Série héritée de la classe Média :

 Implémentez un constructeur pour initialiser tous les attributs d'une série télévisée.
 Redéfinissez la méthode prix_location() pour une série télévisée. Le prix est réduit en fonction
du nombre de saisons :
o Si la série a plus de 5 saisons, une réduction de 10 dirhams est appliquée.
o Si la série a moins de 3 saisons, une réduction de 3 dirhams est appliquée.
o Aucun ajustement pour d'autres nombres de saisons.

4. Un film est un type spécifique de média.

 Un film est caractérisé par un attribut précisant le réalisateur.

5. Définir une classe Film héritée de la classe Média :

 Implémentez un constructeur pour initialiser tous les attributs du film.


 Redéfinissez la méthode prix_location() pour un film. Le prix est ajusté si le genre du film est
"nouveau film" ou "blockbuster" :
o Un supplément de 8 dirhams est ajouté pour un film "nouveau film".
o Un supplément de 5 dirhams est ajouté pour un film "blockbuster".
o Aucun ajustement pour d'autres genres de films.

6. Utilisation du polymorphisme pour la méthode prix_location() :

 La méthode prix_location() doit être appelée de manière polymorphique pour afficher le prix de
location d'un média, qu’il soit un film ou une série télévisée.

7. Surcharger les opérateurs suivants :


 Surcharger l’opérateur d’entrée qui permet de récupérer les informations du média qu’il soit
film ou série
 Surcharger l’opérateur de sortie qui permet d’afficher les informations du média qu’il soit
film ou série
 Surcharger en externe l’opérateur de comparaison « <= » qui compare deux média selon la
durée quel que soit le type de média : série ou bien film

8. Définir la fonction afficherMédias(vector<Média*> tab) :

 Cette fonction prend un tableau de médias (films et séries) et affiche les informations et le
prix de location de chaque média stocké dans ce tableau.

9. Dans le main tester les différentes méthodes

Vous aimerez peut-être aussi