Changes between Initial Version and Version 1 of 2011CaoTme2


Ignore:
Timestamp:
Feb 25, 2011, 12:52:23 AM (14 years ago)
Author:
jpc
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • 2011CaoTme2

    v1 v1  
     1[[PageOutline]]
     2
     3= Objets Simples & Opérateurs =
     4
     5Pour valider la description d'un circuit intégré, il est nécessaire de passer par une
     6étape de simulation (cf. {{{asimut}}}). Une variable à l'intérieur du simulateur est
     7un booléen, mais dans certains cas on peut ne pas connaître sa valeur. Le simulateur
     8introduit donc un nouveau type de variable pouvant prendre trois valeurs: '''0''',
     9'''1''' ou '''U''' ({{{Undefined}}} ou encore {{{non-définie}}}).
     10
     11Au cours de ce TME nous allons créer ce nouveau type (ou classe) que nous appellerons
     12{{{BoolValue}}}.
     13
     14
     15== Spécification de {{{BoolValue}}} ==
     16
     17La classe {{{BoolValue}}} va contenir un seul attribut {{{_value}}} qui sera de type
     18entier et ne pourra prendre que trois valeurs: 0, 1 ou 2 ayant respectivement la
     19signification {{{Zero}}}, {{{One}}} et {{{Undefined}}}.
     20
     21Plutôt que travailler avec des constantes numériques, nous allons utiliser des
     22constantes nommées. On réalise cela avec un {{{enum}}}, comme ci-après:
     23
     24{{{
     25class BoolValue {
     26  public:
     27    enum Value { Zero=0, One=1, Undefined=2 };
     28  public:
     29    // ...
     30};
     31}}}
     32
     33A l'extérieur de la classe on les référencera avec la syntaxe {{{BoolValue::Undefined}}}
     34et à l'intérieur, simplement comme {{{Undefined}}}.
     35
     36La classe {{{BoolValue}}} possèdera les fonctions membres suivantes:
     37
     38Constructeurs: (''CTOR'')
     39* {{{BoolValue()}}}, le constructeur par défaut, devra affecter la valeur {{{Zero}}}.
     40* {{{BoolValue{{{int}}}, un contructeur à partir d'un entier ordinaire. Tout entier
     41  de valeur supérieure ou égale à 2 sera considéré comme {{{Undefined}}}.
     42* {{{BoolValue(const BoolValue&)}}}, un constructeur par copie.
     43
     44Destructeur: (''DTOR'')
     45* {{{~BoolValue()}}}, le destructeur (unique).
     46
     47Accesseurs: (''Accessors'')
     48* {{{print(std::ostream&)}}}, une fonction d'affichage.
     49* {{{toInt()}}}, une fonction de conversion vers un entier.
     50
     51Modifieur: (''Mutators'')
     52* {{{fromInt(int)}}}, affectation depuis un entier.
     53
     54En plus des fonctions membres listées çi dessus, on ajoute les fonctions non-membres
     55suivantes permettant de réaliser des opérations logiques:
     56* {{{BoolValue non(const BoolValue&)}}}, négation logique.
     57* {{{BoolValue ou (const BoolValue&, const BoolValue&), ''ou'' logique.
     58* {{{BoolValue et (const BoolValue&, const BoolValue&), ''et'' logique.
     59
     60La table de vérité des fonctions négation et ''ou'' vous est fournie çi-après.
     61
     62[[Image(TruthTable-1.png,70%,align=center)]]
     63
     64=== Question 1 ===
     65
     66Implanter la class {{{BoolValue}}} telle que décrite précédemment. La tester à
     67l'aide du petit programme de test suivant:
     68
     69[[Image(CheckOuCode-1.png,70%,align=center)]