[Madrid-pm] Construcción e inicialización de objetos

Salvador Fandiño sfandino en yahoo.com
Mie Abr 4 01:46:02 PDT 2007


Conoces Moose?

  http://search.cpan.org/~stevan/Moose-0.18/lib/Moose.pm

Aunque a mi estas cosas me parece que a~naden tanta complejidad que en la mayoria de los casos no compensan. Claro, que si de todas formas vas a a acabar haciendo tu mismo tu propio framework para POO en Perl...

- Salva

----- Original Message ----
From: DervishD <bugs en dervishd.net>
To: Madrid PM <madrid-pm en pm.org>
Sent: Monday, April 2, 2007 4:08:20 PM
Subject: [Madrid-pm] Construcción e inicialización de objetos

    Hola a todos :)

    Quería saber vuestra opinión sobre un asunto de programación
orientada a objetos en Perl, relativo a la construcción e inicialización
de objetos.

    En otros lenguajes en los que implemento diseños orientados a
objeto, como C, el constructor también inicializa porque, o bien no
implemento herencia (lo habitual), o bien la implemento haciendo que los
objetos de las clases hijas contengan referéncias a los objetos de las
clases padres. No se me ocurren formas mejores, y separar construcción
de inicialización es un engorro mayúsculo.

    Pero pensemos en Perl: usando "inside-out objects", que en mi
opinión son una idea genial, separar la construcción (que sería un
simple "bless") de la inicialización permite implementar incluso
herencia múltiple, haciendo que el hijo haga el "bless" y luego llame
por turnos a todos los "init" de las clases padre.

    Sin embargo, Conway en su libro "Object Oriented Perl" dice que
separar por completo ambas cosas puede ser contraproducente. No recuerdo
las frases exactas pero menciona algo de "excesiva paranoia" o algo
así, refiriéndose a que es poco o nada necesario hacerlo.

    ¿Qué opináis vosotros?

    Yo en general opino que esta separación es útil sólo para
implementar herencia múltiple (al menos a mí no se me ocurren más
ventajas) y este tipo de herencia me parece muy mala idea, no da más que
quebraderos de cabeza y al menos en mi experiencia personal, siempre que
en un diseño ha salido herencia múltiple se ha podido cambiar por un
diseño más sencillo y más fácil de manejar usando sólo herencia simple y
relaciones de uso, no de gen-spec (muchas veces se usa herencia múltiple
cuando se quiere especializar una clase y usar los servicios de otra, y
eso yo lo considero un error). De ahí que aunque vea claros beneficios
en el hecho de separar construcción de inicialización no me parezca una
buena idea y personalmente no lo haga.

    Por supuesto no quiero empezar una flamewar sobre si la herencia
múltiple es buena o mala, para gustos los colores, y tampoco digo que en
el futuro no vaya a usar separación entre construcción e inicialización
(también dije en su momento que jamás programaría en Perl después de ver
bastante código de este que parece "executable line noise", y mirad
ahora). Simplemente quiero ver vuestras opiniones y argumentos al
respecto, porque me parece una forma estupenda de aprender :)) Además,
como muchas de las cosas que he aprendido con Perl han cambiado mi forma
de programar en C, quién sabe si esta no será otra más ;))

    Muchas gracias por adelantado y siento sacar temas tan raros pero
son los que ahora mismo se me ocurren O:)

    Raúl Núñez de Arenas Coronado

-- 
Linux Registered User 88736 | http://www.dervishd.net
It's my PC and I'll cry if I want to... RAmen!
_______________________________________________
Madrid-pm mailing list
Madrid-pm en pm.org
http://mail.pm.org/mailman/listinfo/madrid-pm





 
____________________________________________________________________________________
Sucker-punch spam with award-winning protection. 
Try the free Yahoo! Mail Beta.
http://advision.webevents.yahoo.com/mailbeta/features_spam.html


Más información sobre la lista de distribución Madrid-pm