SlideShare a Scribd company logo
1 of 22
PLAN
nes
es
ateurs
ation
mies
2
Définition
Règles
d’encapsulation
Accesseurs et
Mutateurs
Les fonction
Inlines
Les fonction
Amies
Les classes
Amies
Conclusion
Définition
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:
Définition
Règles
d’encapsulation
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’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
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:
Exemple :
class Acc{
private :
int age;
public :
int GetAge();
};
int Acc::GetAge(){
return age;
}
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..
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:
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’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:
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é
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é
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é
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:
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:
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:
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:
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:
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.

More Related Content

What's hot

What's hot (20)

Cours java
Cours javaCours java
Cours java
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
 
Exercice java vehicule
Exercice java vehiculeExercice java vehicule
Exercice java vehicule
 
Chapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaChapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en Java
 
Chapitre6: Surcharge des opérateurs
Chapitre6:  Surcharge des opérateursChapitre6:  Surcharge des opérateurs
Chapitre6: Surcharge des opérateurs
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielle
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en Python
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 
Formation C# - Cours 1 - Introduction, premiers pas, concepts
Formation C# - Cours 1 - Introduction, premiers pas, conceptsFormation C# - Cours 1 - Introduction, premiers pas, concepts
Formation C# - Cours 1 - Introduction, premiers pas, concepts
 
Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++
 
Polymorphisme
PolymorphismePolymorphisme
Polymorphisme
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
 
Exercice 2 java Héritage
Exercice 2  java HéritageExercice 2  java Héritage
Exercice 2 java Héritage
 
Gestion des utilisateurs et groupes / Users & groups management
Gestion des utilisateurs et groupes / Users & groups managementGestion des utilisateurs et groupes / Users & groups management
Gestion des utilisateurs et groupes / Users & groups management
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en python
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfaces
 
Tp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-EclipseTp1 - Initiation à Java-Eclipse
Tp1 - Initiation à Java-Eclipse
 

Viewers also liked (8)

Surcharge_C++
Surcharge_C++Surcharge_C++
Surcharge_C++
 
Partie 10: Classes Génériques — Programmation orientée objet en C++
Partie 10: Classes Génériques — Programmation orientée objet en C++Partie 10: Classes Génériques — Programmation orientée objet en C++
Partie 10: Classes Génériques — Programmation orientée objet en C++
 
Partie 4: Fonctions - Programmation orientée objet en C++
Partie 4: Fonctions - Programmation orientée objet en C++Partie 4: Fonctions - Programmation orientée objet en C++
Partie 4: Fonctions - Programmation orientée objet en C++
 
Intro to C++ - language
Intro to C++ - languageIntro to C++ - language
Intro to C++ - language
 
Basic c++ programs
Basic c++ programsBasic c++ programs
Basic c++ programs
 
01 c++ Intro.ppt
01 c++ Intro.ppt01 c++ Intro.ppt
01 c++ Intro.ppt
 
Chapitre 2 poo classe objet c++
Chapitre 2 poo classe objet c++Chapitre 2 poo classe objet c++
Chapitre 2 poo classe objet c++
 
Basics of c++ Programming Language
Basics of c++ Programming LanguageBasics of c++ Programming Language
Basics of c++ Programming Language
 

Similar to Fonctions_Inline_Amies en C++

UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouri
Mansouri Khalifa
 
chapitre5-Classesabstraitesetinterfaces.pdf
chapitre5-Classesabstraitesetinterfaces.pdfchapitre5-Classesabstraitesetinterfaces.pdf
chapitre5-Classesabstraitesetinterfaces.pdf
Moez Moezm
 
Introspection reflection
Introspection reflectionIntrospection reflection
Introspection reflection
Eric Toguem
 
Java uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 javaJava uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 java
Amel Morchdi
 

Similar to Fonctions_Inline_Amies en C++ (20)

Ch06
Ch06Ch06
Ch06
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouri
 
Chapitre3 2013 POO
Chapitre3 2013 POOChapitre3 2013 POO
Chapitre3 2013 POO
 
chapitre5-Classesabstraitesetinterfaces.pdf
chapitre5-Classesabstraitesetinterfaces.pdfchapitre5-Classesabstraitesetinterfaces.pdf
chapitre5-Classesabstraitesetinterfaces.pdf
 
XB-Java.ppt
XB-Java.pptXB-Java.ppt
XB-Java.ppt
 
Héritage dans cpp dev informatique ingenierie
Héritage dans cpp dev informatique ingenierieHéritage dans cpp dev informatique ingenierie
Héritage dans cpp dev informatique ingenierie
 
Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objets
 
Modificateurs d'accès en java
Modificateurs d'accès en javaModificateurs d'accès en java
Modificateurs d'accès en java
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)
 
Ch03
Ch03Ch03
Ch03
 
Introspection reflection
Introspection reflectionIntrospection reflection
Introspection reflection
 
Introduction java
Introduction javaIntroduction java
Introduction java
 
POO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdfPOO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdf
 
Csharp2 : classes et objets
Csharp2 : classes et objetsCsharp2 : classes et objets
Csharp2 : classes et objets
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
 
Cours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweightCours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweight
 
JAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVAJAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVA
 
Java uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 javaJava uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 java
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Java
JavaJava
Java
 

Recently uploaded

Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
ikospam0
 

Recently uploaded (12)

python-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.pdfpython-Cours Officiel POO Python-m103.pdf
python-Cours Officiel POO Python-m103.pdf
 
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesNeuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLE
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
 
Cours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesCours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiques
 
Saint Damien, missionnaire auprès des lépreux de Molokai, Hawaï.pptx
Saint Damien, missionnaire auprès des lépreux de Molokai, Hawaï.pptxSaint Damien, missionnaire auprès des lépreux de Molokai, Hawaï.pptx
Saint Damien, missionnaire auprès des lépreux de Molokai, Hawaï.pptx
 
Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024Echos libraries Burkina Faso newsletter 2024
Echos libraries Burkina Faso newsletter 2024
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
 
Télécommunication et transport .pdfcours
Télécommunication et transport .pdfcoursTélécommunication et transport .pdfcours
Télécommunication et transport .pdfcours
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
 

Fonctions_Inline_Amies en C++