/* 20 Mars 2K - v1.05 M.Lokbani - corrections typographiques. 17 Mars 2K - v1.04 M.Lokbani - commentaires et enonce. - modification du main et introduction des flags de compilation, pour permettre aux etudiants de tester leur programme dans divers endroits! - graphe.h appelle enr.h => pas besoin d'un *.cpp pour tourner la machine. L'ordre de compilation est respecte. - surdefinion de la fonction template (Dessin) et synchronisation du format d'affichage pour les floatants. 15 Mars 2K - v1.03 M.Lokbani modification dans l'ordre des instanciations des classes templates. 12 Mars 2K - v1.02 M.Lokbani surdefintion des fonctions templates ds Enregistrement. 11 Mars 2K - v1.01 M.Lokbani codage des classes: Graphe, Histogramme et Tarte. 10 Mars 2K - v1.00 M.Lokbani codage de la classe Enregistrement. reste a faire ..... -ecrire un code pour tester a part les classes: Graphe, Histogramme et Tarte. independamment de la classe Enregistrement, sans devoiler son contenu!!! Une solution simple, definir dans le fichier enr.h la classe template Enregistrement avec le minimum vital pour qu'elle marche! i.e. les cordons ombilicaux avec les classes (ou fonctions) Graphe, Histogramme et Tarte ; et faire tourner la moulinette! -Masquer l'appel de Enregistrement dans la classe Graphe pour rendre celle ci completement independante. Et permettre ainsi le traitement de n'importe quelle classe pourvu que certaines conditions soient respectees .... mais ceci est une autre histoire .... lokbani@iro.umontreal.ca UdM, IFT1166 -TP3- Session Hiver 2K */ #include #include /* Enr: utilisation de la classe Enregistrement seule! pas d'affichage en sortie. Les classes Graphe, Histogramme et Tarte ne seront pas chargees. Nous n'avons pas besoin donc de les connaitre. Bonus: fait reference a la question bonus du tp3. Celle ci concerne le cas ou T=float. la classe Enregistrement est declaree et definie dans le fichier: enr.h les classes Graphe, Histogramme et Tarte sont declarees et definies dans le fichier: graphe.h il faudra inclure au debut du fichier graphe.h la ligne suivante pour pouvoir utiliser (surtout compiler!) la classe Enregistrement: #include "enr.h" les options de compilations vont definir lequel des fichiers d'en-tete va etre charge par le pre-processeur. */ #ifndef Enr /* les classes Graphe, Histogramme, Tarte ont ete definies dans le fichier graphe.h de ce fait nous pouvons simuler maintenant l'affichage le pre-processeur charge le fichier graphe.h dans ce dernier il y aura appel au fichier enr.h pour charger la classe Enregistrement. */ #include "graphe.h" #else /* on ne traite pas encore l'affichage en sortie! Ce cas arrive, par exemple, si les classes Graphe, Histogramme, Tarte n'ont pas encore ete realisees. On ne sera pas donc penaliser! on pourra toujours tester la classe Enregistrement seule. on va charger que la classe Enregistrement. */ #include "enr.h" #endif int main() { string s; // on ne traite pas encore la question Bonus! #ifndef Bonus // traitement dans le cas d'un tableau de int int tab1[10] = {1,2,4,6,9,3,2,1,1,3}; s = "enreg1_int"; Enregistrement x1(10,tab1,s); cout << x1; // on ne traite pas pour l'instant l'affichage en sortie! #ifndef Enr // instanciation des objets ... Histogramme XHI; Tarte XTI; // dessine le tableau des int XHI.Dessine(x1); XTI.Dessine(x1); #endif // traitement dans le cas d'un tableau de char char tab2[15] = {'a','b','c','d','e','a','c','c','c','b','w','e','r','f','d'}; s = "enreg2_char"; Enregistrement x2(15,tab2,s); cout << x2; #ifndef Enr // instanciation des objets ... Histogramme XHC; Tarte XTC; // dessine le tableau des int XHC.Dessine(x2); XTC.Dessine(x2); #endif // traitement dans le cas d'un tableau de string string tab3[20] = {"allo","aller","allemand","allo","allier","allo","aller","alliance","aller","allemand","alliance","alleu","alliaire","alleu","allier","allesthesie","allevasse","alligator","allocentrique","allevasse"}; s = "enreg3_string"; Enregistrement x3(20,tab3,s); cout << x3; #ifndef Enr // instanciation des objets ... Histogramme XHS; Tarte XTS; // dessine le tableau des string XHS.Dessine(x3); XTS.Dessine(x3); #endif #endif // le moment est venu pour tester la question Bonus. #ifdef Bonus float tab4[6] = {1.187,2.236,4.4,2.23,1.18,1.184}; s = "enreg4_float"; Enregistrement x4(6,tab4,s); cout << x4; #ifndef Enr // instanciation des objets ... Histogramme XHF; Tarte XTF; // dessine le tableau des floats XHF.Dessine(x4); XTF.Dessine(x4); #endif #endif return 0; }