Buts:
- [Classes canoniques, Héritage et virtualité].
Classes canoniques
- Q1: Le programme suivant contient 5 erreurs de syntaxe:
demo9exo1.cpp. Trouvez-les ! Essayer
de le faire avant de le compiler!
[Solutionnaire].
- Q2: Soit le programme suivant:
demo9exo2.cpp.
[Solutionnaire].
- La classe Test doit-elle redéfinir le constructeur de recopie et l’opérateur d’affectation, où
bien ceux par défaut, fournis par le langage, sont suffisants? OUI/NON et Pourquoi?
- Quelles sont les fonctions membres de la classe Test, qui seront appelées dans la méthode "main" suivante :
-------------------------------
int main() {
Test dd(5,"essai"),XX(8,"unautre");
XX = dd;
return 0;
}
-------------------------------
Nommer les fonctions (méthodes) et expliquer pourquoi?
- En vous basant sur la définition de la classe Test, la méthode "main" suivante est -elle
syntaxiquement correcte? OUI/NON et Pourquoi?
-------------------------------
int main() {
Test dd(45,"encore");
Test qsx(dd);
return 0;
}
-------------------------------
- La définition de l'opérateur d'affectation de la classe Test est-elle correcte? OUI/NON et Pourquoi?
Dans le cas où vous répondez par NON (écriture incorrecte), réécrivez l'opérateur d'affectation de la classe Test.
- Q3: Pour chacune des méthodes (incluant le constructeur) de la classe
C du programme suivant demo9exo3.cpp, indiquer si
la compilation des méthodes de la classe C provoque des erreurs (y compris les warnings). Si oui dites pourquoi
et proposer une solution, si c’est possible.
[Solutionnaire].
Héritage
- Q4: Soit la classe mammifère, Mamf, suivante
demo9exo4.cpp
[Solutionnaire].
- Si vous devez créer la classe "Chien" qui hérite de Mamf, conceptuellement, est-ce que vous allez:
- a) surcharger la méthode "ADesPattes" ?
- b) redéfinir la méthode "ADesPattes" ?
- c) utiliser la méthode "ADesPattes" telle quelle, par héritage ?`
- En tenant compte de votre précédente réponse, implémenter la classe "Chien" en conséquence.
- Si vous devez créer la classe "Baleine" qui hérite de Mamf, conceptuellement, est-ce que vous allez:
- a) surcharger la méthode "ADesPattes" ?
- b) redéfinir la méthode "ADesPattes" ?
- c) utiliser la méthode "ADesPattes" telle quelle, par héritage ?`
- En tenant compte de votre précédente réponse, implémenter la classe "Baleine" en conséquence.
- Q5: Répondre aux questions de l'exercice suivant:
demo9exo5.cpp
[Solutionnaire].
- Q6: Écrire la déclaration d’une classe D qui dérive
par héritage public de la classe de base B.
[Solutionnaire].
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?
Soit la classe de base Produit et la classe ProduitSolde qui dérive par hér itage 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 :
- facture : retourne le nom du produit et son prix,
- get_prix : retourne le prix du produit (soldé dans le cas de la classe dérivée),
- les constructeurs nécessaires pour initialiser les membres données.
- Q7: Faire l'exercice 4 du final été 2000:
demo9exo7.pdf
[Solutionnaire].
- Q8: Faire l'exercice 4 du final hiver 2004:
demo9exo8.pdf
[Solutionnaire PDF].
[Solutionnaire PS].
|
|