El Constructor: Requerimientos de Polimorfismo

Se desea que el contructor sea lo suficientemente polimorfo para admitir las siguientes formas de llamada:

lhp@nereida:~/Lperl/src$ perl -MNumber::Fraction -de 0
  DB<1> x Number::Fraction->new(2,4)
0  Number::Fraction=HASH(0x84666a0)
   'den' => 2
   'num' => 1
  DB<2> x Number::Fraction->new(2) # Un número. El denominador es 1
0  Number::Fraction=HASH(0x8527660)
   'den' => 1
   'num' => 2
  DB<3> x Number::Fraction->new(2,0) # Error. El denominador es cero.
Can't make a Number::Fraction with demominator 0 
  DB<4> $b = Number::Fraction->new # Sin número: es 0/1
  DB<5> x $b->new # LLamado por un objeto. Se copia el objeto
0  Number::Fraction=HASH(0x85281f4)
   'den' => 1
   'num' => 0
  DB<6> $b = Number::Fraction->new(2,5) # Dos números: numerador y denominador
  DB<7> x Number::Fraction->new($b) # Un argumento objeto: se copia
0  Number::Fraction=HASH(0x8528410)
   'den' => 5
   'num' => 2

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