Compilation & Directives de préprocesseur Pointeurs, Références & Allocation Dynamique de Mémoire Spécificités du C++ (indépendantes de la POO) Structures & Classes Encapsulation des données Constructeur & Destructeur de classe Copie d'objets Amitié & Surcharge d'opérateur Héritage (Partie 1) Héritage (Partie 2) Patrons de fonctions et de classes Introduction à la librairie standard
Retour menu principal

Structure & Classes


Notion de classe

  • Langage objet : analyse du problème en termes de nature et de structure des données ≠ programmation impérative (en C ou fortran) qui relève plus de l’aglorithmie
  • Une classe est
    1. une généralisation de la notion de type (int, double,…)
    2. une association de données membres et d'opérations s'y rapportant (méthodes ou fonctions membres)

Déclaration de classe

  • Classe → généralisation de la notion de type (int, double,…)

    class particule
    {
      // Déclaration de données membres
      double m_masse;
      double m_charge;
      ...
    };
    

\ding{42} Ne pas oublier le point virgule à la fin de la déclaration

Déclaration de classe

  • Classe → généralisation de la notion de type (int, double,…)

    class particule
    {
      // Déclaration de données membres
      double m_masse;
      double m_charge;
      ...
    };
    ...
    // Instanciation d'objets de type particule
    particule my_electron, my_proton;
    

Accès aux membres de la classe en C++

  • Classe → association de données membres et de méthodes (fonctions membres)

    class particule
    {
      // Déclaration de données membres
      double m_masse;
      double m_charge;
    
      // Déclaration des méthodes
      void initialise(const double masse_, const double charge_);
      void affiche() const;
    };
    

Définition de méthodes de classes

  • Identique à la définition d’une fonction mais préfixée du nom de la classe et de l’opérateur de portée ::

    class particule
    {
      // Déclaration de données membres
      double m_masse;
      double m_charge;
    
      // Déclaration des méthodes
      void initialise(const double masse_, const double charge_);
      void affiche() const;
    };
    
    void particule::initialise(const double masse_, const double charge_)
    {
      m_masse  = masse_;
      m_charge = charge_;
    }
    ...
    

Exemple d’utilisation de la classe particule

#include "particule.h"
int main()
{
  // Instanciation d'objets de type particule
  particule my_electron, my_proton;

  // Accès aux données membres
  my_electron.initialise(0.511, -1.6e-19);
  my_proton.initialise(938.0, +1.6e-19);
}

Exemple d’utilisation de la classe particule

#include "particule.h"
int main()
{
  // Instanciation d'objets de type particule
  particule * ptr_electron = new particule;
  particule * ptr_proton = new particule;

  // Accès aux données membres
  ptr_electron->initialise(0.511, -1.6e-19);
  ptr_proton->initialise(938.0, +1.6e-19);

  ...
  delete ptr_electron;
  delete ptr_proton;
}

Annexes

Accès aux membres d’une structure

  • L’accès aux membres se fait par l’intermédiaire de l’opérateur point .

    struct particule
    {
      // Déclaration de données membres
      double m_masse;
      double m_charge;
      ...
    };
    
    // Instanciation d'objet de type particule
    particule my_electron, my_proton;
    
    // Accès aux données membres
    my_electron.m_masse  = 0.511;
    my_proton.m_charge = -1.6e-19;