FAQ PerlConsultez toutes les FAQ

Nombre d'auteurs : 18, nombre de questions : 250, dernière mise à jour : 29 octobre 2015  Ajouter une question

 

Bienvenue sur la FAQ Perl. Cette FAQ a pour vocation de vous enseigner ou de vous faire revoir les notions élémentaires de ce fantastique langage. Perl est très utilisé dans différents domaines depuis la gestion système, le réseaux, l'administration de bases de données, le web (CGI), la bureautique, la conception d'interfaces graphiques ou des contextes scientifiques telle la bioinformatique. Nous espérons que cette FAQ vous sera d'une grande utilité.

Vous souhaitez participer à l'amélioration de cette FAQ, n'hésitez pas !! Commentez

Bonne lecture !


SommaireProgrammation orientée objets en PerlIntroduction (8)
précédent sommaire suivant
 

La POO est une philosophie (bien que l'on dise plutôt un paradigme) de programmation reposant sur deux notions essentielles : l'abstraction et la classification. Elle se base sur la création de classes. Une classe est un type de données permettant de décrire ce que l'on appelle un objet à l'aide de variables et de méthodes. Ainsi, si nous devions définir une classe "humain", elle comprendrait sûrement les variables nom, prénom, sexe, nationalité... Une méthode est une fonction (ou une procédure) permettant de décrire un comportement. Par exemple, notre classe humain devrait comprendre les méthodes marcher, parler, manger, dormir… Un objet est donc une instance d'une classe. Par exemple, Mr Dupond est un objet de la classe humain. En tant que tel, il est donc doté des variables sexe (qui vaudra masculin pour lui), nom (Dupond), prénom (disons Jacques) et de toutes les autres variables définies dans la classe Humain. Il dispose également des méthodes propres à la classe humain, Mr Dupond peut donc parler, marcher, manger, dormir…
Une fois conçue, une classe doit être considérée comme une boîte noire : on l'utilise sans se soucier de comment elle fonctionne, comme avec une télévision par exemple. C'est la notion d'abstraction.

Mis à jour le 8 février 2006 Woufeil

L'héritage permet de définir des relations "est un" (IS A) entre plusieurs classes. C'est la notion de classification. Ainsi, on peut dire que l'humain est un mammifère, qui est lui-même un animal. En tant que mammifère, l'homme hérite des propriétés des mammifères, comme le fait d'avoir quatre membres, des poils... Il hérite aussi des méthodes de cette classe. Ainsi un homme comme tout mammifère peut bouger. A cet héritage la classe humain ajoute des particularités, comme la méthode "parler", ou la variable "nationalité". On dit que la classe humain hérite de la classe mammifère. Mammifère est la classe parente et humain est la classe fille. Comme un humain est un mammifère, on peut utiliser le premier à la place du second (et pas l'inverse, un mammifère n'étant pas nécessairement un humain). Ainsi, si un sous-programme attend comme argument un mammifère, on peut lui passer un humain sans qu'il n'y ait de problème.

Mis à jour le 8 février 2006 Woufeil

Une classe fille peut redéfinir les méthodes d'une classe parente. Ainsi, la classe mammifère a une méthode se déplacer mais la classe cheval peut avoir envie de surcharger (redéfinir) cette méthode en précisant qu'un cheval peut marcher au pas, au trot et au galop. On dit que la méthode marcher de mammifère a été surchargée par celle de la classe cheval.

Mais que se passe-t-il si une fonction qui attend un mammifère comme argument reçoit un cheval et que cette fonction appelle la méthode se déplacer ? Dans ce cas la méthode appelée sera la méthode redéfinie dans la classe cheval. Mais si la fonction reçoit un humain et que cette dernière classe n'a pas redéfini la méthode se déplacer, la méthode appelée sera celle de la classe mammifère. Cette propriété de choisir quelle méthode appeler en fonction de l'argument passé à la fonction s'appelle le polymorphisme.

Mis à jour le 8 février 2006 Woufeil

Enfin, une dernière propriété chère à la POO est l'encapsulation. Elle permet de définir que les membres d'une classe (variables et méthodes) sont privés ou publics. Un membre public est accessible à partir de n'importe quel point du programme, un membre privé n'est utilisable qu'au sein de la classe elle-même. Il existe aussi la notion de membre protégé, ce dernier ne sera utilisable que dans la classe elle-même et dans ses classes filles.

Mis à jour le 8 février 2006 Woufeil

Depuis peu, Perl supporte la POO. Pour l'implémenter, les développeurs de Perl ont choisi de réutiliser un maximum de choses plutôt que d'en créer beaucoup de nouvelles. Ainsi, une classe est un paquetage (ou module), un objet est un référent et une méthode est une fonction (ou une procédure).

Mis à jour le 8 février 2006 Woufeil

Un objet est une référence (vers une table de hachage le plus souvent), ou plutôt son référent. La distinction entre une référence vers un objet et l'objet lui-même étant souvent brouillée par les programmeurs Perl, on dit souvent qu'un objet est une référence. J'utiliserais donc cette métonymie de temps en temps. Le référent d'une référence vers une table de hachage pouvant contenir des données complexes (des scalaires, des tableaux, des tables de hachage, des tableaux de tableaux…) et les associer à une chaîne de caractères, il est très approprié pour contenir un objet. Par exemple, si l'on déclare $dupond comme objet de la classe humain (ou plutôt comme référence vers cet objet), $dupond->{nom} représente son nom, $dupond->parler() représente la méthode parler appliquée à l'objet dupond.

Mis à jour le 8 février 2006 Woufeil

Une méthode est une fonction un peu particulière de par son premier argument (ou paramètre, c'est la même chose). Il existe deux types de méthodes :

  • les méthodes de classe qui s'appliquent à toute une classe (typiquement une méthode pour construire un objet de la classe). Une méthode de classe reçoit comme premier paramètre le nom du paquetage (c'est-à-dire le nom de la classe) utilisé ;
  • les méthodes d'instance qui ne s'appliquent qu'à un objet de la classe (comme la méthode parler()). Une méthode d'instance reçoit en premier paramètre la référence vers l'objet avec lequel elle a été appelée (dans notre cas une méthode d'instance s'appliquant à l'objet dupond recevrait donc $dupond comme premier argument).

Mis à jour le 8 février 2006 Woufeil

Les accesseurs et les mutateurs sont des méthodes permettant respectivement de lire et de fixer la valeur d'une variable d'instance, ceci dans le but de respecter au mieux l'encapsulation.
En effet, le principe de l'encapsulation est qu'un objet ne devrait être accessible que par ses méthodes ; or il peut être nécessaire d'accéder aux variables d'instance ; on utilise pour cela les accesseurs et les mutateurs.

L'intérêt des accesseurs n'est pas énorme, mais celui des mutateurs est bien plus grand : on peut vérifier grâce à eux si la valeur que l'on veut affecter à la variable est correcte (par exemple pour l'âge d'une personne, si le nombre n'est pas négatif) et le cas échéant lever une exception.

Mis à jour le 22 juillet 2007 Woufeil

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsable bénévole de la rubrique Perl : djibril -