1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206
| #include <iostream>
#include <vector>
using namespace std;
// Création des classes
class Vehicules
{
public:
Vehicules(int prix, int annee); // constructeur avec 2 paramètres : int prix et un int année
virtual void afficher() const=0; //Fonction virtuelle pure à redéfinir dans les classes dérivées -> classe abstraite
// plus possible d'instancier un objet de cette classe
virtual ~Vehicules(); // destructeur de véhicule virtuelle par ce que il y a une fonction virtuelle dans la classe
protected:
int m_prix;
int m_anneeConstruction;
};
class Voitures : public Vehicules
{
public:
Voitures(int prix, int annee, int portes);//constructeur avec 3 paramètres int : prix, année et portes
virtual void afficher() const;
virtual ~Voitures(); // Destructeur de voitures
void roue() const;
private:
int m_portes;
};
class Moto : public Vehicules
{
public:
Moto(int prix, int annee, double vitesseMax);//constructeur avec 2 paramètres int et un 1 paramètre double : prix, année et vitesseMax
virtual void afficher() const;
virtual ~Moto();
void roue() const;
private:
double m_vitesse;
};
class Camion : public Vehicules
{
public:
Camion(int prix, int annee, double poidsNet);
virtual void afficher() const;
virtual~Camion();
void roue() const;
private:
double m_poids;
};
//Implémentation des constructeurs
Vehicules::Vehicules(int prix, int annee) : m_prix(prix), m_anneeConstruction(annee) {}
Voitures::Voitures(int prix, int annee, int portes) : Vehicules(prix, annee) , m_portes(portes) {}
Moto::Moto(int prix, int annee, double vitesseMax) : Vehicules(prix, annee) , m_vitesse(vitesseMax) {}
Camion::Camion(int prix, int annee, double poidsNet) : Vehicules(prix, annee), m_poids(poidsNet) {}
// Implémentation des fonctions
void Vehicules::afficher() const
{
cout <<"Ceci est un vehicule coutant " << m_prix << " euros et fabrique en " << m_anneeConstruction << endl;
}
void Voitures::afficher() const
{
cout << "Ceci est une voiture avec " << m_portes << " portes et coutant " << m_prix << " euros et fabrique en " << m_anneeConstruction << endl;
}
void Voitures::roue() const
{
cout << " le nombre de roues est 4" << endl;
}
Voitures addVoiture() //fonction hors classe entrée voiture
{
int a,b,c;
cout << "Prix du vehicule : ";
cin >> a;
cout << "Annee de fabrication du vehicule : ";
cin >> b;
cout << "Nombre de portes : ";
cin >> c;
Voitures maVoiture(a,b,c); // Appelle le constructeur de voiture
return maVoiture;
}
void Moto ::afficher() const
{
cout << "Ceci est une moto allant a " << m_vitesse << " km/h et coutant " << m_prix << " euros et fabrique en " << m_anneeConstruction << endl;
}
void Moto::roue() const
{
cout << " le nombre de roues est 2" << endl;
}
Moto addMoto() //Fonction hors classe entrée moto
{
int a,b;
double c;
cout << "Prix de la moto: ";
cin >> a;
cout << "Annee de fabrication du vehicule : ";
cin >> b;
cout << "Vitesse maxi de la moto : ";
cin >> c;
Moto maMoto(a,b,c);
return maMoto;
}
void Camion::afficher() const
{
cout << "Ceci est un camion pouvant transporter " << m_poids << "kg et coutant " << m_prix << " euros et fabrique en " << m_anneeConstruction << endl;
}
void Camion::roue() const
{
cout << " le nombre de roues est 8" << endl;
}
Camion addCamion() // fonction hors classe entrée camion
{
int a,b;
double c;
cout << "Prix du camion: ";
cin >> a;
cout << "Annee de fabrication du vehicule : ";
cin >> b;
cout << "Poids net de chargement : ";
cin >> c;
Camion monCamion(a,b,c);
return monCamion;
}
// Implémentation des destructeurs
Vehicules::~Vehicules() {}
Voitures::~Voitures() {}
Moto::~Moto() {}
Camion::~Camion() {}
int main()
{
// déclaration des variables
vector <Vehicules*> listeVehicules; // vecteur de pointeurs sur vehicules
int i;
bool fQuit = false;
int choix;
while(fQuit==false)
{
cout << "Entree de nouveaux vehicules faite votre choix\n";
cout << " (1)Entrez une voiture \n (2)Entrez une moto\n (3)Entrez un camion\n (4)Quittez\n Votre choix : " ;
cin >> choix;
switch(choix)
{
case 1 : listeVehicules.push_back(new Voitures(addVoiture()));
break;
case 2 : listeVehicules.push_back(new Moto(addMoto()));
break;
case 3 : listeVehicules.push_back(new Camion(addCamion()));
break;
default : fQuit = true;
break;
}
}
cout << "Desirez vous voir la liste des vehicules en stock :";
cout << "(1)Oui (2)Non : ";
cin >> choix;
if(choix == 1)
{
cout << "Num Caracteristiques du vehicule \n";
for(i=0; i<listeVehicules.size(); i++){
cout << i << " "; listeVehicules[i]->afficher();}
for(i=0; i<listeVehicules.size(); i++){
delete listeVehicules[i];
listeVehicules[i] = nullptr;}
}
else
return 0;
} |
Partager