Skip to content

Latest commit

 

History

History
110 lines (88 loc) · 3.29 KB

File metadata and controls

110 lines (88 loc) · 3.29 KB

Les Classes

  • 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;
}

Interface d'une classe

  • 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.

Données membres statiques

  • 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;

Méthodes statiques

  • 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

Exercice 6