Changes between Version 2 and Version 3 of 2011CaoTme45


Ignore:
Timestamp:
Mar 10, 2011, 3:36:53 PM (14 years ago)
Author:
jpc
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • 2011CaoTme45

    v2 v3  
    55
    66La structure de données {{{Lofig}}} est conçue pour représenter les ''netlists''
    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 ==
     7en mémoire. Les attributs et les méthodes des différents objets constituants
     8cette structure ont été présentés en cours.
     9
     10Compte tenu du volume de travail demandé, ce TME sera réalisé en deux séances
     11(4 & 5).
     12
     13
     14== Programmation Modulaire ==
     15
     16La structure de données est trop grosse pour pouvoir être implantée dans un
     17unique fichier. Nous allons donc la découper en plusieurs fichiers, en suivant
     18la règle '''«une paire de fichiers ({{{.h}}},{{{.cpp}}}) par classe de la
     19base.
     20
     21Ce 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
     30En plus des fichiers directement liés à l'implantation de la base de donnée,
     31le projet comprend une petite bibliothèque de modèles prédifinis ({{{Library}}}
     32et une classe {{{Indentation}}} pour gérer l'indentation de l'affichage dans
     33un flux.
     34
     35{{{Library}}} et {{{Indentation}}} vous sont founis, ainsi qu'un {{{main}}} de
     36démonstration implantant l'{{{halfadder}}}.
     37
     38Afin de pouvoir vérifier la validité des ''netlists'' que vous devrez décrire,
     39une méthode {{{xmlDrive(std::cout&)}}} (non présentée en cours) est fournie
     40pour chaque classe de la base, dans des squelettes de fichiers.
     41
     42Fichiers 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
     56Lorsque l'on fait de la programmation modulaire, il est hors de question de
     57compiler «à la main» tous les fichiers. On passe obligatoirement par un
     58{{{Makefile}}}. Ce fichier devra obligatoirement accompagner votre compte-
     59rendu.
     60
     61
     62== La Mini Bibliothèque de Modèles ==
     63
     64La bibliothèque vous fourni trois modèles ({{{Lofig}}}), {{{And2}}},
     65{{{Xor2}}} et {{{Or2}}}.
     66
     67Interface simplifiée de la bibliothèque :
     68{{{
     69class 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 ===
    1384
    1485__Les constructeurs__ :
     
    47118};
    48119}}}
    49 Code de [attachment:Locon-Skeleton.cpp Locon.cpp].
    50 
    51 
    52 == Fonctions membres de la classe Losig ==
     120
     121
     122=== Fonctions membres de la classe Losig ===
    53123
    54124__Le constructeur__ :
     
    65135 * {{{unsigned int  getType  ();}}}
    66136
    67 Le code de la fonction utilitaire d'affichage dans un flux :
    68 [attachment:Losig-Skeleton.cpp]
    69 
    70 
    71 == Fonctions membres de la classe Loins ==
     137
     138=== Fonctions membres de la classe Loins ===
    72139
    73140__Le constructeur__ :
     
    97164et un signal {{{name}}} (de la {{{Lofig}}} {{{owner}}}).
    98165
    99 Le code de la fonction utilitaire d'affichage dans un flux :
    100 [attachment:Loins-Skeleton.cpp]
    101 
    102 
    103 == Fonctions membres de la classe Lofig ==
     166
     167=== Fonctions membres de la classe Lofig ===
    104168
    105169__Le constructeur__ :
     
    216280}}}
    217281
    218 Le code de la fonction utilitaire d'affichage dans un flux :
    219 [attachment:Lofig-Skeleton.cpp]
    220 
    221282
    222283== Destruction de la Base de Données ==
     
    231292de modèles.
    232293
    233 Cette gestion est beaucoup trop compliquée à implanter dans le cadre d'un
    234 TME, nous ne le ferons donc pas.
    235 
    236 En revanche, la fonction {{{Lofig:destroyAll}}} détruisant la totalité
    237 de la base de données sera implantée.
     294Dans un premier temps, on ignorera les problèmes liés à la destruction
     295des objets.
    238296
    239297
    240298= Travail à réaliser =
    241299
    242 Implanter la structure de donnée {{{Lofig}}} à partir la spécification
    243 ci-dessus.
     300Plutôt que d'implanter la totalité de la base en une seule fois, puis tout
     301compiler et enfin tout déboguer, il est préférable d'adopter une approche
     302par étape.
     303
     304== Question 1 ==
     305
     306Création de d'une base de donnée vide: écrire les déclarations des différentes
     307classes, mais ne créer que des fonctions membre aux corps vide.
     308
     309Créer le {{{Makefile}}} de compilation du projet.
     310
     311Compiler et vérifier qu'il n'y a pas d'erreur.
     312
     313
     314== Question 2 ==
     315
     316Implanter, classe par classe les métodes de {{{Locon}}}, {{{Losig}}},
     317{{{Loins}}} et {{{Lofig}}}. Compiler systématiquement entre chaque
     318classe. On utilisera le {{{Main}}} fourni (de l'{{{halfadder}}}).
     319
     320
     321== Question 3 ==
    244322
    245323Pour valider votre travail, il vous est demandé de décrire la ''netlist''
     
    256334
    257335
    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
     338En analysant le chaînage des objets entre eux, proposer les séquences de
     339destruction appropriées pour chaque objet, puis les implanter dans les
     340destructeurs.