UdMHaut
UdMBAS

IFT1166
Programmation Orientée Objet avec C++

Département d'informatique et de recherche opérationnelle

Direction de l'enseignement de service en informatique
 

Image C++
 
Automne 2005

Accueil

Professeurs et
Démonstrateurs

Horaires et locaux

Notes de cours

Cours
après Cours

Démonstrations
et devoirs

Examens

Liens utiles

Au sujet du
livre de cours

Consultez vos notes

Foire aux questions
(FAQ)

Sessions antérieures

  Démonstration #9 Solutionnaire  
 
Dernière mise à jour : sam 19 nov 2005 13:42:38 EST
 

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].



pift1166@iro.umontreal.ca
[top]