Ejercicio: SUPER

Recuerde que SUPER indica que la búsqueda del método debe realizarse desde el vector @ISA de la clase en la que el método está siendo llamado y no de la clase del objeto que se ha usado en la llamada. Dado el programa en la tabla 6.2 cuyo esquema aparece en la figura 6.4, explique como se producirán las llamadas y cual será la salida.


Tabla 6.2: Ejemplo de uso de SUPER
#!/usr/bin/perl -w
use strict;

package E;

sub new {
  my ($class, %args) = @_;
  my $self = 
    bless {}, ref($class) 
              || $class;
  return $self;
}

sub titi {
  print "E\n";
}

package D;
sub titi {
  print "D\n";
}
package B;
@B::ISA = qw(E);

sub titi {
  print "B\n";
}

package C;
@C::ISA = qw(D);

sub toto {
my $self = shift;
  print "C::toto\n";
  print "Clase del Objeto: ",
         ref $self,"\n";
  $self->SUPER::titi();
}

package A;
@A::ISA = qw(B C);


package main;

my $a = A->new();
   $a->toto();


Figura 6.4: Esquema del programa
\begin{figure}\centerline{\epsfig{file=super.eps, height=6cm}}\end{figure}

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