0% ont trouvé ce document utile (0 vote)
49 vues41 pages

Concepts C++ : Fonctions et Structures

Ce document traite des concepts fondamentaux de la programmation en C++, y compris les fonctions, la surcharge de fonctions, les structures, les classes et les objets. Il explique les méthodes de passage des paramètres, la portée et la durée de vie des variables, ainsi que les accesseurs et mutateurs dans le cadre de l'encapsulation. Le document fournit également des exemples et des détails sur la définition et l'utilisation des classes en C++.

Transféré par

PIE dev102
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
49 vues41 pages

Concepts C++ : Fonctions et Structures

Ce document traite des concepts fondamentaux de la programmation en C++, y compris les fonctions, la surcharge de fonctions, les structures, les classes et les objets. Il explique les méthodes de passage des paramètres, la portée et la durée de vie des variables, ainsi que les accesseurs et mutateurs dans le cadre de l'encapsulation. Le document fournit également des exemples et des détails sur la définition et l'utilisation des classes en C++.

Transféré par

PIE dev102
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Pr.

Zineb Dafir
[Link]@[Link]

25/11/2023 [Link]@[Link] 1
Plan
Les Fonctions en C++

Surcharge de fonctions

Les structures en C++

Classes et Objets

Constructeurs et destructeurs

Surcharge des opérateurs

25/11/2023 [Link]@[Link] 2
Les fonctions
 Pour éviter la répétition de certaines
instructions et afin de structurer proprement
un programme, on est amené à définir des
fonctions qui contiennent le code à répéter.

 Une fonction permet de renvoyer (ou non) un


résultat en fonction des données passées en
paramètres.

25/11/2023 [Link]@[Link] 3
Les fonctions
Prototype:

type_val_ret Nom_fonction (type - param1


p1 ,...){
// instructions de la fonction
return val_retour ;
}

25/11/2023 [Link]@[Link] 4
Les fonctions
Remarque 1:
 Une fonction peut ne rien retourner (pas de return),
dans ce cas on mettera comme type de retour void
(obligatoire en C++). Elle peut aussi n’avoir aucun
paramètre.
 Exemple:

25/11/2023 [Link]@[Link] 5
Les fonctions
Remarque 2:
 Avant d’appeler une fonction, il faut que le
compilateur sache qu’elle existe et qu’elle est définie,
donc il faut déclarer une fonction avant son appel si
elle est définie après la fonction main() ou dans un
autre fichier.
 Exemple:

25/11/2023 [Link]@[Link] 6
Les fonctions
En C++ il y a 3 méthodes de passage des variables en
paramètres à une fonction :
 Passage par valeur : la valeur de la variable en paramètre
est copiée dans une variable temporaire. Les modifications
opérées sur les arguments dans la fonction n’affectent pas
la valeur de la variable passée en paramètre.
 Passage par adresse : consiste à passer l’adresse d’une
variable en paramètre. Toute modification du paramètre
dans la fonction affecte directement la variable passée en
paramètre.
 Passage par référence : le passage par adresse présente
certains inconvénients, pour résoudre ces inconvénients, le
C++ introduit le passage par référence.
25/11/2023 [Link]@[Link] 7
Les fonctions
En C++ il y a 3 méthodes de passage des variables en
paramètres à une fonction :
 Passage par valeur : la valeur de la variable en paramètre
est copiée dans une variable temporaire. Les modifications
opérées sur les arguments dans la fonction n’affectent pas
la valeur de la variable passée en paramètre.
 Passage par adresse : consiste à passer l’adresse d’une
variable en paramètre. Toute modification du paramètre
dans la fonction affecte directement la variable passée en
paramètre.
 Passage par référence : le passage par adresse présente
certains inconvénients, pour résoudre ces inconvénients, le
C++ introduit le passage par référence.
25/11/2023 [Link]@[Link] 8
Les fonctions

 Passage par valeur :

25/11/2023 [Link]@[Link] 9
Les fonctions

 Passage par adresse :

25/11/2023 [Link]@[Link] 10
Les fonctions

 Passage par référence :

25/11/2023 [Link]@[Link] 11
Les fonctions
Paramètres par défaut:
 Le C++ offre la possibilité de donner des valeurs par
défaut aux paramètres d’une fonction.
 Une fonction peut définir des valeurs par défaut pour
tous ses paramètres ou seulement une partie.
 Les valeurs par défaut doivent être mentionnées soit
dans le prototype de la fonction soit dans sa
définition.
 Les paramètres ayant une valeur par défaut doivent
être placés en dernier dans la liste des arguments.
void fct ( int = 33 , int) ; // ERREUR !
void fct ( int , int=33) ; // OK!
25/11/2023 [Link]@[Link] 12
Les fonctions
Paramètres par défaut:

25/11/2023 [Link]@[Link] 13
Surcharge de fonctions
 La surcharge ou sur-définition (overloading) des fonctions
consiste à donner un même nom à plusieurs fonctions.
int max(int a, int b) ; // fonction 1
int max(int a, int b, int c) ; // fonction 2
int max(int *tab , int taille) ;// fonction 3.
 Pour différencier entre deux fonctions qui portent le même nom,
le compilateur regarde le type et le nombre des arguments
effectifs : la liste des types des arguments d’une fonction s’appelle
la signature de la fonction.
 La surcharge n’est acceptable que si toutes les fonctions ont des
signatures différentes, et n’a un sens que si les sur-définitions ont
un même but.
 Il est également possible de surcharger les opérateurs( voir les
classes).
25/11/2023 [Link]@[Link] 14
Surcharge de fonctions

25/11/2023 [Link]@[Link] 15
Valeur de retour de fonctions
En C++, une fonction admet 3 façons de
retourner une valeur :
 Retour par valeur :
Type_Ret nom_Fonction ( arguments );
 Retour par adresse :
Type_Ret * nom_Fonction ( arguments
);
 Retour par référence :
Type_Ret & nom_Fonction ( arguments
);

25/11/2023 [Link]@[Link] 16
Valeur de retour de fonctions
 Notez bien que d’une manière générale, une
fonction ne doit pas retourner un pointeur (ou
une référence) sur une variable locale, du fait
que la zone mémoire occupée par une variable
locale à une fonction est automatiquement
considérée comme libre à la fin de la fonction.
 Exemple :
int * fct_adr () { int n; ...; return &n;}
int & fct_ref () { int n; ...; return n;}
fournirons des résultats imprévisibles et
erronés.

25/11/2023 [Link]@[Link] 17
La portée et durée de vie d’une
variable
La portée d’une variable est l’espace du programme dans
lequel on peut utiliser cette variable.
 Les variables globales : ceux qui sont déclarés en dehors
de tout bloc et utilisables partout dans le programme.
 Les variables locales (automatiques) : ceux qui sont
déclarés au sein d’un bloc ou en paramètre à une fonction.
 Les variables statiques :
 Une variable statique est une variable qui conserve sa valeur entre les
appels successifs d'une fonction.

 Elle est déclarée avec le mot-clé static devant son type dans le contexte
d'une fonction ou avec le mot-clé static devant sa déclaration en dehors
de toute fonction pour les variables globales.

 La portée de la variable statique est locale à la fonction, mais sa durée de


vie s'étend au-delà de la sortie de la fonction.

25/11/2023 [Link]@[Link] 18
La portée et durée de vie d’une
variable
La portée d’une variable est l’espace du programme dans lequel
on peut utiliser cette variable.
 Les variables globales : ceux qui sont déclarés en dehors de
tout bloc et utilisables partout dans le programme.
 Les variables locales (automatiques) : ceux qui sont déclarés au
sein d’un bloc ou en paramètre à une fonction.
 Les variables statiques : ce sont les variables s avec le mot clé
static.
 Si associé à une variable globale, sa portée est limitée au fichier où
elle est définie.
 Si associé à une variable locale, sa durée de vie est permanente.

La durée de vie d’une variable dépend de son statut :


 Les variables globales : permanente, toute la durée de
l’exécution..
 Les variables locales (automatiques) : temporaire, durée de vie
de l’exécution de la fonction appelée.
25/11/2023 [Link]@[Link] 19
Les Structures en C++
 En C++, une structure (struct) est un
moyen de regrouper plusieurs éléments
de données sous un même nom.

Une structure peut contenir des


variables de différents types (y compris
d'autres structures) ainsi que des
fonctions.

25/11/2023 [Link]@[Link] 20
25/11/2023 [Link]@[Link] 21
Les Structures en C++ (Exemple)

25/11/2023 [Link]@[Link] 22
Les Classes et Objets en C++
Concepts de base:
 Un objet représente un concept, une idée
ou toute entité du monde réel.
 Un objet est une entité pouvant être créée,
stockée, manipulée et détruite.
 Un objet possède des attributs
(propriétés)
 Un objet offre un certain nombre de
méthodes (fonctions membres) pour le
manipuler.
 Tout objet appartient à une classe.
25/11/2023 [Link]@[Link] 23
Les Classes et Objets en C++
 Une classe consiste à regrouper les
objets ayant le même comportement
pour former un même ensemble, appelé
: classe.

25/11/2023 [Link]@[Link] 24
Les Classes et Objets en C++
 Une classe représente un type d’objet
 Dans une définition de classe on spécifie :
 Les attributs de tout objet appartenant à
cette classe.
 Les méthodes permettant de manipuler
un objet de cette classe.
 La visibilité de chaque attribut et
méthode (l’encapsulation des données).
 Le principe de l’encapsulation est
qu’on ne peut agir que sur les attributs
(propriétés) publiques d’un objet.
25/11/2023 [Link]@[Link] 25
Les Classes et Objets en C++
 En général, les attributs sont privés (par
défaut), c’est-à-dire qu’aucune fonction
externe à l’objet n’a droit d’y accéder.
 Certaines méthodes sont publiques et
peuvent donc être utilisées par des
fonctions externes pour manipuler un
objet ; on dit que ces méthodes constituent
l’interface de la classe.
 Les méthodes publiques peuvent parfois
utiliser des fonctions internes privées pour
accomplir leur tâche.
25/11/2023 [Link]@[Link] 26
Les Classes et Objets en C++
Relation Objet - Classe
 La relation qui lie objet et sa classe est la
même qu’entre une variable et son type :
 int compt ;\\ compt une variable de
type entier
 string nom ;\\ nom un objet de la classe
std du C++
 Etudiant X;\\ X un objet de la classe
Etudiant
 Un objet d’une classe s’appellera une
instance de cette classe.
25/11/2023 [Link]@[Link] 27
Définition d’une classe en C++

 La déclaration d’une classe consiste à décrire ses


membres (attributs et méthodes) groupés en
sections. Chaque section est étiquetée par l’un des
mots clés : private, public, ou protected, qui
précisent le mode d’accès aux membres contenus
dans la section.
 private : accès autorisé seulement par les méthodes
de la classe
 public : accès libre
 protected : accès autorisé seulement dans les
méthodes de la classe et de ses dérivées (voir
héritage).
 Pour déclarer une classe, on utilise le mot clé class.
25/11/2023 [Link]@[Link] 28
Définition d’une classe en C++

25/11/2023 [Link]@[Link] 29
Définition d’une classe en C++

25/11/2023 [Link]@[Link] 30
Définition d’une classe en C++

25/11/2023 [Link]@[Link] 31
Définition d’une classe en C++

 La définition d’une classe consiste à définir les


prototypes de ses méthodes.
 Les méthodes sont implémentées séparément de la
définition de classe en utilisant l’opérateur de portée
(: :).
 Syntaxe :
typeRetour NomClasse :: nomMethode (param1 , ...)
{
\\ instructions
}

25/11/2023 [Link]@[Link] 32
Définition d’une classe en C++

 Implémentation des méthodes:

25/11/2023 [Link]@[Link] 33
Définition d’une classe en C++

Remarque:
 Au sein de la définition d’une méthode, les autres
membres (privés ou publiques) sont directement
accessibles (il n’est pas nécessaire de préciser le
nom de la classe)
 Toutes les possibilités offertes par le C++ pour les
fonctions restent valables pour les méthodes
(surcharge, arguments par défaut,. . .).

25/11/2023 [Link]@[Link] 34
Définition d’une classe en C++

Utilisation d’une classe:


 Pour la classe Point par exemple :
Point A; // declaration d’un objet A
 On peut accéder à n’importe quel membre publique
d’une classe en utilisant l’opérateur . (point).
A. initialiser (5 ,7); /* appel de la methode
initialiser de la classe Point */
A. abs =9; // interdit : abs est private
cout <<[Link];// interdit
A. afficher (); // (5 ,7)
25/11/2023 [Link]@[Link] 35
Définition d’une classe en C++

Paramètres d’une méthode:


 Toute méthode a un paramètre implicite (caché), qui
représente l’objet sur lequel elle est appliquée.
 Les autres paramètres qui apparaissent dans l’en-tête
de la méthode sont les paramètres explicites. Tout cela
reste transparent pour l’utilisateur.
Exemple :
A. initialiser (5 ,7);
 Le compilateur crée en fait une fonction initialiser à 3
paramètres :
initialiser (A ,5 ,7);

25/11/2023 [Link]@[Link] 36
Définition d’une classe en C++

Les accesseurs et les mutateurs:


 Les accesseurs (getters) et les mutateurs (setters)
sont des méthodes dans une classe qui permettent
de lire et de modifier les valeurs de ses membres
privés respectivement.
 Ces méthodes jouent un rôle essentiel dans la
mise en œuvre de l'encapsulation, un principe clé
de la programmation orientée objet (POO).

25/11/2023 [Link]@[Link] 37
Définition d’une classe en C++

Les accesseurs:
 Les accesseurs sont des méthodes qui permettent
de lire la valeur d'un attribut privé d'une classe. Ils
fournissent une interface pour accéder à ces
valeurs sans permettre une modification directe.

25/11/2023 [Link]@[Link] 38
Définition d’une classe en C++

Les mutateurs:
 Les mutateurs sont des méthodes qui permettent
de modifier la valeur d'un attribut privé d'une
classe. Ils fournissent une interface pour effectuer
des modifications contrôlées sur ces valeurs.

25/11/2023 [Link]@[Link] 39
Définition d’une classe en C++

 L'objet courant d'une classe est représenté par le


pointeur this.
 this est un pointeur implicite qui pointe vers
l'instance de la classe actuellement en cours
d'utilisation. Il est automatiquement créé et géré par le
compilateur.
 L'utilisation principale de this est de permettre à une
instance de classe de se référer à elle-même à
l'intérieur de ses propres méthodes. Cela est
particulièrement utile lorsque le nom des paramètres
ou des variables locales à une méthode est le même
que celui des membres de la classe.

25/11/2023 [Link]@[Link] 40
[Link] Dafir

25/11/2023 [Link]@[Link] 41

Vous aimerez peut-être aussi