[Madrid-pm] Construcción e inicialización de objetos
Victor Moral
victor en taquiones.net
Mar Abr 3 03:00:47 PDT 2007
El Martes, 3 de Abril de 2007 09:35, DervishD escribió:
> > Hombre, tanto como "por turnos", será cuestión más bien que despacha
> > hacia arriba la inicialización y luego, con lo que vuelva, añade la
> > suya. Que eso daría para hablar mucho sobre el mecanismo SUPER, que
> > tiene bastantes carencias y no nos queda otra que vivir con él.
>
> Por eso precisamente decía "por turnos": en el caso de herencia
> múltiple, no vale con usar SUPER, hay que ir padre por padre invocando
> el método correcto. Si usas SUPER::init, encontrará el método init de
> uno sólo de los padres.
Hasta cierto punto, porque si las clases de las que estás heredando
están "bien" implementadas su método "init" debería ser algo como:
sub init {
my $self = shift;
if ($self->SUPER::can('init')) {
$self->SUPER::init(@_);
}
# do our init
return $self;
}
> Otra razón por la que no me acaba de gustar la herencia múltiple,
> pero bueno. Y es cierto lo que dices de SUPER, pero de momento habrá que
> apañarse con eso.
Échale un vistazo si tienes ganas a Class::C3 y horrorizate con lo que llega
a hacer en la tabla de símbolos. Del depurador te puedes olvidar
inmediatamente y buscarte otro medio.
> > Interesante. ¿ No lo separas ni siquiera en la implementación ? Yo uso
> > algo como esto:
>
> Sí, en la implementación sí lo hago, pero no exporto el método
> "init". Y bueno, para ser sincero, no siempre uso un método "init" si la
> inicialización es muy simple y no espero derivar de la clase.
Ya, yo es que tiro mucho de plantillas para crear los fuentes y entran
siempre que estoy tratando con clases. Y, por cierto, ¿ qué quieres decir con
que no "exportas" un método ? ¿ Una confusión por aquello de que los métodos
no se exportan ? :-)
> Yo opino parecido, sólo que algunas veces ni siquiera separo en el
> lado de la implementación, según me parezca. Tampoco he programado
> muchos diseños orientados a objetos en Perl, el grueso lo he hecho en C.
Ah, es que yo ya he construído una aplicación OOP y estoy con otra ahora
mismo. Es interesante comparar los puntos de vista.
Saludos
--
--------
Víctor Moral <victor en taquiones.net>
http://www.taquiones.net/victor.html
Usuario Linux nº 139246
Clave pública 0x376B5EA7 en pgp.rediris.es
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre : no disponible
Tipo : application/pgp-signature
Tamaño : 189 bytes
Descripción: no disponible
Url : http://mail.pm.org/pipermail/madrid-pm/attachments/20070403/a4c4d3a9/attachment.bin
Más información sobre la lista de distribución Madrid-pm