La Programmation Orientée Objet (P.O.O.) a pour but de permettre une meilleure réutilisabilité du code. Les programmes développés en POO sont structurés : ils sont décomposés en modules gérant chacun une fonctionnalité du logiciel. Les modules développés peuvent être facilement réutilisés dans d'autres logiciels. Ils vont regrouper un ensemble de procédures (appelées méthodes) et encapsuler la structure de données sur laquelle les méthodes vont agir.
Pour programmer "en objet", il faut déclarer des classes, les membres et les méthodes associés.
Tout d'abord, voici un rappel des concepts de la POO.
Rappels des concepts de la POO
Classe Une
classe rassemble la description d'une structure de données (les membres) et les procédures (méthodes) qui manipulent les membres.
Une classe définit donc un type de données et son comportement.
Objet
Une classe permet de créer des objets. Chaque objet créé possède des membres décrits dans sa classe et peut être manipulé par l'intermédiaire des méthodes de sa classe. On dit qu'un objet est une instance de la classe.
Lorsque la classe est déclarée, il suffit d'associer un objet à une classe pour que l'objet puisse être manipulé par toutes les méthodes de cette classe.
Les membres
Un membre est une donnée (ou paramètre) de l'objet.
Les méthodes
Une méthode permet d'agir sur l'objet, pour modifier ses membres par exemple.
Une méthode est une procédure. Son fonctionnement est identique à celui des procédures classiques du WLangage.
Notion d'héritage
L'héritage permet d'inclure les caractéristiques d'une classe existante (classe de base) dans une nouvelle classe (classe dérivée). L'héritage permet de créer un nouveau type de données à partir d'un type connu, dans le but de lui ajouter des fonctionnalités, ou d'en modifier le comportement. La classe de base ne sera donc pas modifiée. Une classe peut hériter d'une classe dont elle devient une sous-classe.
Une classe dérivée permet à ses objets d'accéder à toutes les méthodes, à tous les membres et à toutes les propriétés de ses classes ancêtres ; tout se passe comme si les méthodes, les membres et les propriétés des classes ancêtres faisaient partie de la classe dérivée.
Constructeur et Destructeur
Les notions de Constructeur et Destructeur sont importantes puisqu'elles permettent un appel automatique de méthodes d'initialisation lors de la création (instanciation) d'un objet représentant cette classe et lors de la destruction de ce même objet (libération). Ces méthodes sont automatiquement créées lors de la création de la classe. Le code de ces méthodes est vide par défaut.
- La méthode Constructeur appartenant à la classe est automatiquement appelée lors de la déclaration (instanciation) de l'objet du type de cette même classe.
- La méthode Destructeur appartenant à la classe est automatiquement appelée lors de la destruction (libération) de l'objet du type de cette même classe. Cette exécution de la méthode Destructeur est dépendante de la durée de vie de l'objet selon comme l'objet a été déclaré (global ou local),
Encapsulation de données
L'encapsulation des données permet de garantir que les données membres de l'objet ne seront pas modifiées à tort par des fonctions (méthodes) extérieures à l'objet.
Il est ainsi possible d'interdire à l'utilisateur d'un objet l'accès à certains ou à tous ses membres. Les membres dont l'accès est interdit sont appelés membres privés.
Il n'est possible d'accéder à ces membres privés qu'à partir des méthodes prévues à cet effet dans la classe.