Exercice 1 (solution: demo07exo1sol.cpp)
En vous aidant d'un programme c++ et sachant que A, B & C sont des classes ; montrez (et expliquez) ce qui suit:
- Symétrie
Si j'ai le mot de passe du compte de la personne x, je peux donc entrer dans son compte. Ça ne veut pas dire que cette personne (x) peut entrer dans mon compte, puisqu'elle n'a pas mon mot de passe.
Montrez que l'amitié n'est pas symétrique, i.e.: Si la classe A est amie de la classe B n'implique pas que la classe B est amie de la classe A.
- Transitivité
Si j'ai le mot de passe du compte de la personne (x), je peux donc entrer dans le compte de (x). Et si cette personne (x) a le mot de passe du compte de la personne (y), elle peut donc entrer dans le compte de (y). Cela ne veut pas dire que je peux entrer dans le compte de (y), puisque je n'ai pas son mot de passe.
Montrez que l'amitié n'est pas transitive, i.e.: Si la classe A est amie de la classe B et la classe B est amie de la classe C; n'implique pas que la classe A est amie de la classe C.
Exercice 2 (solution: demo07exo2sol.cpp)
Reprendre l'exercice 3 de la démo 6 et y ajouter les fonctionnalités suivantes:
- Un constructeur sans argument.
- L'opérateur d'affectation =.
- Deux fonctions amies:
- compte AjoutSomme(const compte& c, int v): Permet d'ajouter une somme v au compte c.
- compte compte test(int x) permet d'afficher la valeur passée en argument et de retourner un compte crée localement.
- Deux fonctions quelconques:
- void p_val(compte c) une fonction permettant d'illustrer le passage par valeur, en affichant en sortie: p_val.
- void p_val(compte& c) une fonction permettant d'illustrer le passage par référence, en affichant en sortie: p_ref.
- Complétez la fonction main avec les instructions nécessaires afin d'utiliser les fonctionnalités décrites précédemment.
Exercice 1 (solution: demo07exo3sol.cpp)
Complétez la classe Id (pour la description de la classe, voir les notes de cours), par :
- Un constructeur de recopie.
- Un opérateur d'affectation surdéfini.
Et donnez le résultat du programme.
Pour rappel :
-------------------------------
class Id {
char *nom;
public:
Id();
~Id();
Id(const Id&);
Id& operator=(Id);
};
int main() {
Id pierre,paul;
Id jacque = paul;
pierre = jacque;
return 0;
}
-------------------------------