Accueil > Ressources > Perl 5 > La programmation Orienté Objet (POO)

La programmation Orienté Objet (POO)

jeudi 14 janvier 2010, par AMRI

Au départ le programmation n’était qu’une suite d’instructions plus ou moins dépendantes du processeur utilisé, ensuite on est passé à l’assembleur, plus général et plus intuitif.
Puis on est passé à des langages plus évolués tel que COBOL, FORTRAN et C permettant de programmer des choses bien plus complexes, mais la maintenance du code rester difficile .
Enfin il y a les langages de programmation tel que C++, Java et même PERL qui permettent la programmation orienté objet.

La POO est un concept de programmation, une autre façon de programmer qui permet de mieux organiser le code source. On peut dire que la POO est la capacité à regrouper des paramètres dans un ensemble. Ces paramètres définissent l’ensemble que l’on assimile à un objet [1]

Pourquoi choisir la programmation orienté objet ??

Cette méthode est tout d’abord très rigoureuse, puisque l’on doit déclarer toutes les variables
cela donne une certaine rigueur à la programmation. Le code est mieux organisé, plus structuré, mieux hiérarchisé, ce qui rend sa modification et son évolution plus faciles. En effet le code est plus sûr, les programmes sont plus clairs, la maintenance des applications est facilitée.
La POO permet entre autres la réutilisation du code, plus précisément des fonctions créé ultérieurement (par exemple avec la commande « sub » en perl qui permet la création de fonction). Ce qui évite donc de réécrire plusieurs fois les mêmes fonctions au sein d’un même projet, elles sont également réutilisable pour d’autres projets (avec ou sans petites modifications). Il est facile de créer de nouveaux programmes légèrement différents par héritage d’un programme existant. La POO rend possible le développement de gros programmes.

Notion en POO :

En POO on parle de Classe, Objet, Attributs et Méthodes.
Une classe correspond à un module spécial, elle contient la définitions d’un type d’objet. Plus précisément,
- Un objet est une référence à une structure (plus ou moins complexe),
- Un attribut est un élément de cette structure,
- Une méthode est une fonction qui manipule cette structure.

Pour créer une classe, il faut procéder comme suit :

  1. Choisir le nom de la classe, ce sera le nom du fichier contenant sa définition, c’est à dire la bibliothèque (avec pour extension .pm dans le cas de perl).
  2. Définir les propriétés d’un objet de la classe.
  3. Définir un (ou plusieurs) moyen(s) de créer des objets.
  4. Définir des opérations assurées par les objets appartenant à la classe (c’est à dire ses méthodes). Ces méthodes représentent la seule interface que l’on ait avec l’objet (pour manipuler ses attributs notamment).

Les différentes stratégies de la POO :

Dans la POO on retrouve l’encapsulation. et l’héritage.

L’encapsulation est un mécanisme consistant à rassembler les données et les méthodes au sein d’une structure en cachant l’implémentation de l’objet, c’est-à-dire en empêchant l’accès aux données par un autre moyen que les services proposés. L’encapsulation permet donc de garantir l’intégrité des données contenues dans l’objet (de "cloisonner" les données et les fonctions à l’intérieur de l’objet)

On utilise l’héritage lorsqu’un objet est un autre objet (par exemple une personne peut être aussi un employé, donc il y aura des sous-classes. Employé sera une sous-classe de personne). Lorsqu’une classe hérite d’une autre, elle récupère toutes ses méthodes et attributs.
En Perl, la (ou les) classe(s) mères sont déclarées dans le tableau @ISA, c’est la liste des bibliothèques qui doit avoir été déclarée en début du code avec "use" (ISA est une variable globale – attention à ne pas la déclarer avec "my" mais avec "our").

En conclusion la programmation orientée objet a été crée afin de programmer plus rapidement puisque les codes sont réutilisables et avec plus de sécurité. Les langages actuels qui utilisent cette méthode sont pour les langages compilés (il existe un compilateur qui les traduisent en instructions processeur ) : C++ (universel), C# (Windows essentiellement), PASCAL Objet (le plus pédagogique) et bien d’autres. Pour les langages non compilés (ils nécessitent un interpréteur, ils sont supposés plus portables, plus simples, mais perdent en efficacité) : JAVA, PERL 5, PHP 4 et suivants ainsi que beaucoup beaucoup d’autres..

Pour aller plus loin dans la compréhension de ces concepts je recommande ce cours de David Morin de l’Université d’Angers (France).


[1c’est avant tout une structure de données. Autrement, il s’agit d’une entité chargée de gérer des données, de les classer, et de les stocker sous une certaine forme. En cela, rien ne distingue un objet d’une quelconque autre structure de données. La principale différence vient du fait que l’objet regroupe les données et les moyens de
traitement de ces données.