| 7 | | en mémoire. Les attributs des différents objets constituants cette structure ont |
| 8 | | été présentés en cours. Nous allons maintenant compléter avec les déclarations |
| 9 | | des fonctions membres. |
| 10 | | |
| 11 | | |
| 12 | | == Fonctions membres de la class Locon == |
| | 7 | en mémoire. Les attributs et les méthodes des différents objets constituants |
| | 8 | cette structure ont été présentés en cours. |
| | 9 | |
| | 10 | Compte tenu du volume de travail demandé, ce TME sera réalisé en deux séances |
| | 11 | (4 & 5). |
| | 12 | |
| | 13 | |
| | 14 | == Programmation Modulaire == |
| | 15 | |
| | 16 | La structure de données est trop grosse pour pouvoir être implantée dans un |
| | 17 | unique fichier. Nous allons donc la découper en plusieurs fichiers, en suivant |
| | 18 | la règle '''«une paire de fichiers ({{{.h}}},{{{.cpp}}}) par classe de la |
| | 19 | base. |
| | 20 | |
| | 21 | Ce qui donne: |
| | 22 | * {{{Locon}}} : {{{Locon.h}}} et {{{Locon.cpp}}}. |
| | 23 | * {{{Losig}}} : {{{Losig.h}}} et {{{Losig.cpp}}}. |
| | 24 | * {{{Loins}}} : {{{Loins.h}}} et {{{Loins.cpp}}}. |
| | 25 | * {{{Lofig}}} : {{{Lofig.h}}} et {{{Lofig.cpp}}}. |
| | 26 | |
| | 27 | |
| | 28 | == Structure Complète du TME == |
| | 29 | |
| | 30 | En plus des fichiers directement liés à l'implantation de la base de donnée, |
| | 31 | le projet comprend une petite bibliothèque de modèles prédifinis ({{{Library}}} |
| | 32 | et une classe {{{Indentation}}} pour gérer l'indentation de l'affichage dans |
| | 33 | un flux. |
| | 34 | |
| | 35 | {{{Library}}} et {{{Indentation}}} vous sont founis, ainsi qu'un {{{main}}} de |
| | 36 | démonstration implantant l'{{{halfadder}}}. |
| | 37 | |
| | 38 | Afin de pouvoir vérifier la validité des ''netlists'' que vous devrez décrire, |
| | 39 | une méthode {{{xmlDrive(std::cout&)}}} (non présentée en cours) est fournie |
| | 40 | pour chaque classe de la base, dans des squelettes de fichiers. |
| | 41 | |
| | 42 | Fichiers Fournis: |
| | 43 | * [attachment:Locon-Skeleton.cpp Locon.cpp] |
| | 44 | * [attachment:Losig-Skeleton.cpp Losig.cpp] |
| | 45 | * [attachment:Loins-Skeleton.cpp Loins.cpp] |
| | 46 | * [attachment:Lofig-Skeleton.cpp Lofig.cpp] |
| | 47 | * [attachment:Library.h] |
| | 48 | * [attachment:Library.cpp] |
| | 49 | * [attachment:Indentation.h] |
| | 50 | * [attachment:Indentation.cpp] |
| | 51 | * [attachment:Main.cpp] |
| | 52 | |
| | 53 | |
| | 54 | == Compilation du Programme == |
| | 55 | |
| | 56 | Lorsque l'on fait de la programmation modulaire, il est hors de question de |
| | 57 | compiler «à la main» tous les fichiers. On passe obligatoirement par un |
| | 58 | {{{Makefile}}}. Ce fichier devra obligatoirement accompagner votre compte- |
| | 59 | rendu. |
| | 60 | |
| | 61 | |
| | 62 | == La Mini Bibliothèque de Modèles == |
| | 63 | |
| | 64 | La bibliothèque vous fourni trois modèles ({{{Lofig}}}), {{{And2}}}, |
| | 65 | {{{Xor2}}} et {{{Or2}}}. |
| | 66 | |
| | 67 | Interface simplifiée de la bibliothèque : |
| | 68 | {{{ |
| | 69 | class Library { |
| | 70 | public: |
| | 71 | enum ModelType { And2=0, Or2, Xor2, ModelTypeSize }; |
| | 72 | public: |
| | 73 | static void destroy (); |
| | 74 | static Lofig* getModel ( unsigned int modelType ); |
| | 75 | }; |
| | 76 | }}} |
| | 77 | |
| | 78 | [[Image(Library-1.png,50%,align=center)]] |
| | 79 | |
| | 80 | |
| | 81 | == Objets de la Base de Données == |
| | 82 | |
| | 83 | === Fonctions membres de la class Locon === |
| 242 | | Implanter la structure de donnée {{{Lofig}}} à partir la spécification |
| 243 | | ci-dessus. |
| | 300 | Plutôt que d'implanter la totalité de la base en une seule fois, puis tout |
| | 301 | compiler et enfin tout déboguer, il est préférable d'adopter une approche |
| | 302 | par étape. |
| | 303 | |
| | 304 | == Question 1 == |
| | 305 | |
| | 306 | Création de d'une base de donnée vide: écrire les déclarations des différentes |
| | 307 | classes, mais ne créer que des fonctions membre aux corps vide. |
| | 308 | |
| | 309 | Créer le {{{Makefile}}} de compilation du projet. |
| | 310 | |
| | 311 | Compiler et vérifier qu'il n'y a pas d'erreur. |
| | 312 | |
| | 313 | |
| | 314 | == Question 2 == |
| | 315 | |
| | 316 | Implanter, classe par classe les métodes de {{{Locon}}}, {{{Losig}}}, |
| | 317 | {{{Loins}}} et {{{Lofig}}}. Compiler systématiquement entre chaque |
| | 318 | classe. On utilisera le {{{Main}}} fourni (de l'{{{halfadder}}}). |
| | 319 | |
| | 320 | |
| | 321 | == Question 3 == |
| 258 | | == La Mini Bibliothèque de Modèles == |
| 259 | | |
| 260 | | La bibliothèque vous fourni trois modèles ({{{Lofig}}}), {{{And2}}}, |
| 261 | | {{{Xor2}}} et {{{Or2}}}. |
| 262 | | |
| 263 | | Interface simplifiée de la bibliothèque : |
| 264 | | {{{ |
| 265 | | class Library { |
| 266 | | public: |
| 267 | | enum ModelType { And2=0, Or2, Xor2, ModelTypeSize }; |
| 268 | | public: |
| 269 | | static void destroy (); |
| 270 | | static Lofig* getModel ( unsigned int modelType ); |
| 271 | | }; |
| 272 | | }}} |
| 273 | | |
| 274 | | Code de la bibliothèque : |
| 275 | | [attachment:Library.h Library.h] [attachment:Library.cpp Library.cpp] |
| 276 | | |
| 277 | | [[Image(Library-1.png,50%,align=center)]] |
| | 336 | == Question 4 == |
| | 337 | |
| | 338 | En analysant le chaînage des objets entre eux, proposer les séquences de |
| | 339 | destruction appropriées pour chaque objet, puis les implanter dans les |
| | 340 | destructeurs. |