4. Définition
Règles
d’encapsulation
Accesseurs et
Mutateurs
Les fonction
Inlines
Les fonction
Amies
Les classes
Amies
Conclusion
Le respect du principe d'encapsulation impose donc que :
Les attributs ne doivent pas être accessibles publiquement :
• Garantir la cohérence des données
• Fournir des possibilités minimales en terme de
modifications
Toute méthode non nécessaire à l'utilisateur doit étre
déclarer private
Toute méthode que vous souhaitez rendre disponible à
l'utilisateur, et qui définit donc l'interface de la classe est à
déclarer public
Les constructeurs et destructeurs doivent toujours être publics !
1. Règles:
2. Exemple:
6. Définition
Règles
d’encapsulation
Accesseurs et
Mutateurs
Les fonction
Inlines
Les fonction
Amies
Les classes
Amies
Conclusion
1. les accesseurs: 2. Les mutateur:
Exemple: Exemple:
• récupérer le contenu d'une donnée membre
protégée, pour accomplir sa fonction :
• doit avoir comme type de retour le type de la
variable à renvoyer
• ne doit pas nécessairement posséder
d'arguments
8. Définition
Règles
d’encapsulation
Accesseurs et
Mutateurs
Les fonction
Inlines
Les fonction
Amies
Les classes
Amies
Conclusion
1. les accesseurs: 2. Les mutateur:
Exemple: Exemple:
• Un mutateur est une fonction membre permettant
de modifier le contenu d'une donnée membre
protégée.
• Un mutateur, pour accomplir sa fonction :
Doit avoir comme paramètre la valeur à assigner à la
donnée
membre. Le paramètre doit donc être du type de la
donnée membre
Ne doit pas nécessairement renvoyer de valeur (il
possède dans sa plus simple expression le type void
Il est courant des préfixer le nom des accesseurs /
mutateurs respectivement par Get / Set. Pour cette
raison, on appelle aussi les accesseurs / mutateurs des
getter / setter..
11. Définition
Règles
d’encapsulation
Accesseurs et
Mutateurs
Les fonction
Inlines
Les fonction
Amies
Les classes
Amies
Conclusion
Le mot-clé « inline» utilisé en C++ s'applique à une
fonction. Il indique au compilateur que chaque appel à la
fonction devra être remplacé par le corps de cette fonction.
Il suffit pour cela que, lors de sa définition, le nom de la
fonction soit précédé du mot inline.
1. Introduction: 3. Exemple:
2. Définition: 4. utilite:
13. Définition
Règles
d’encapsulation
Accesseurs et
Mutateurs
Les fonction
Inlines
Les fonction
Amies
Les classes
Amies
Conclusion
l’utilisation des fonctions inlines se fait dans
un but d’éfficacité , d’optimisation ; puisqu’il
n’y a pas d’appel (réel), donc pas de rupture de
séquence, pas de retour etc...
Mais il est clair qu’un tel traitement ne peut
convenir qu’à des fonctions fréquemment
appelées.
1. Introduction: 3. Exemple:
2. Définition: 4. utilite:
14. Définition
Règles
d’encapsulation
Accesseurs et
Mutateurs
Les fonction
Inlines
Les fonction
Amies
Les classes
Amies
Conclusion
En principe, l’encapsulation interdit à
une fonction membre d’une classe ou toute
fonction d’accéder à des données privées
d’une autre classe. Mais grâce à la notion
d’amitié entre fonctions et classes, il est
possible, lors de la définition de cette
classe d’y déclarer une ou plusieurs
fonctions (extérieurs de la classe) pouvant
accéder à ses membres privés.
1. Introduction:
2. Définition:
3. Les différentes situations d’amitié
15. Définition
Règles
d’encapsulation
Accesseurs et
Mutateurs
Les fonction
Inlines
Les fonction
Amies
Les classes
Amies
Conclusion
Une fonction amie d’une classe C est une
fonction qui, sans être membre de cette
classe, a le droit d’accéder à tous ses
membres, aussi bien publics que privés.
1. Introduction:
2. Définition:
3. Les différentes situations d’amitié
16. Définition
Règles
d’encapsulation
Accesseurs et
Mutateurs
Les fonction
Inlines
Les fonction
Amies
Les classes
Amies
Conclusion
Class C{
public:
friend void maFonction();
} ;
void maFonction(){
/* definition de la fonction amie */
}
A notez la qualification friend, bien que déclarée
à l’intérieur de la classe C, la fonction
maFonction() n’est pas membre de cette classe ;
en particulier, elle n’est pas attachée à un objet,
et le pointeur this n’y est pas définie.
1. Introduction:
2. Définition:
3. Les différentes situations d’amitié
17. Définition
Règles
d’encapsulation
Accesseurs et
Mutateurs
Les fonction
Inlines
Les fonction
Amies
Les classes
Amies
Conclusion
3. Les différentes situations d’amitié
Fonction indépendante amie d’une classe
Class C{
public:
friend void maFonction();
} ;
void maFonction(){ /*
definition de la fonction amie */
}
Syntaxe:
1. Introduction:
2. Définition:
18. Définition
Règles
d’encapsulation
Accesseurs et
Mutateurs
Les fonction
Inlines
Les fonction
Amies
Les classes
Amies
Conclusion
Fonction membre d’une classe, amie d’une autre classe
Class A;
Class B {
public:
void F(A);
} ;
Class A {
private: int nbr;
public:
friend void B::F(A);
} ;
void B::F(A a){ /* definition de la
fonction amie */
}
La fonction membre de la classe B est ami avec la classe A
Il faut déclarer A
avant B.
définir B avant A
3. Les différentes situations d’amitié1. Introduction:
2. Définition:
19. Définition
Règles
d’encapsulation
Accesseurs et
Mutateurs
Les fonction
Inlines
Les fonction
Amies
Les classes
Amies
Conclusion
Fonction indépendante amie de plusieurs classes
Class A ;
Class B {
public:
friend void Fonction(A,B);
} ;
Class A {
public:
friend void Fonction(A,B);
} ;
void Fonction (A a,B b ){
/* definition de la fonction amie */
}
Syntaxe:
3. Les différentes situations d’amitié1. Introduction:
2. Définition:
20. Définition
Règles
d’encapsulation
Accesseurs et
Mutateurs
Les fonction
Inlines
Les fonction
Amies
Les classes
Amies
Conclusion
Une classe amie d’une classe C est une
classe qui a le droit d’accéder à tous les
membres de C.
Une telle classe doit être déclarée dans la
classe qui accorde le droit d’accès),
précédé du mot réservé « friend ».
1. Définition: 2. Syntaxe:
21. Définition
Règles
d’encapsulation
Accesseurs et
Mutateurs
Les fonction
Inlines
Les fonction
Amies
Les classes
Amies
Conclusion
Class A;
Class B {
public:
void F1(A);
void F1(A);
} ;
Class A {
private: i
nt nbr;
public:
friend class B;
} ;
void B::F1(A a1){ /* définition de la fonction amie
F1*/}
void B::F2(A a2){ /* définition de la fonction amie
F2*/}
1. Définition: 2. Syntaxe:
22. Définition
Règles
d’encapsulation
Accesseurs et
Mutateurs
Les fonction
Inlines
Les fonction
Amies
Les classes
Amies
Conclusion
• La relation d’amitié doit être utilisée avec précaution , c’est une
entorse à l’ensemble des règles qui régissent les droits d’accès.
• La relation d’amitié n’est pas transitive : les amis des amis de la
classe A ne sont pas forcément les amis de la classe A
• Si la classe A est amie de la classe B ≠ la classe B est amie de la
classe A (pas de symétrie).
• Les amis de classes imbriquées n’ont pas de droit particulier sur
les membres de la classe de niveau supérieur.