Lire POO et tvaira.free.fr
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.
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.
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.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.
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é.
Point
Nous allons successivement découvrir les notions suivantes :
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
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
.
Pour créer des objets, il faudra … un constructeur :
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
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 |
il existe aussi une visibilité dite protégée (protected
)↩