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++
 
Été 2008

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 #10  
 
Dernière mise à jour : sam 03 mai 2008 14:18:57 EDT
 

Buts:

  • [Virtualité, classe abstraite, et structures de données de base].

Virtualité et classe abstraite

  • Q1: Comment faudrait-il modifier le contenu des classes de base (Produit) et dérivée (ProduitSolde), décrites dans l'exercice 6 de la démo 9, pour que la fonction main suivante puisse donner les résultats signalés en commentaires.
    -------------------------------
    
        int main(){ 
         
            Produit P("portable",2000); 
            ProduitSolde PS("portable",2000,20); 
             
            Produit* PP = &P; 
            PP->facture(); // résultat attendu: 2000 
            PP = &PS; 
            PP->facture(); // résultat attendu: 1600 
             
            return 0; 
        } 
    
    -------------------------------
    

  • Q2: Pour ce qui suit:

    • Écrire la définition classe abstraite peintre qui contient deux fonctions virtuelles pures: Saisir et Afficher.

    • Écrire la définition de la classe Monet qui dérive "publiquement" de la classe peintre, et a comme membres privés un tableau TAB contenant NB_ELT éléments du type string.

  • Q3: Répondre aux différentes questions incluses dans le programme suivant: demo10exo3.cpp.

Structures de données de base

  • Q4: Reprendre la classe Liste disponible ici et ajouter les fonctionnalités suivantes:

    • Les classes Cellule et Liste se contentent de quelques fonctionnalités par défaut. Est-ce nécessaire de les redéfinir? Si oui, faites le.

    • Compléter la classe Liste avec la méthode qui permet d'affecter une valeur à un élément donné de la liste. Un message d'erreur est affiché si la liste est vide ou si on est hors-liste.

    • Compléter la classe Liste avec la méthode qui permet de retirer le ie élément de la liste. Un message d'erreur est affiché si la liste est vide ou si on est hors-liste.

  • Q5: Reprendre la classe Pile disponible ici et faire ce qui suit:

    • Modifier la classe pour manipuler des chaînes de caractères.

    • Écrire un programme qui lit une expression postfixée sur une ligne, et en affiche la valeur.

    • La notation postfixée (polonaise inverse) consiste à placer les opérandes devant l'opérateur. Ainsi l'opération "(12 + 23 + 7) × 3 - 121 = 5" se transforme en " 12 23 7 + + 3 x 121 -". La notation Polonaise inverse consiste à placer des nombres dans une pile et à effectuer des opérations sur les 2 nombres situés au sommet de la pile. Par exemple l'expression 12 23 7 + + 3 x 121 - est évaluée de la façon suivante:
    ----------------------------------------------
        Expression              état de la pile
                                (sommet à gauche)
        12                      12
        12 23                   23, 12
        12 23 7                 7, 23, 12
        12 23 7 +               30, 12
        12 23 7 + +             42
        12 23 7 + + 3           3, 42
        12 23 7 + + 3 x         126
        12 23 7 + + 3 x 121     121, 126
        12 23 7 + + 3 x 121 -   5
    ----------------------------------------------
    



pift1166@iro.umontreal.ca
[top]