Prepa-A2 Programmation Orientée Objet 1 Dr.-Ing. Hajer Fradi ISSAT Sousse 2018/
Prepa-A2 Programmation Orientée Objet 1 Dr.-Ing. Hajer Fradi ISSAT Sousse 2018/2019 Corrigé de Série de révision Exercice n°1: 1) class Joueur { public: Joueur(const string & n, int num); string get_nom() const; int get_numero() const; bool operator<(const Joueur & j); private: string nom; int numero; }; Joueur::Joueur(const string & n, int num) : nom(n), numero(num) { } string Joueur::get_nom() const { return nom; } int Joueur::get_numero() const { return numero; } 2) bool Joueur::operator<(const Joueur & j) { return numero < j.numero; } 3) class Equipe { public: Equipe(const string & n, Joueur & cap); void ajouter_joueur(const Joueur & j); void retirer_joueur(const string & nom); void afficher() const; private: string nom; Joueur & capitaine; vector< Joueur > joueurs; }; Equipe::Equipe(const string & n, Joueur & cap) : nom(n), capitaine(cap) { } void Equipe::ajouter_joueur(const Joueur & j) { joueurs.push_back(j); } void Equipe::retirer_joueur(const string & nom) { for (size_t i = 0; i < joueurs.size(); ++i) { if (joueurs[i].get_nom() == nom) { Prepa-A2 Programmation Orientée Objet 1 Dr.-Ing. Hajer Fradi ISSAT Sousse 2018/2019 joueurs[i] = joueurs[taille-1]; joueurs.pop_back(); } } } void Equipe::afficher() const { cout << "Equipe " << nom << endl; cout << "capitaine: " << capitaine.get_nom() << endl; size_t taille = joueurs.size(); for (size_t i = 0; i < taille; ++i) { cout << joueurs[i].get_nom() << " " << joueurs[i].get_numero() << endl; Exercice n°2 : Date::Date(int jour, int mois, int annee) {jour_= jour; mois_= mois; annee_=annee;} Parti::Parti (string candidat, string nomParti, string nomChef) { candidat_ = candidat; nomParti_ = nomParti; nomChef_= nomChef; } Vote::Vote(int jourScrutin, int moisScrutin, int anneeScrutin, string circonscription) :dateScrutin_(jourScrutin, moisScrutin,anneeScrutin), circonscription_(circonscription) { } VoteJourElection::VoteJourElection(int jourScrutin, int moisScrutin, int anneeScrutin,string circonscription, string bureauScrutin):Vote(jourScrutin, moisScrutin,anneeScrutin,circonscription) { bureauScrutin_ = bureauScrutin; } VoteAnticipation::VoteAnticipation (int jourScrutin, int moisScrutin, int anneeScrutin,string circonscription, int jourAnticipation, int moisAnticipation, int anneeAnticipation) :Vote(jourScrutin, moisScrutin,anneeScrutin,circonscription) jourAnticipation_(jourAnticipation, moisAnticipation, anneeAnticipation) { } Exercice n°3: class ObjetPostal { protected: string origine; string destination; int code_postal; float poids; float volume; int taux_recommandation; public: ObjetPostal(string o="inconnue", string d="inconnue", int c=0, int p=0, float v=0, int t=0){origine=o;destination=d; code_postal=c; poids=p; volume=v; taux_recommandation=t;} virtual ~ObjetPostal(){} float getVolume()const {return volume;} void setVolume(float v) {volume=v;} virtual void affiche()const {cout<<code_postal<<"/"<<destination<<"/"<<taux_recommandation<<"/";} virtual float calcul_tarif_Affranchissement()=0; virtual float calcul_tarif_remboursement()=0; Prepa-A2 Programmation Orientée Objet 1 Dr.-Ing. Hajer Fradi ISSAT Sousse 2018/2019 }; class Lettre : public ObjetPostal { private: bool urgente; public: Lettre(bool u=false){urgente=u;} ~Lettre(){} void affiche()const{cout<<"Lettre"; ObjetPostal::affiche(); cout <<"/"; if (urgente) cout<<"urgente"<<endl; else cout<<"ordinaire"<<endl;} float calcul_tarif_Affranchissement(){ float res=0.5; if(taux_recommandation==1) res+=1; else if (taux_recommandation==2) res+=1.5; if(urgente) res+=0.30; return res;} float calcul_tarif_remboursement(){ float res; if(taux_recommandation==0) res=0; else if (taux_recommandation==1) res=1.5; else if (taux_recommandation==2) res=15; return res;} }; class Colis : public ObjetPostal{ private: string declareContenu; float valeur_déclarée; public: Colis(string dc="mystere", float vd=0){declareContenu=dc; valeur_déclarée=vd;} ~Colis(){} void affiche()const{cout<<"Colis";ObjetPostal::affiche(); cout<<volume<<"/"<<valeur_déclarée<<endl;} float calcul_tarif_Affranchissement(){ float res=2; if(taux_recommandation==1) res+=0.5; else if (taux_recommandation==2) res+=1.5; if(volume>(1/8)) {res+=3;} return res;} float calcul_tarif_remboursement(){ float res; if(taux_recommandation==0) res=0; else if (taux_recommandation==1) res=0.1*valeur_déclarée; else if (taux_recommandation==2) res=0.5*valeur_déclarée; return res;} }; Question 2 class SacPostal{ private: Vector <ObjetPostal*> contenu; float capacite_maximale; public: SacPostal(float cap=0.5){capacite_maximale=cap;} void ajouter(ObjetPostal* po) {if (po->getVolume()< capacite_maximale) {contenu.push_back(po); capacite_maximale-=po->getVolume();}} float volume() const { float v=0; Vector <ObjetPostal*>::iterator it; Prepa-A2 Programmation Orientée Objet 1 Dr.-Ing. Hajer Fradi ISSAT Sousse 2018/2019 for (it=contenu.begin(); i!=cntenu.end(); it++) v+=(*it)->getVolume(); return v;} void afficher()const {for (int i=0; i<contenu.size(); i++) contenu[i]->affiche(); } void supprimer(ObjetPostal* po) { Vector <ObjetPostal*>::iterator pos; pos=find(contenu.begin(), contenu.end(), po) ; if (pos !=contenu.end()) contenu.erase (pos) ; else cout << "Objet non existant " << end ; } bool rechercher(ObjetPostal* po) {return (contenu.exist(po)) ;} }; Question 3 int main (){ SacPostal *pSac = new SacPostal(); Lettre *pl1 = new Lettre(); Lettre *pl2 = new Lettre(); Colis *pc1 = new Colis(); Colis *pc2 = new Colis(); pSac->ajouter (pc1); pSac->ajouter (pc2); pSac->ajouter (pl1); pSac->ajouter (pl2); pSac->afficher() ; return 0; } uploads/Sports/ serie-revision-corrige.pdf
Documents similaires
-
25
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jui 09, 2021
- Catégorie Sports
- Langue French
- Taille du fichier 0.0383MB