| auteur : Woufeil | 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 définit 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 ce soucier de comment elle fonctionne, comme avec une télévision par exemple. C'est la notion d'abstraction.
|
| auteur : 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 un humain). Ainsi, si un sous programme attend comme argument un mammifère, on peut lui passer un humain sans qu'il n'y est de problèmes.
|
| auteur : 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 ce 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éfinie 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.
|
| auteur : 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.
|
| auteur : Woufeil | Depuis peu, Perl supporte la POO. Pour l'implémenter, les développeurs de Perl ont choisis 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).
|
| auteur : 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 hachages, des tableaux de tableaux...) et les associer à une chaîne de caractère, 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.
|
| auteur : 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'instances qui ne s'applique 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).
|
Consultez les autres F.A.Q's
|