Changes between Version 4 and Version 5 of 2011CaoTme2
- Timestamp:
- Oct 9, 2012, 1:20:36 PM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
2011CaoTme2
v4 v5 10 10 11 11 Au cours de ce TME nous allons créer ce nouveau type (ou classe) que nous appellerons 12 {{{ BoolValue}}}.12 {{{LogicValue}}}. 13 13 14 14 15 == Spécification de {{{ BoolValue}}} ==15 == Spécification de {{{LogicValue}}} == 16 16 17 La classe {{{ BoolValue}}} va contenir un seul attribut {{{_value}}} qui sera de type17 La classe {{{LogicValue}}} va contenir un seul attribut {{{_value}}} qui sera de type 18 18 entier et ne pourra prendre que trois valeurs: 0, 1 ou 2 ayant respectivement la 19 19 signification {{{Zero}}}, {{{One}}} et {{{Undefined}}}. … … 23 23 24 24 {{{ 25 class BoolValue {25 class LogicValue { 26 26 public: 27 27 enum Value { Zero=0, One=1, Undefined=2 }; … … 31 31 }}} 32 32 33 A l'extérieur de la classe on les référencera avec la syntaxe {{{ BoolValue::Undefined}}}33 A l'extérieur de la classe on les référencera avec la syntaxe {{{LogicValue::Undefined}}} 34 34 et à l'intérieur, simplement comme {{{Undefined}}}. 35 35 36 La classe {{{ BoolValue}}} possèdera les fonctions membres suivantes:36 La classe {{{LogicValue}}} possèdera les fonctions membres suivantes: 37 37 38 38 Constructeurs: (''CTOR'') 39 * {{{ BoolValue()}}}, le constructeur par défaut, devra affecter la valeur {{{Zero}}}.40 * {{{ BoolValue{{{int}}}, un contructeur à partir d'un entier ordinaire. Tout entier39 * {{{LogicValue()}}}, le constructeur par défaut, devra affecter la valeur {{{Zero}}}. 40 * {{{LogicValue{{{int}}}, un contructeur à partir d'un entier ordinaire. Tout entier 41 41 de valeur supérieure ou égale à 2 sera considéré comme {{{Undefined}}}. 42 * {{{ BoolValue(const BoolValue&)}}}, un constructeur par copie.42 * {{{LogicValue(const LogicValue&)}}}, un constructeur par copie. 43 43 44 44 Destructeur: (''DTOR'') 45 * {{{~ BoolValue()}}}, le destructeur (unique).45 * {{{~LogicValue()}}}, le destructeur (unique). 46 46 47 47 Accesseurs: (''Accessors'') … … 54 54 En plus des fonctions membres listées çi dessus, on ajoute les fonctions non-membres 55 55 suivantes 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.56 * {{{LogicValue non(const LogicValue&)}}}, négation logique. 57 * {{{LogicValue ou (const LogicValue&, const LogicValue&)}}}, ''ou'' logique. 58 * {{{LogicValue et (const LogicValue&, const LogicValue&)}}}, ''et'' logique. 59 59 60 60 La table de vérité des fonctions négation et ''OU'' vous est fournie çi-après. … … 65 65 === Question 1 === 66 66 67 Implanter la class {{{ BoolValue}}} telle que décrite précédemment. Comme au TME1,67 Implanter la class {{{LogicValue}}} telle que décrite précédemment. Comme au TME1, 68 68 on tracera les appels aux constructeurs et destructeurs. Tester à l'aide du petit 69 69 programme de test suivant: … … 88 88 89 89 En vous basant sur l'opérateur qui a été présenté en cours, écrire l'opérateur d'écriture 90 dans un flot pour l'objet {{{ BoolValue}}}. Modifier le code des fonctions de vérification90 dans un flot pour l'objet {{{LogicValue}}}. Modifier le code des fonctions de vérification 91 91 en conséquence. 92 92 … … 102 102 Écrire les fonction (non-membre) ''{{{ou}}}'' et ''{{{et}}}'' sous forme d'opérateurs: 103 103 {{{ 104 BoolValue operator or ( const BoolValue&, const BoolValue& );105 BoolValue operator and ( const BoolValue&, const BoolValue& );104 LogicValue operator or ( const LogicValue&, const LogicValue& ); 105 LogicValue operator and ( const LogicValue&, const LogicValue& ); 106 106 }}} 107 107 Modifier le code de test.