Vous êtes sur la page 1sur 9

Université des Frères Mentouri – Constantine - 1

Faculté des ST - Département d'Electronique

Dr. Amina HAMEUR LAINE


am.hameurlaine@gmail.com
amina.hameurlaine@umc.edu.dz

2020/2021

Cours Programmation Orientée Objet en C++ Dr. A.HAMEUR LAINE


Cours Programmation Orientée Objet en C++ Dr. A.HAMEUR LAINE
 Il est possible que tous les objets d’une même classe partagent une ou
plusieurs données qui seront identiques pour tous ces objets.
=> attributs statiques
 Ils ressemblent à des variables globales dont la portée est limitée à cette
classe.
 Ils appartiennent à la classe et non aux objets créés à partir de la classe.
 Leur déclaration est précédée du mot-clé static.
 Leur initiation se fait en dehors de la déclaration de la classe.
class NomClasse {
private:
static type attribut1; //déclaration
};

type NomClasse :: attribut1 = valeur; //initialisation

Cours Programmation Orientée Objet en C++ Dr. A.HAMEUR LAINE


Exemple: class Rectangle {
private:
double hauteur; double largeur;
static int nb_instances;
public:
Rectangle (double h=0, double L=0) : hauteur(h), largeur(L)
{++ nb_instances;
cout <<" Rectangle "<<nb_instances << endl;
cout<<"la hauteur est: "<<h<<endl;
cout<<"la largeur est: "<<L<<endl;
cout<<endl; }
double surface () const { return hauteur * largeur; }
~ Rectangle () {
--nb_instances;
cout <<"Il reste " <<nb_instances <<" rectangle \n"; }
};
int Rectangle::nb_instances=0 ;
Int main() {
Rectangle rect1(2, 4);
Rectangle rect2(6);
Rectangle rect3; Cours Programmation Orientée Objet en C++ Dr. A.HAMEUR LAINE
 Une méthode statique est partagée par toutes les instances d’une même
classe.
 Au lieu d’être appelée avec un objet de la classe, elle est appelée avec le
nom de la classe.
 Elle ne peut pas accéder aux données membres d’un objet et elle ne peut
pas appeler une méthode non statique.
 Les méthodes statiques sont généralement utilisées pour manipuler les
données statiques.
class NomClasse {
public:
static type methode () { return variable ;}
};

type NomClasse :: attribut1 = valeur;

Cours Programmation Orientée Objet en C++ Dr. A.HAMEUR LAINE


Exemple: class Rectangle {
private:
double hauteur; double largeur;
public:
static int nb_instances;
Rectangle (double h=0, double L=0) : hauteur(h), largeur(L)
{++ nb_instances;
cout <<"Rectangle "<<nb_instances << endl;
cout<<"la hauteur est: "<<h<<endl;
cout<<"la largeur est: "<<L<<endl;
cout<<endl; }
static int affiche () { return nb_instances; }
double surface () const { return hauteur * largeur; }
~ Rectangle () {
--nb_instances;
cout <<"Il reste " <<nb_instances <<" rectangle \n"; }
};
int Rectangle::nb_instances=0 ;
Int main() {
Rectangle rect1(2, 4);
Rectangle rect2(6);
Rectangle rect3;
cout<<" Nombre d’objets crees = "<<Rectangle :: affiche ()<< endl;
 Une fonction extérieure à une classe A (fonction globale ou fonction
membre d’une autre classe) peut être déclarée amie de classe A.
=> toutes les données et méthodes membres de cette classe
(privées/protegées/publics) deviennent accessibles pour cette
fonction.
 Une même fonction peut être amie de plusieurs classes.
 La déclaration d’une fonction comme amie à une classe A doit être faite à
l’intérieur de la classe A en utilisant le mot-clé friend.
 Seules les fonctions déclarées amies à l’intérieur d’une classe peuvent
accéder à cette classe: contrôle d’accès.
class ClasseA {
…..
puclic:
friend type nomFonction (arguments); //fonction amie globale
friend type ClasseB :: nomMethode (arguments); //fonction amie membre d’une classe B
};
Cours Programmation Orientée Objet en C++ Dr. A.HAMEUR LAINE
 Une classe A peut être déclarée amie d’une classe B
=>tous les membres de la classe B deviennent accessibles pour la
classeA.
class ClasseA {
…..
};
class ClasseB {
….
puclic:
friend class ClasseA; //ClasseA est amie de ClasseB
};

Note:
si la classe A est amie de la classe B, ca ne veut pas dire
que B est amie de la classe A.

Cours Programmation Orientée Objet en C++ Dr. A.HAMEUR LAINE


 « Apprendre le C++ », M. Hamemerchmidt.
 « Apprendre le C++ », C. Delonnoy.
 « Programmation en Langage C++ : Cours et Travaux Pratiques », B.
Boukhezzar.
 http://www.cplusplus.com/doc/tutorial/
 https://openclassrooms.com/courses/programmez-avec-le-langage-
c/qu-est-ce-que-le-c-2
 https://fr.coursera.org/learn/cpp-poo
 http://carl.seleborg.free.fr/cpp/cours/index_cours.html

Cours Programmation Orientée Objet en C++ Dr. A.HAMEURLAINE

Vous aimerez peut-être aussi