[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