PLAN
Les fonction Inlines
Les classes Amies
Accesseurs et Mutateurs
Règles d’encapsulation
Définition
Conclusion
Les fonction Amies
2
Définition
Règles d’encapsulati
on
Accesseurs et
Mutateurs
Les fonction Inlines
Les fonction Amies
Les classes Amies
Conclusion
Définition
Définition
Règles d’encapsulati
on
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:
Définition
Règles d’encapsulati
on
Accesseurs et
Mutateurs
Les fonction Inlines
Les fonction Amies
Les classes Amies
Conclusion
1. Règles:
2. Exemple:
class point{ // déclaration des membres
privés private : int x ; int y ; // déclaration des membres
publics public : void initialiser (int, int) ; void afficher () ;} ;
Définition
Règles d’encapsulati
on
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
Définition
Règles d’encapsulati
on
Accesseurs et
Mutateurs
Les fonction Inlines
Les fonction Amies
Les classes Amies
Conclusion
1. les accesseurs: 2. Les mutateur: Exemple: Exemple:
Exemple : class Acc{
private : int age;
public : int GetAge();
}; int Acc::GetAge(){ return age; }
Définition
Règles d’encapsulati
on
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..
Définition
Règles d’encapsulati
on
Accesseurs et
Mutateurs
Les fonction Inlines
Les fonction Amies
Les classes Amies
Conclusion
1. les accesseurs: 2. Les mutateur: Exemple: Exemple:
class Mut{ private : int _age; public : void SetAge(int); }; void Mut::SetAge(int age){ _age = age; }
Définition
Règles d’encapsulation
Accesseurs et Mutateurs
Les fonction Inlines
Les fonction Amies
Les classes Amies
Conclusion
1. Introduction: 3. Exemple:
2. Définition: 4. utilite:
Imaginons les deux fonction suivantes:
Le résultat obtenu ressemble à celui qu’aurait produit l’exécution de
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:
Définition
Règles d’encapsulation
Accesseurs et Mutateurs
Les fonction Inlines
Les fonction Amies
Les classes Amies
Conclusion
1. Introduction: 3. Exemple:2. Définition: 4. utilité:
Définition
Règles d’encapsulati
on
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:
Définition
Règles d’encapsulati
on
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é
Définition
Règles d’encapsulati
on
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é
Définition
Règles d’encapsulati
on
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é
Définition
Règles d’encapsulati
on
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:
Définition
Règles d’encapsulati
on
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:
Définition
Règles d’encapsulati
on
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:
Définition
Règles d’encapsulati
on
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:
Définition
Règles d’encapsulati
on
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:
Définition
Règles d’encapsulati
on
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.
Top Related