/* IFT1166 - démonstration #9 - exercice 06 18-novembre -2005 v1.01 M.Lokbani - MàJ pour A05 21-avril -2001 v1.00 M.Lokbani - énoncé examen final Hiver 2001. contact: lokbani@iro.umontreal.ca Copyright (C) 2003-2005 Université de Montréal Département d'informatique et de Recherche Opérationnelle Mohamed Lokbani -- Tous Droits Réservés -- All Rights Reserved -- Description: ------------ Question 1) Écrire la déclaration d’une classe D qui dérive par héritage public de la classe de base B. Réponse ------- ====> class D: public B {}; Question 2) Si une classe D, dérive par héritage public de la classe de base C, est créée puis plus tard détruite, quel est l’ordre d’appel des constructeurs et des destructeurs des classes D et C? Réponse ------- ====> constructeur classe Base C ====> constructeur classe Dérivée D ====> destructeur classe Dérivée D ====> destructeur classe Base C Question 2) Soit la classe de base Produit et la classe ProduitSolde qui dérive par héritage public de la classe de base. La classe Produit contient les membres données suivants : nom (string) et prix (double). La classe ProduitSolde contient le pourcentage du solde : solde (double) par exemple 10(%), 20(%) etc. Écrire les classes Produit et ProduitSolde en respectant les critères suivant : * Principe d’encapsulation des données, * La classe dérivée doit accéder à tous les membres de la classe de base, * Les classes de base et dérivée doivent contenir au moins les méthodes suivantes : o facture : retourne le nom du produit et son prix, o get_prix : retourne le prix du produit (soldé dans le cas de la classe dérivée), o les constructeurs nécessaires pour initialiser les membres données. */ #include #include using namespace std; class Produit{ protected: string nom; double prix; public: Produit(string n, double p):nom(n),prix(p){} double get_prix(){return prix;} void facture(){ cout << "Nom du produit: " << nom << "\n"; cout << "Son prix est: " << prix << "\n"; } }; class ProduitSolde: public Produit{ double solde; public: ProduitSolde(string n, double p, double s):Produit(n,p),solde(s){ prix -= (prix*solde/100); } double get_prix(){return prix;} void facture(){ cout << "Nom du produit: " << nom << "\n"; cout << "Son prix soldé est: " << prix << "\n"; } }; int main(){ Produit P("portable",2000); ProduitSolde PS("portable",2000,20); P.facture(); PS.facture(); return 0; }