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
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19