0% ont trouvé ce document utile (0 vote)
26 vues4 pages

Avion

Ce document présente un exercice de programmation en C++ sur la gestion d'un aéroport à travers le polymorphisme, en utilisant des classes pour représenter des véhicules tels que des voitures et des avions. Il décrit la création d'une classe Aeroport qui manipule une collection hétérogène de véhicules en utilisant des pointeurs pour permettre le polymorphisme. Le document inclut également des instructions pour modifier les classes existantes, écrire des méthodes pour gérer les véhicules, et tester le programme avec des données externes.

Transféré par

cekoje5159
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

Thèmes abordés

  • Gestion d'objets,
  • C++,
  • Gestion des erreurs,
  • Algorithmes,
  • Polymorphisme,
  • Collaboration en programmation,
  • Affichage de données,
  • Gestion des exceptions,
  • Réutilisation de code,
  • Types d'objets
0% ont trouvé ce document utile (0 vote)
26 vues4 pages

Avion

Ce document présente un exercice de programmation en C++ sur la gestion d'un aéroport à travers le polymorphisme, en utilisant des classes pour représenter des véhicules tels que des voitures et des avions. Il décrit la création d'une classe Aeroport qui manipule une collection hétérogène de véhicules en utilisant des pointeurs pour permettre le polymorphisme. Le document inclut également des instructions pour modifier les classes existantes, écrire des méthodes pour gérer les véhicules, et tester le programme avec des données externes.

Transféré par

cekoje5159
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

Thèmes abordés

  • Gestion d'objets,
  • C++,
  • Gestion des erreurs,
  • Algorithmes,
  • Polymorphisme,
  • Collaboration en programmation,
  • Affichage de données,
  • Gestion des exceptions,
  • Réutilisation de code,
  • Types d'objets

L’aéroport revisité [pm03] - Exercice

Karine Zampieri, Stéphane Rivière

Unisciel algoprog Version 21 mai 2018

Table des matières


1 L’aéroport revisité / pgaeroport2 1
1.1 Classes de Véhicules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Classe Aeroport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Programme de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

C++ - L’aéroport revisité (TP)


Mots-Clés Polymorphisme d’inclusion 
Requis Classes, Classes (suite), Pointeurs, Héritage 
Difficulté • ◦ ◦ (1 h) 

Objectif
Cet exercice illustre le polymorphisme en utilisant une collection hétérogène de véhicules.

1 L’aéroport revisité / pgaeroport2

1.1 Classes de Véhicules

On souhaite créer une classe Aeroport permettant de gérer un ensemble de véhicules


constitué à la fois de voitures et d’avions.

Soient les définitions des classes Vehicule, Voiture| et \lstinlineAvion@ définies dans
l’exercice cité supra.
C++ @[[Link]] @[[Link]]
@[[Link]] @[[Link]]
@[[Link]] @[[Link]]

Incluez le(s) fichier(s) téléchargé(s) dans votre programme.

1
Unisciel algoprog – L’aéroport revisité [pm03] 2

Parcourez les classes de véhicules (Vehicule, Voiture et Avion|) et ajoutez le terme \lstinlinevirtual@
devant chaque méthode devant être virtuelle.

Supprimez toute méthode inutile du fait de la virtualité.

Orientation
Dans cet exercice, il y en a une seule.

Vérifiez que votre classe Vehicule définit le destructeur de façon virtuelle (puisque c’est
la classe de base).

1.2 Classe Aeroport

Manipulant des types d’objets différents (ici deux), pour garantir que la méthode invo-
quée est bien celle se rapportant à l’objet réel (et non à celle de la classe parente), nous
avons définis deux tableaux différents :
class Aeroport {
public:
void afficher() const;
void vider();
private:
vector<Voiture> m_garage; // parc de voitures
vector<Avion> m_hangar; // hangar d’avions
};

On souhaiterait maintenant pouvoir écrire cette classe comme suit :


class Aeroport {
public:
void afficher() const;
void ajouter(const Vehicule&);
void vider();
private:
vector<Vehicule> parc;
};

Pour indifféremment mettre dans le tableau dynamique des voitures et des avions, en
d’autres termes utiliser le polymorphisme (ou typage dynamique), il faut utiliser des
pointeurs (ou références) sur des objets plutôt que les objets eux-mêmes et donc utiliser
un vecteur de pointeurs (ou références) sur des véhicules, d’où :
class Aeroport {
public:
void ajouter(Vehicule*); //<- POINTEUR
private:
vector<Vehicule*> parc; //<- POINTEUR
};

Pour que le polymorphisme puisse être mis en oeuvre, il faut aussi que les méthodes que
l’on appelle sur les objets de type Vehicule soient virtuelles. De cette façon, si parc[k]
est un pointeur sur un avion, alors
Unisciel algoprog – L’aéroport revisité [pm03] 3

parc[k]->afficher

fera appel à la méthode d’affichage de la classe Avion et non celle de Vehicule.

Soit la définition de la classe Aeroport définie dans l’exercice cité supra. Il s’agit de définir
la nouvelle classe en modifiant celle-ci.
C++ @[[Link]] @[[Link]]

Modifiez les attributs en remplaçant le garage et le hangar par un vecteur de pointeurs


sur des Vehicule nommé parc.

Afin d’éviter les méthodes implicites, interdisez le constructeur de recopie et l’affectation


sur des Aeroports.

Écrivez le destructeur qui fera appel à la procédure vider afin de libérer proprement les
instances dynamiques.

Vérifiez que votre méthode charger(fn) n’a nul besoin d’être modifiée : elle est proprement
écrite.

Écrivez un accesseur size du nombre d’éléments dans le parc.

Écrivez une méthode ajouter(v) qui ajoute une instance dynamique de Vehicule v au
parc courant.

Réécrivez la méthode calculer(annee) puis supprimez les deux méthodes internes calculerGarage
et calculerHangar qui ne servent plus.

Réécrivez la méthode vider qui doit libérer les instances dynamiques puis vider le
conteneur.

Modifiez les méthodes ajouterVoiture et ajouterAvion de sorte qu’elles créent et ajoutent


une instance dynamique au parc.

1.3 Programme de test

Modifiez votre programme afin qu’il :


• Demande un nom de fichier contenant les données.
• Charge ce fichier.
• Affiche les données du parc.
• Enfin calcule le prix de l’argus de chaque véhicule.
Unisciel algoprog – L’aéroport revisité [pm03] 4

Téléchargez le fichier des données :


@[[Link]]
V Peugeot 1998 14732 2.5 5 180 12000. #voiture
V Porsche 1985 25000 6.5 2 280 81320. #voiture
V Fiat 2001 732 1.6 3 65 3000. #voiture
A Cessna 1972 123067 1 250 #avion
A Nain_C 1992 432109 0 1300 #avion

Testez. Résultat d’exécution :


Nom du fichier des donnees? [Link]
** Voiture: 2.5 litres, 5 portes, 180 CV, 12000 km
Veh: m = Peugeot, a = 1998, achat = 14732, argus = 11638.3
** Voiture: 6.5 litres, 2 portes, 280 CV, 81320 km
Veh: m = Porsche, a = 1985, achat = 25000, argus = 9500
** Voiture: 1.6 litres, 3 portes, 65 CV, 3000 km
Veh: m = Fiat, a = 2001, achat = 732, argus = 585.6
** Avion: HELICES, 250 heures de vol
Veh: m = Cessna, a = 1972, achat = 123067, argus = 92300.2
** Avion: REACTION, 1300 heures de vol
Veh: m = Nain_C, a = 1992, achat = 432109, argus = 375935
Purge des instances dynamiques....
Purge du conteneur...

Vous aimerez peut-être aussi