/* IFT1169 - travail pratique #02 - 13-mai -2006 v1.00 M.Lokbani - à partir d'une idée originale de ML-UKO contact: lokbani@iro.umontreal.ca Copyright (C) 1999-2006 Université de Montréal Département d'informatique et de Recherche Opérationnelle Mohamed Lokbani -- Tous Droits Réservés -- All Rights Reserved -- Description: ------------ Fichier d'essai. Description: Ce fichier contient la méthode main, permettant de tester les différents éléments des classes décrites dans ce travail pratique. */ #include "Voyage.h" #include "TransAvion.h" #include "TransVdL.h" #include "TransBase.h" #include #include using namespace std; void afficheDetailsVoyage(Voyage voyage) { cout << "Avec un carburant a $" << setiosflags (ios::fixed | ios::showpoint) << TransBase::getPrixCarburant() << " par litre:\n"; voyage.affiche(); cout << endl; for (int i = 0; i < voyage.getnbreEtapes(); i++) { TransBase *part = voyage.getEtape(i); cout << " " << (i+1) << ": "; part->affiche(); cout << endl; cout << " cout: " << part->getCout() << "$\n"; cout << " temps: " << part->getTemps() << " heures\n"; } // end for cout << "Distance totale: " << voyage.getDistance() << " kms.\n"; cout << "Cout total: " << voyage.getCout() << "$\n"; cout << "Duree du voyage: " << voyage.getTemps() << " heures\n"; if (!voyage.estAllerRetour()) cout << "Ce voyage n'est pas un aller retour.\n"; else cout << "Ce voyage est un aller retour.\n"; if (!voyage.verifiesNoms()) cout << "Avertissement: Les noms des villes ne sont pas consistants.\n"; } /* * La méthode principale démontrant l'utilisation des classes Voyage, TransBase * TransVdL et TransAvion */ int main() { cout << setprecision(2); cout << "\n--------------------------------------------\n\n"; Voyage VoyageLondres("Voyage Londres"); TransBase *etape1 = new TransBase("maison","destination",100); VoyageLondres.ajoutEtape(etape1); cout << "\nVersion initiale de l'etape 1 :\n"; etape1->affiche(); cout << endl; etape1->setDistance(120); etape1->setvilleDepart("Drummondville"); etape1->setvilleArrivee("Montreal"); cout << "Version mise a jour de l'etape 1 :\n"; etape1->affiche(); cout << endl; TransAvion *etape2 = new TransAvion("Montreal", "Londres", 5500, 11, 22); cout << "\nVersion initiale de l'etape 2 :\n"; etape2->affiche(); cout << endl; VoyageLondres.ajoutEtape(etape2); etape2->setTarif(850); etape2->setDuree(6); cout << "Version mise a jour de l'etape 2:\n"; etape2->affiche(); cout << endl; TransVdL *etape3 = new TransVdL("Londres", "Oxford", 95, 33, 44); cout << "\nVersion initiale de l'etape 3 :\n"; etape3->affiche(); cout << endl; VoyageLondres.ajoutEtape(etape3); etape3->setPrixBase(50); etape3->setPrixParKm(.1); cout << "Version mise a jour de l'etape 3 :\n"; etape3->affiche(); cout << endl; cout << "\n--------------------------------------------\n\n"; afficheDetailsVoyage(VoyageLondres); cout << "\n--------------------------------------------\n\n"; TransBase::setPrixCarburant(1.2); cout << "Avec un carburant a $1.20 le litre, le cout total de ce voyage est : " << VoyageLondres.getCout() << endl; cout << "\n--------------------------------------------\n"; }