0% ont trouvé ce document utile (0 vote)
11 vues25 pages

Classes et Constructeurs en C++

Transféré par

faresattig09
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)
11 vues25 pages

Classes et Constructeurs en C++

Transféré par

faresattig09
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

Programmation Orientée

Objet en C++
(Part 2)

Soulaïmen SMAOUI
2021
● Description

● Syntaxe

Les Classes ● Exemples

● Implementation
Les classes

Regrouper dans une même entité

● Des données membres (appelées attributs)


● Des fonctions membres (appelées méthodes)
L'encapsulation

● Contrôler l’accès au donnée

● Utiliser certaines fonctions membres de la classe pour manipuler les données


protégées ( fonctions publiques)

● Sémantique précise
Accès au Données membres

public, private, protected


● public : Accessible depuis n'importe quelle fonction.
● private : Accessible depuis
a. les fonctions membres de la classe
b. depuis les fonctions et classes autorisées explicitement par la classe:
fonctions/classes amies de la classe (friend).
● protected, mêmes restrictions que private, mais aussi accessible par les
classes filles.
Les fonctions membres

● Les Accesseurs: fonctions membres qui ne modifient pas l'état de l'objet. Une fonction
membre const, ne modifie pas l'état de l'objet.
a. Si l'implémentation de la fonction const tente de modifier une variable membre de la
classe alors une erreur de compilation est générée.
b. Seules les fonctions membres const peuvent être invoquées depuis un objet déclaré
const.
● Les Modificateurs : ce sont des fonctions membres qui peuvent modifier l'état de l'objet.
fonction membre déclarée sans le const.
Syntaxe

class A

public:

int getValue() const;

void setValue(int value);

private:

int value;

};
Définition des fonctions membres

● Définition au sein de la classe même


○ Comme toute autre fonction.
○ Automatiquement considérée comme inline.
● Définition en dehors de la classe
○ Préfixer le nom de la fonction membre par le nom de la classe suivi de
l'opérateur de portée ” : : “
○ Automatiquement considérée comme non inline.
Constructeur

Au moment de la création d’un objet d’une classe donnée ( Instanciation ), une


routine spéciale est invitée, appelée Constructeur.

Le constructeur permet de :

● Faire les réservations de mémoire nécessaires


● Initialiser les données membres si c’est nécessaire.

Remarque: Le constructeur par défaut n’assure que la déclaration des données


membres (réservation de mémoire non dynamique).
Constructeur (suite 1)

● Le constructeur est une méthode membre qui a le même nom que la


classe.

● Le constructeur est une méthode qui ne possède pas un type de retour,


même pas le type void.

● Un constructeur par défaut est systématiquement créé si le développeur


ne déclare pas son propre constructeur.
Constructeur (suite 2)

● Une classe peut avoir plusieurs constructeurs.

● Les constructeurs sont différenciés par leurs listes de paramètres ( notion


de surcharge des fonctions).
Constructeur par défaut

● Si aucun constructeur n’est défini, le compilateur crée un constructeur par


défaut qui ne fait aucune initialisation.

● Dès la création d’un constructeur, le compilateur ne crée plus un


constructeur par défaut.
● Si c’est nécessaire il faut créer un constructeur sans paramètre qui
permettra d'instancier des objet sans aucun paramètre.
Constructeur de copie

● Ce constructeur à un seul argument dont le type est celui de la classe.

ClassName (const ClassName &CC)

● L'argument est passé par référence constante. (il peut l'être par valeur ou
par référence non constante).

● Si ce constructeur n'est pas explicitement présent, il est généré par le


compilateur.
Destructeur

● Le Destructeur est appelé au moment de la désallocation d’un objet ( fin de


sa vie)
● Un destructeur par défaut est créé implicitement par le compilateur.
● Il est indispensable de définir son propre destructeur lorsque il y a une
allocation dynamique de la mémoire pour les données membres.
Destructeur (Suite)

● Le destructeur n’a pas de type de retour (même pas void)

● Le destructeur n’a pas de paramètres. donc il ne peut pas être surchargé


(le destructeur est unique).
Méthodes par défaut d'une classe

● Un constructeur par défaut (sans argument)

● Un constructeur de copie par défaut


● Un destructeur par défaut
● Un opérateur d'affectation par défaut
Pointeur “ this “

Toutes les classes disposent d’un pointeur nommé this qui pointe vers l’objet
actuel (l’objet lui même).

this etant un pointeur sur un objet, *this est l’objet lui même.
Surcharge des opérateurs

type_retour operator @();

type_retour operator @(Arg);


Opérateur d’affectation par défaut

● Le compilateur génère automatiquement un opérateur d’affectation par


défaut.
● Cet opérateur se contente de copier les valeurs des attributs de l’objet
source vers l’objet destination.
● Pas efficace dans le cas ou il y a une déclaration dynamique de la mémoire
ou utilisation des pointeurs d’une façon générale.
Surcharge de l’opérateur d’affectation

● L'affectation d’objet de type spécial nécessite un opérateur d’affectation


personnalisé.
● La méthode operator= est appelée pour affecter un objet à un autre
objet.

Exemple:
Dot A,B; // Dot est une classe point

A=B; //appel de la méthode operator=


Surcharge de l’opérateur d’affectation (suite)

● operator= effectue le même travail que le constructeur de copie (à


quelque différences près).
● Le constructeur de copie est appelé lors de l’initialisation d’un objet ( au
moment de sa création) tandis que la méthode operator= est appelée si
on essaie d’affecter un objet à un autre de même type.
● Généralement si nous devons personnaliser le constructeur de copie, il soit
de même pour l'opérateur d’affectation operator=.
Surcharge de l’opérateur d’affectation: La
Déclaration

● (à l'intérieur de la classe) :

nomClasse operator=(const nomClasse &);


Surcharge de l’opérateur d’affectation: La
Définition

● (à l'intérieur, ou comme ici, à l'extérieur de la classe) :


nomClasse nomClasse::operator=(const nomClasse & operand)
{
… // corp de l’affectation personnalisée
return *this; // renvoi de l’objet lui même
}
Valeurs par défaut des Paramètres d’une
fonction

● Au moment de la déclaration nous pouvons associer des valeurs par


défaut des paramètres d’une fonction.
● Soit tous les paramètre, soit une sélection mais à condition:
○ Les paramètres ayant une valeur par défaut sont ordonnés de droite vers la gauche.

○ Nous commençons toujours par le dernier paramètre (extrême droite).

● Les valeurs par défaut ne sont pas donnés au moment de la définition de


la fonction.
Valeurs par défaut des Paramètres d’une
fonction (Suite)

● Au moment de l’appel de la fonction,


○ Le paramètre ayant une valeur par défaut sera facultatif.

○ Si vous donner une valeur d’un paramètre, la valeur par défaut sera ignorée.

Vous aimerez peut-être aussi