Copia de Objetos

Es costumbre en Perl que, cuando se llama a un constructor como método de un objeto (esto es $objref->new() en vez de como método de una clase (Biblio::Doc->new()) el constructor utilice como valores de inicialización por defecto los que tiene ese objeto ($objref->new()). En resumen: el constructor permite realizar la creación de una copia de un objeto.

Obsérvese que, con respecto al punto planteado sobre la creación de duplicados de un objeto, no basta con copiar el ''hash'', ya que una asignación a un nuevo ''hash'' no copia la ''bendición''. Existe además el incoveniente de que si uno de los atributos del objeto es una referencia, deberíamos crear un duplicado de lo referenciado mas que copiar la referencia.

Para diferenciar entre una llamada al constructor a traves de un objeto ($objref->new()) y una llamada como método de una clase (Biblio::Doc->new()) se usa la función ref() (véase la subsección 4.2). Cuando se llama a través de una referencia a un objeto, la función ref() devuelve la cadena conteniendo la clase. Si se llama como método de una clase, ref() se aplica a una cadena y nos devuelve una cadena vacía. De este modo el constructor puede reconocer el formato de la llamada.



Subsecciones
Casiano Rodríguez León
2009-10-04