- Une classe regroupe des objets qui ont des attributs et des méthodes en commun.
- L’objet est l’instance de la classe
- Elle déclare les propriétés communes, qui sont appelés:
- Données membres (ou attributs) qui décrivent l’état de l’objet
- Fonctions membres (ou méthodes) qui décrivent le comportement de l’objet
- Les classes sont comme les structures (struct) à la différence que par défaut les données sont privées au lieu de publiques pour les structures
La déclaration de la classe se fait dans le fichier .h
class Personne {
private :
string nom;
int age;
public:
void afficheNom() ; //une fonction
}; //le point virgule est important- Le corps des méthodes se fait dans le fichier .cpp.
- Pour que le lien se fasse, il faut inclure le fichier .h au début du cpp
- Quand on définit les méthodes en dehors de la classe, il faut les préfixer du nom de la classe
#include "Personne.h"
#include <iostream>
void Personne::afficheNom(){
cout << nom << endl;
}- Pour utiliser la classe Matrice, il suffit de connaître les déclarations des méthodes. C’est ce qu’on appelle l’interface d’une classe. (ce qui est public)
- Les données membres ainsi que la définition des fonctions correspondent à l’implémentation de la classe et ne concernent pas l’utilisateur.
- En C++, les rôles sont partagés entre le concepteur-développeur et l’utilisateur-client :
- ils se mettent d’accord sur l’interface de la classe qui devient figée
- le concepteur implémente l’interface (choix des données membres, définition des fonctions) et il est susceptible de la faire évoluer de manière transparente pour l’utilisateur
- l’utilisateur utilise la classe et ses méthodes de son côté. Il n’a besoin que du fichier d’entête.
- Une donnée membre statique est partagée par toutes les objets de la classe
- On peut y accéder sans avoir à passer par un objet de la classe
- Le mot clé utilisé est static
- Les données statiques doivent être initialisées à l’extérieur de la classe
class Personne {
static int nbPersonnes;
public:
Personne(); //constructeur
~Personne(); //destructeur
}Fichier .h
class Personne {
public:
static int nbPersonnes;
Personne(); //constructeur
~Personne(); //destructeur
};Fichier .cpp
int Personne::nbPersonnes = 0; //initialisation de nbPersonnes
Personne::Personne(){
nbPersonnes++;
}
Personne::~Personne(){
nbPersonnes--;
}Personne p1 = new Personne();
Personne p2 = new Personne();
std::cout << "il y a "<< Personne::nbPersonnes << " personnes" << std::endl;- Les méthodes statiques n’ont accès qu’aux données membres statiques de la classe
- Elles ne nécessitent pas un objet de la classe pour les utilise
class Personne {
public:
static int nbPersonnes;
Personne(); //constructeur
~Personne(); //destructeur
static int getNbPersonne(){
return nbPersonnes;
}
}
//dans le main:
cout << Personne::getNbPersonne(); //affiche le nb de personnes