Initiation à la programmation orientée objet

Lire POO et tvaira.free.fr

Notion d’objets

La programmation orientée objet consiste à définir des objets logiciels et à les faire interagir entre eux.

Concrètement, un objet est une structure de données (ses attributs c.-à-d. des variables) qui définit son état et une interface (ses méthodes c.-à-d. des fonctions) qui définit son comportement.

Un objet est créé à partir d’un modèle appelé classe. Chaque objet créé à partir de cette classe est une instance de la classe en question.

Notion de classe

Une classe déclare des propriétés communes à un ensemble d’objets.

Une classe représentera donc une catégorie d’objets.

Elle apparaît comme un type ou un moule à partir duquel il sera possible de créer des objets.

Notion de visibilité

Le C++ permet de préciser le type d’accès des membres (attributs et méthodes) d’un objet :

  • public : les membres publics peuvent être utilisés dans et par n’importe quelle partie du programme.
  • privé (private) : les membres privés d’une classe ne sont accessibles que par les objets de cette classe et non par ceux d’une autre classe.

Cette opération s’effectue au sein des classes1.

Notion d’encapsulation

L’encapsulation est l’idée de protéger les variables contenues dans un objet et de ne proposer que des méthodes pour les manipuler.

En respectant ce principe, toutes les variables (attributs) d’une classe seront donc privées (private).

L’objet est ainsi vu de l’extérieur comme une boîte noire possédant certaines propriétés et ayant un comportement spécifié.

Exemple détaillé : une classe Point

Nous allons successivement découvrir les notions suivantes :

  1. la modélisation et la déclaration d’une classe
  2. la construction d’objets d’une classe et la définition de ses fonctions membres
  3. les services rendus par une classe
  4. l’accès contrôlé aux membres d’une classe

Voir http://tvaira.free.fr

Modélisation d’une classe

On veut manipuler des points. Un point est défini par son abscisse (x) et son ordonnée (y). L’abscisse et l’ordonnée d’un point sont des réels (double).

On en sait suffisamment pour modéliser une classe Point :

Modélisation d’une classe Point

Modélisation d’une classe Point

Le code C++ ci-dessus correspond à la déclaration de la classe Point. Elle se placera donc dans un fichier en-tête (header) Point.h.

Construction d’objets

Pour créer des objets, il faudra … un constructeur :

  • Un constructeur est chargé d’initialiser un objet de la classe.
  • Il est appelé automatiquement au moment de la création de l’objet.
  • Un constructeur est une méthode qui porte toujours le même nom que la classe.

Il existe quelques contraintes :

  • Il peut avoir des paramètres, et des valeurs par défaut.
  • Il peut y avoir plusieurs constructeurs pour une même classe.
  • Il n’a jamais de type de retour.

On le déclare de la manière suivante :

class Point 
{
   private:
      double x, y; // nous sommes des attributs de la classe Point
      
   public:
      Point(double x, double y); // je suis le constructeur de la classe Point
};

Il faut maintenant définir ce constructeur afin qu’il initialise tous les attributs de l’objet au moment de sa création :

// Je suis le constructeur de la classe Point
Point::Point(double x, double y) 
{
   // je dois initialiser TOUS les attributs de la classe 
   this->x = x; // on affecte l'argument x à l'attribut x
   this->y = y; // on affecte l'argument y à l'attribut y
}

On pourra alors créer nos propres objets points :

Les objets p1 et p2 sont des instances de la classe Point

Les objets p1 et p2 sont des instances de la classe Point

Un objet possède sa propre existence et un état qui lui est spécifique (c.-à-d. les valeurs de ses attributs) :

Point x y
p1 1 2
p2 4 0

Définitions

POO
Programmation Orienté Objet

Retour au sommaire


  1. il existe aussi une visibilité dite protégée (protected)