TD 4: Classes, Organisation du code en plusieurs fichiers

Corrigés: class.cc class.h io.cc io.h main.cc Makefile student.cc student.h

Rappels

Ce TD n'est pas noté directement -- les rendus seront examinés à la main, et incorporés a la note globale (avec d'autres éléments tels le style)

Exercice 1: Classes, mini-projet

  1. Dans un fichier student.h, écrivez le prototype (i.e. déclaration) d'une classe Student contenant: Le constructeur de cette classe devra prendre ces données en argument.

    Ajoutez à cette classe les fonctions (seulement les déclarations!):
    RENDU: student.h

  2. Dans un fichier student.cc, écrivez l'implémentation de cette classe.
    Indications:
    Vérifiez en compilant vos fichiers: g++ student.cc -c -o student.o. Réparez student.h si besoin.

    RENDU: student.cc

  3. Dans 2 fichiers class.h et class.cc, écrivez le prototype et l'implémentation (i.e. déclaration et définition) d'une classe Class contenant:
    Note: Pensez à inclure le fichier student.h
    Note: Pour construire une Class, on prendra son nom et son nombre maximal d'étudiants, et on aura aucun étudiant inscrit au début.

    Pensez à Vérifier votre code, au moins en le compilant!

    RENDUS: class.h et class.cc

  4. Dans des fichiers io.h et io.cc, écrivez le prototype puis l'implémentation des fonctions:
    Incluez bien les fichiers student.h et class.h dans le fichier io.h.
    Cela provoquera sans doute une erreur de compilation de "déclaration dupliquée": la solution, classique en C++, est un #ifdef guard dans les fichiers .h. Je vous expliquerai au tableau.

    RENDUS: io.h et io.cc

  5. Dans un fichier main.cc, écrivez une fonction main() qui, à l'aide des fonctions faites plus haut, demandera l'entrée interactive d'une Class, et l'affichera ensuite.

    Compilez-le par étapes séparées:
    Faites-le tourner!

    RENDU: main.cc

  6. (*) Écrivez un Makefile qui orchestrera tout ça, avec une target par défaut qui sera le binaire main, et une target module.o par module.

    Testez-le avec la commande make.

    RENDU: Makefile