OVH Cloud OVH Cloud

Questions sur la POO en Perl

2 réponses
Avatar
ctobini
Bonjour,

Je souhaite =E9crire un script Perl orient=E9 objet qui permette de
d'effectuer des recherches de valeurs sur plusieurs fichiers afin de
modifier certaines valeurs d'un de ces fichiers et =E9crire les
r=E9sultat de ce fichier modifier dans un autre fichier.

Je ne sais pas encore comment m'y prendre pour r=E9aliser une classe
permettant d'effectuer ceci.

J'ai dans l'id=E9e de g=E9rer chaque fichier individuellement, en
organisant les valeurs trouv=E9es dans des hash globaux :

package traitement;
my %hash1;
my %hash2;
sub new {
my $class =3D shift;
my $self =3D {}; # stockera le fichier qi sera '=E9crit' par la fonction
ecrire
}
sub trait_fichier1 {}
sub trait_fichier2 {}
sub ecrire {}

Ou alors stocker tous les hash et fichier final dans le constructeur
new, ce qui permettra =E0 mon objet de comporter toutes les donn=E9es.

package traitement;
sub new {
my $class =3D shift;
my $self =3D {};
$self->{'stock_fich1'} =3D {};
$self->{'stock_fich1'} =3D {};
$self->{'stock_final'} =3D []; # tout cela g=E9r=E9 par les diff=E9rentes
fonctions
}
sub trait_fichier1 {}
sub trait_fichier2 {}
sub ecrire {}

J'ai 'appris' Perl avec 'Introduction =E0 Perl' qui ne traite pas de la
POO. J'ai fait quelques tuto sur le net mais il y a des notions de je
ne comprends pas tr=E8s bien, comme par exemple la gestion de 'm=E9thodes
objet' et 'm=E9thode de classe', ainsi que le besoin de passer la
plupart des variables par r=E9f=E9rence (c'est vague, je sais :-) )
notamment sur les variables globales.

Pourriez-vous me dire ce que vous pensez du fait de passer ces hash en
global (et si ce n'est pas une mauvaise id=E9e la raison) ?

Auriez-vous des liens vers des cours ou tuto permettant d'expliquer la
POO en Perl sur diff=E9rents exemples ?

En vous remerciant.

C=2E Tobini

2 réponses

Avatar
Paul Gaborit
À (at) 15 Dec 2005 00:36:24 -0800,
"ctobini" écrivait (wrote):
[...]
J'ai 'appris' Perl avec 'Introduction à Perl' qui ne traite pas de la
POO. J'ai fait quelques tuto sur le net mais il y a des notions de je
ne comprends pas très bien, comme par exemple la gestion de 'méthodes
objet' et 'méthode de classe', ainsi que le besoin de passer la
plupart des variables par référence (c'est vague, je sais :-) )
notamment sur les variables globales.

Pourriez-vous me dire ce que vous pensez du fait de passer ces hash en
global (et si ce n'est pas une mauvaise idée la raison) ?


L'utilisation de variables globales est (presque) toujours une
mauvaise idée. Dans un script, cela peut passer à la rigueur. Dans un
module, il arrivera toujours un moment où cela posera problème.

Souvent, le besoin de variables globales dans une classe 'C' (donc des
données communes à toutes les instances de cette classe) peut être
résolu par la création d'une classe 'SetC' donc chaque instance est
liée à un ensemble d'objets de la classe 'C' (et donc un sous-ensemble
des toutes les instances de la classe C) ainsi que les données
globales de cet ensemble.

Exemple: je crée une classe "requête à un SGBD". Toutes ces requêtes
utilisent la même connexion au SGBD. J'en déduis que j'ai besoin d'une
donnée globale "connexion au SGBD". Jusqu'au jour où je veux utiliser
plusieurs SGBD simultanément et là je suis coincé. En créant une
classe "connexion au SGBD" et en attachant une instance de cette
classe à chaque objet "requête à un SGBD", je peux gérer plusieurs
SGBD. (C'est comme ça que fonctionne les classes DBI::db et DBI::st).

Évidemment, pour aller plus vite, on peut décider que ce n'est pas
utile. Mais on risque de le regretter plus tard...

Auriez-vous des liens vers des cours ou tuto permettant d'expliquer la
POO en Perl sur différents exemples ?


Il y a déjà la documentation de la distribution (les liens pointent
vers la version française) :

1- perlboot - Tutoriel pour l'orienté objet à destination des débutants
<http://perl.enstimac.fr/DocFr/perlboot.html>

2- perltoot - Tutoriel orienté objet de Tom.
<http://perl.enstimac.fr/DocFr/perltoot.html>

3- perltooc - Le tutoriel de Tom pour les données de classe OO en Perl
<http://perl.enstimac.fr/DocFr/perltooc.html>

4- perlbot - Collection de trucs et astuces pour Objets (the BOT)
<http://perl.enstimac.fr/DocFr/perlbot.html>

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
ctobini
Bonjour et merci beaucoup pour les références internet et les
explications, les tuto sont bien compréhensibles.

Bonne soirée et bon w-e.

C. Tobini