[Toulouse-pm] Un tutorial OO pas mal

Paul Gaborit Paul.Gaborit+pm at enstimac.fr
Fri Dec 13 07:33:00 CST 2002


At 11:45 +0100 13/12/02, Michel Rodriguez wrote:
>On Fri, 2002-12-13 at 10:07, Paul Gaborit wrote:
>
>>  Quant à la réponse d'Abigail, elle est intéressante mais ne convient
>>  pas dans tous les cas. En particulier, lorsqu'on veut faire un "dump"
>>  ou une "sérialisation" de l'objet. Il ne contient pas ses attributs !
>>  Cela me semble être un problème. Il faut donc ajouter une méthode de
>>  sérialisation qui doit être modifiée à chaque ajout d'attribut...
>
>La methode de serialization peut etre simple, il suffit de stocker la
>liste des hash qui contiennent les attributs et de la parcourir. Si on
>veut vraiment faire OO on peut remplacer les adresses des hash par les
>adresses des methodes qui donnent la valeur des attributs. On pourrait
>aussi faire encore plus sioux et generer les noms des methodes a partir
>des noms des champs (ca marche pas ici a cause de 'is_approved', mais si
>on avait toujours 'get<att>' par example un petit coup de ' eval
>"get_$field->($self)" ' devrait bieng marcher (mais pas vite)).

Ok. Ce que je voulais signaler, c'est qu'il faut refaire cette 
méthode à chaque fois qu'on veut faire de la sérialisation.

Par exemple, si on veut utiliser Storable, il faut implémenter les 
méthodes STORABLE_freeze et STORABLE_thaw ce qui n'est pas nécessaire 
avec les implémentations plus classiques.

Un appel à Dumper (de Data::Dumper) sur l'objet ne fournit pas les 
données. Il faut passer par le résultat d'une méthode (comme tu le 
proposes).

Or les gains de la méthode Abigail me semblent bien faibles par 
rapport à ces défauts...

Mais ce n'est que mon avis et je conviens que cette méthode est quand 
même intéressante.

-- 
Paul Gaborit -- <http://www.enstimac.fr/~gaborit/>
DR/GI -- <http://www.enstimac.fr/dr/gind/>
Perl en français -- <http://www.enstimac.fr/Perl/>



More information about the Toulouse-pm mailing list